Aiden WMS

Goods delivery

TL;DR — Aiden WMS Goods Delivery Mapper (Inbound)
  • Purpose: Take a WMS goods/delivery message and create the right ERP/WMS document based on objectType and transfer target. Confirms outbound/inbound warehouse work back into SAP B1 or continues as a WMS warehouse document.

  • Routing (documents[0].customFields.objectType + flags):

    • Orders → Build B1 Delivery Note (DeliveryNotes POST).

    • ProductionOrders → If at least one line not im_Backflush → Build B1 Inventory Gen. Exit; if all backflush or missing → skip.

    • StockTransferRequests → If targetIsExternal=Y → Build B1 Stock Transfer; else → Build WMS IncomingDocument.

    • PurchaseOrders → Build purchase-document payload and publish to WMS with endpoint IncomingDocument.

    • Anything else → Logged and skipped.

  • Shared behavior:

    • Correlation/tracking: correlation.correlationId = Kafka key; transaction.id copied and stored (also written to B1 U_AEN_WMS_TRANSID where mapped).

    • Serial validation before mapping: each WMS serial must exist in B1 or match an empty slot; otherwise the whole message fails fast.

    • Sales order enrichment (Orders): GET B1 Orders by DocEntry for base-line matching, UoM, BOM, and package UoM factors.

    • Warehouse master (hourly): Used for bin allocations on external stock transfers (EnableBinLocations + DefaultBin).

    • Delivery Note line ordering: Lines sorted by VisualOrder before POST to B1.

  • Delivery Notes (objectType=Orders):

    • Build B1 DN with base links (BaseType: Orders→17, STR→1250000001).

    • Aggregate savedLines by base line; create batch and serial sublines where present.

    • Packages from savedLines.licenseId (track) + carrier; header/line expenses grouped and mapped; special lines carried (AfterLineNumber, LineText, LineType, OrderNumber).

    • Header: CardCode, DocDate, U_AEN_WMS_TRANSID; Lines: BaseEntry, BaseLine, BaseType, Quantity, Serial/Batch details.

  • Production Issue (objectType=ProductionOrders):

    • Build B1 Inventory Gen. Exit only for non-backflush lines; BaseType ProductionOrders→202.

    • Aggregate quantities; attach serial/batch where present.

  • Stock Transfer External (objectType=StockTransferRequests, targetIsExternal=Y):

    • Build B1 Stock Transfer; aggregate lines; include serials/batches when present.

    • Bin allocations if destination warehouse has bins enabled with a DefaultBin.

  • Internal Stock Transfer (target not external):

    • Build WMS IncomingDocument:

      • baseType=TransferRequest.

      • Business partner = From warehouse (id = source warehouseId; name = “From warehouse X”).

      • Lines to destination (toWarehouse); include batch/serial info blocks.

  • Purchase Document (objectType=PurchaseOrders):

    • Build purchase-document payload (not B1 GRPO) and publish to WMS (endpoint IncomingDocument).

    • Lines grouped by documentLine; serials exposed as dynamic properties (serialNumbers/serialNumber).

    • Expenses renamed to purchase fields; output customFields.objectType set to StockTransferRequests (as per mapping).

  • Failure/skip highlights:

    • Unknown objectType → skip.

    • ProductionOrders with only backflush → skip.

    • Missing serial in B1 and no empty slot → hard stop.

    • Internal STR → never posts B1 transfer; WMS Incoming instead.

  • Consultant checklist:

    • Ensure objectType is one of Orders, ProductionOrders, StockTransferRequests, PurchaseOrders; set targetIsExternal for STR routing.

    • Set customFields.externalId to the correct B1 base DocEntry (order/production/STR).

    • Maintain B1 serial masters or empty serial slots for serialized items.

    • For packages, provide licenseId and carrier on saved lines.

    • For bin-managed warehouses in external transfers, set EnableBinLocations and DefaultBin in B1.

    • Use transaction.id and correlation.correlationId for tracing.

Functional documentation for the Aiden WMS goods delivery mapper (inbound).

This document describes what happens after the mapper is installed: how a WMS goods movement message is routed, which SAP Business One (B1) or WMS documents are created, and which field rules apply. It is intended for end-users and functional consultants.


1. Overview



Source

Aiden WMS goods / delivery message (Kafka)

Targets

SAP B1 documents via Service Layer and/or WMS warehouse documents

Purpose

Confirm outbound/inbound warehouse work back into ERP (or continue as a WMS warehouse document)

One inbound message can become different document types depending on documents[0].customFields.objectType (and, for stock transfers, whether the target warehouse is external).

High-level outcomes

Result document

Typical origin in WMS

Destination system

B1 Delivery Note

Delivery against a sales order

SAP B1 (DeliveryNotes)

B1 Inventory Gen. Exit (issue)

Issue against a production order

SAP B1 (InventoryGenExits)

B1 Stock Transfer

Stock transfer request to an external warehouse

SAP B1 (StockTransfers)

WMS Incoming document

Stock transfer request not external

Aiden WMS (IncomingDocument)

WMS Purchase document (payload shape)

Goods against a purchase order

Aiden WMS warehouse Kafka with endpoint IncomingDocument


2. Message routing

Routing key: documents[0].customFields.objectType.

objectType

Extra condition

What runs

Published as

Orders

Load related B1 order(s) → Delivery Notes mapper

B1 DeliveryNotes POST

ProductionOrders

At least one line with productionOrderIssueType im_Backflush

Production Issue mapper

B1 InventoryGenExits POST

ProductionOrders

All lines backflush (or field missing / no matching lines)

Skipped (ignored status)

Nothing

StockTransferRequests

documents[0].customFields.targetIsExternal = Y

Stock Transfer mapper (+ warehouse master)

B1 StockTransfers POST

StockTransferRequests

Target not external / flag not Y

WMS Incoming Document mapper

WMS IncomingDocument

PurchaseOrders

Purchase Orders mapper (purchase-document payload)

WMS IncomingDocument on warehouse Kafka

Anything else

Logged: no match

Nothing

Configure objectType and (for transfers) targetIsExternal correctly on the WMS message. Wrong values send the document down the wrong path or skip it.


3. Shared behavior (all flows)

3.1 Correlation and tracking

Value

Source

Used for

Integration correlation / message id

Kafka message key

XIAM monitoring

External application id

transaction.id

XIAM / tracking

B1 UDF U_AEN_WMS_TRANSID (where mapped)

transaction.id

Trace WMS transaction on B1 document

3.2 Serial number check (before document mapping)

For every picked/saved unit that carries a serial, the integration:

  1. Builds an item + serial list from the WMS message (Get item and serial helper mapper).

  2. Looks up B1 SerialNumberDetails for that ItemCode + SerialNumber.

  3. If not found:

    • Looks for an empty serial slot on that item (SerialNumber and MfrSerialNo null).

    • PATCHes the WMS serial onto that slot (SerialNumber and MfrSerialNo).

  4. If no empty slot exists → processing stops with a known error: serial not available for the item.

Saved lines without a serial skip the B1 lookup. If one serial check fails, remaining serial checks for the message are not continued (hard stop for the whole message).

Consultant impact: serials must exist (or empty serial masters must be available) in B1 before confirmation. Missing serial masters cause a hard failure, not a partial document.

3.3 Sales order enrichment (Orders only)

Before the delivery-note mapping:

  • Collects customFields.externalId from each WMS document (B1 order DocEntry).

  • GETs B1 Orders (DocEntry, DocNum, DocumentLines).

  • Uses order lines for base-line matching, UoM / units-of-measurement enrichment on packages, etc.

3.4 Warehouse master

Loaded from B1 on a timer (every 3600 seconds from startup):

  • WarehouseCode, DefaultBin, EnableBinLocations, U_AEN_WHS_Picking

Main functional use in this project: stock transfer bin allocations when the line warehouse has bin locations enabled and a default bin. (U_AEN_WHS_Picking is loaded with the master; bin allocation is the confirmed consumer in this mapper.)

3.5 Delivery note output sorting

Delivery note JSON is normalized/sorted before it is sent to B1: DocumentLines ordered by VisualOrder.


4. Flow: Delivery notes (objectType = Orders)

4.1 Business behavior

Creates one or more SAP B1 Delivery Notes from a WMS delivery confirmation against sales order(s).

Important rules:

  • Base document: order identified by customFields.externalId → B1 BaseEntry.

  • Base type: from customFields.objectType via valuemap:

    • Orders17

    • StockTransferRequests1250000001

  • Lines are aggregated from WMS savedLines (picked quantities), joined back to order/document lines for item, UoM, sales BOM, etc.

  • Intermediate saved-line paths: batch (batchNumber filled), serial (serialNumber filled), or plain (both empty).

  • Batches: when savedLines.batchNumber is filled, B1 batch lines are created (batch no., expiry, qty from baseQuantity).

  • Serials: when savedLines.serialNumber is filled, B1 serial lines are created (InternalSerialNumber, qty from savedLines.quantity).

  • Packages / SSCC: savedLines.licenseId + carrier drive DocumentPackages / DocumentPackageItems (U_AEN_WMS_Track = license, Type = carrier).

  • Header & line additional expenses are copied/grouped into B1 expense structures with base doc references; line expenses set BaseGroup from GroupCode.

  • Special lines from WMS line custom fields are carried into B1 DocumentSpecialLines for the fields listed below.

  • Sales BOM attributes on WMS lines (parent, parentLine, singleQuantity, respectSingleQuantity) are available in the intermediate line enrichment used by the mapping.

4.2 Field mapping — Delivery Note header

Target field (B1 Delivery Note)

WMS / source input

What happens

Notes

CardCode

documents.businessPartner.businessPartnerId

Direct


DocDate

processDate

Direct


U_AEN_WMS_TRANSID

transaction.id

Direct

WMS transaction trace

DocumentLines[]

Aggregated from savedLines + line master

Group-by line / sum qty

See lines table

DocumentAdditionalExpenses[]

customFields.DocumentAdditionalExpenses

Group/copy + base refs

See expenses table

DocumentPackages[]

savedLines.licenseId / carrier

Group packages


DocumentSpecialLines[]

Line customFields.DocumentSpecialLines

Group/merge into DN

See special lines table

Comments is present on the B1 output schema but is not confirmed as filled from WMS in the current mapping.

4.3 Field mapping — Delivery Note lines

Target field

WMS / source input

What happens

Notes

DocumentLines.BaseEntry

customFields.externalId

Direct

B1 order DocEntry

DocumentLines.BaseLine

Intermediate documentLinelines.customFields.lineNum

Group-by via saved-line join


DocumentLines.BaseType

customFields.objectType

Valuemap → 17 / 1250000001

DN valuemap uses Orders (not SalesOrders)

DocumentLines.Quantity

savedLines.quantity (aggregated)

Sum per base line


DocumentLines.LineNum

Generated

Auto-number (start 0)

Scoped with external id

DocumentLines.VisualOrder

Same as generated LineNum

Copy of LineNum

Java sorts lines by this

BatchNumbers.BatchNumber

savedLines.batchNumber

When batch path


BatchNumbers.ExpiryDate

savedLines.expiryDate

When batch path


BatchNumbers.Quantity

savedLines.baseQuantity

When batch path

Not savedLines.quantity

SerialNumbers.InternalSerialNumber

savedLines.serialNumber

When serial path

After serial validation

SerialNumbers.Quantity

savedLines.quantity

When serial path


DocumentLineAdditionalExpenses[]

lines.customFields.DocumentAdditionalExpenses

Via intermediate; regroup on output

See expenses table

4.4 Field mapping — Header additional expenses

Target field

WMS / source input

What happens

Notes

DocumentAdditionalExpenses[]

customFields.DocumentAdditionalExpenses[]

Group-by ExpenseCode


.ExpenseCode

Same .ExpenseCode

Group key


.LineTotal

Same .LineTotal

Direct


.VatGroup

Same .VatGroup

Direct


.GroupCode

Same .GroupCode

Direct


.DistributionMethod

Same .DistributionMethod

Direct


.BaseDocEntry

customFields.externalId

Direct


.BaseDocLine

Expense BaseDocLine

Direct


.BaseDocType

customFields.objectType

Valuemap (Orders17, STR→1250000001)


4.5 Field mapping — Line additional expenses

Target field

WMS / source input

What happens

Notes

DocumentLineAdditionalExpenses[]

lines.customFields.DocumentAdditionalExpenses[]

Via intermediate line join

Final output regroups by ExpenseCode + first-items

.ExpenseCode

Same .ExpenseCode

Direct / group key


.LineTotal

Same .LineTotal

Direct


.VatGroup

Same .VatGroup

Direct


.GroupCode

Same .GroupCode

Direct


.DistributionMethod

Same .DistributionMethod

Direct


.BaseGroup

Expense GroupCode

First-items / GroupCode stream → BaseGroup

Added so B1 receives base group from WMS group code

Line number link

Expense / line LineNum

Mapped into line expense line number where wired


4.6 Field mapping — Special lines

Target field

WMS / source input

What happens

Notes

DocumentSpecialLines[]

lines.customFields.DocumentSpecialLines[]

Group-by line/order keys; first-items

Final DN fields only

.AfterLineNumber

Same WMS field

First-items


.LineText

Same WMS field

First-items


.LineType

Same WMS field

First-items


.OrderNumber

Same WMS field

First-items


Other freight/amount fields may exist on the WMS special-line payload and intermediate structures; only the fields above are confirmed on the final delivery-note output.

4.7 Field mapping — Packages

Target field

WMS / source input

What happens

Notes

Package number

Generated

Auto-number per license group

Starts from 1

Type

savedLines.carrier

Max/representative carrier

e.g. Box

U_AEN_WMS_Track

savedLines.licenseId

Group key

SSCC / license

Package item ItemCode

Line itemId (via saved line join)

Group-by item in package


Package item Quantity

savedLines.quantity

Sum


Package item UoMEntry

Line UoM / intermediate uomCode

Max-string from enrichment


UnitsOfMeasurement

B1 order line UnitsOfMeasurment / UoM rules

Lookup on order lines by item/UoM; default '1'

Needs order GET; B1 spelling UnitsOfMeasurment

4.8 Example (scenario 1_DeliveryNotesNoSerial)

Input (excerpt)

Output (excerpt)

objectType=Orders, externalId=962, BP WMST001, tx DN20251010008

DN CardCode=WMST001, U_AEN_WMS_TRANSID=DN20251010008

Saved lines with batch B2025100700001, serials S0001…, licenses 35/37, carrier Box

Lines with BaseType=17, BaseEntry=962, batches/serials, packages with track ids


5. Flow: Production issue (objectType = ProductionOrders)

5.1 Business behavior

Creates B1 Inventory Gen. Exit documents for production issues from WMS.

  • Runs only if not all lines are backflush (productionOrderIssueType != im_Backflush on at least one line).

  • Backflush lines are excluded from the issue document.

  • Saved lines without a usable batch path are filtered in intermediate logic (empty batch handling / not-equal filters).

  • Quantities aggregated per production order base line; batches and serials attached like other goods movements.

  • Base type valuemap includes ProductionOrders202.

5.2 Field mapping — Inventory Gen. Exit

Target field

WMS / source input

What happens

Notes

Header document set

documents

Structural


DocDate

processDate

Direct


U_AEN_WMS_TRANSID

transaction.id

Direct


DocumentLines.BaseEntry

customFields.externalId

Direct

Production order key

DocumentLines.BaseLine

lines.customFields.lineNum via saved-line join

Group-by


DocumentLines.BaseType

customFields.objectType

Valuemap (ProductionOrders202, SalesOrders17, STR→1250000001)


DocumentLines.Quantity

savedLines.quantity

Sum

Non-backflush only

SerialNumbers.InternalSerialNumber

savedLines.serialNumber

Serial path

After serial check

SerialNumbers.Quantity

savedLines.quantity

Serial path


BatchNumbers.BatchNumber

savedLines.batchNumber

Batch path


BatchNumbers.ExpiryDate

savedLines.expiryDate

Batch path


BatchNumbers.Quantity

savedLines.baseQuantity

Batch path


No CardCode, packages, expenses, or bin allocations in this flow.


6. Flow: Stock transfer external (objectType = StockTransferRequests and targetIsExternal = Y)

6.1 Business behavior

Creates a B1 Stock Transfer from a WMS stock transfer request when the target is marked external.

  • Lines built from savedLines, joined to document lines for lineNum / warehouse.

  • Serials included when present (empty serial filtered out of serial path).

  • Batches included when present (batch quantity from baseQuantity; no batch expiry on this MFD).

  • No DocDate on the stock-transfer output schema.

  • Bin allocations: if the line’s warehouseId matches a B1 warehouse with EnableBinLocations = tYES and a DefaultBin, bin allocation rows are written (BinAbsEntry = default bin, quantity from line/batch/serial path).

6.2 Field mapping — Stock Transfer

Target field

WMS / source input

What happens

Notes

Document root

documents

Structural

No DocDate

U_AEN_WMS_TRANSID

transaction.id

Direct


StockTransferLines.BaseEntry

customFields.externalId

Direct

STR doc entry

StockTransferLines.BaseLine

Line customFields.lineNum / grouping

Group-by


StockTransferLines.BaseType

customFields.objectType

Valuemap (StockTransferRequests1250000001, SalesOrders17)


StockTransferLines.Quantity

savedLines.quantity

Sum


SerialNumbers.InternalSerialNumber

savedLines.serialNumber

When non-empty


SerialNumbers.Quantity

savedLines.quantity

When serial path


BatchNumbers.BatchNumber

savedLines.batchNumber

When non-empty


BatchNumbers.Quantity

savedLines.baseQuantity

When batch path

No ExpiryDate on this MFD

StockTransferLinesBinAllocations.BinAbsEntry

Warehouse master DefaultBin

If EnableBinLocations = tYES and warehouse matches line


StockTransferLinesBinAllocations.Quantity

Line / path quantity

Sum/direct

Follows transfer line qty


7. Flow: WMS incoming document (internal stock transfer)

7.1 Business behavior

When objectType = StockTransferRequests and the target is not external, the mapper does not post a B1 stock transfer. It creates a WMS Incoming Document for the receiving warehouse process.

Observed constants / structure from the mapping:

  • data.baseType = TransferRequest

  • Business partner is derived from the source warehouse (not the WMS BP master): id = source lines.warehouseId; name = 'From warehouse ' + source warehouse id

  • details is a direct copy of WMS documents.details (no “From warehouse” prefix on details)

  • Lines aggregated from saved lines (item, qty, UoM); line warehouse = lines.customFields.toWarehouse

  • Batch/serial info blocks built from savedLines when batch or serial is non-empty (batch number, qty, expiry; serial numbers)

  • Correlation id from the integration Kafka message key / XIAM message id

  • Owner copied when present on the WMS document

7.2 Field mapping — Incoming document (summary)

Target field

WMS / source input

What happens

Notes

correlation.correlationId

Kafka message key / XIAM message id

MapForce parameter

Not Camel exchange id

data.documentId

documents.documentId

Direct


data.baseType

Constant TransferRequest


data.owner / owner id & name

documents.owner.*

Direct when present


receiveDate

receiveDate

Direct


details

documents.details

Direct copy

Not prefixed

businessPartner.businessPartnerId

Source lines.warehouseId

Max-string via line join

Source WH used as “BP id”

businessPartner.name

'From warehouse ' + source lines.warehouseId

Concat


lines.documentLine / lineNum

Saved lines + lines.customFields.lineNum

Group-by


lines.itemId

lines.itemId

Via line join


lines.quantity

savedLines.quantity

Sum


lines.warehouseId

lines.customFields.toWarehouse

Join + max-string

To warehouse

lines.uomCode

lines.uomCode

Via line join


customFields.externalId

customFields.externalId

Direct


customFields.objectType

customFields.objectType

Direct / passthrough


batchSerialInfo / batches / serials

savedLines batch & serial fields

Structured sub-documents when batch or serial present

Batch qty from savedLines.quantity

Published to to.kafka.warehouse with endpoint IncomingDocument.


8. Flow: Purchase document (objectType = PurchaseOrders)

8.1 Business behavior

Maps the WMS confirmation into a purchase-document payload shape (not a B1 Delivery/GRPO in this route).

  • Header/BP/dates/details largely copied from the WMS documents block.

  • Lines grouped by saved line document line; quantity summed.

  • Item, warehouse, UoM, details joined from order lines by documentLine.

  • Serials exposed as dynamic properties:

    • Collection name: serialNumbers

    • Element name: serialNumber

  • No batches in this MFD.

  • Header/line additional expenses renamed into purchase-doc expense field names (expenseCode, expenseLine, expenseLineTotal, expenseGroupCode, expenseDistributioMethod [spelling as in MFD], expenseVatGroup, …).

  • customFields.objectType on output is set to constant StockTransferRequests in the MapForce mapping (verify against your WMS purchase-doc expectations if this looks unexpected functionally).

  • Publish target: warehouse Kafka topic with HTTP endpoint header IncomingDocument (same endpoint name as internal stock-transfer incoming; payload remains the purchase mapper output).

8.2 Field mapping — Purchase document

Target field

WMS / source input

What happens

Notes

correlation.correlationId

Camel exchangeId

MapForce parameter exchangeProperty

Not the Kafka/XIAM message key used by incoming document

data.documentId

documents.documentId

Direct


data.owner

documents.owner

Direct


data.businessPartner.*

documents.businessPartner.*

Direct


receiveDate

receiveDate

Direct


details

details

Direct


lines.documentLine / customFields.lineNum

Group key from savedLines.documentLine

Group-by


lines.itemId

lines.itemId

Join on documentLine


lines.warehouseId

lines.warehouseId

Join on documentLine


lines.quantity

savedLines.quantity

Sum


lines.uomCode

lines.uomCode

Join


lines.details

lines.details

Join


Serial properties

savedLines.serialNumber

Nested serialNumbers / serialNumber

When serial non-empty

customFields.externalId

customFields.externalId

Direct


customFields.objectType

Constant StockTransferRequests

As in MFD

Expense custom fields

WMS DocumentAdditionalExpenses (header + line)

Renamed to expense* fields

Header + line

Published to to.kafka.warehouse with endpoint IncomingDocument.


9. Supporting mapper: Get item and serial

Not a business document. Builds the working list used for B1 serial validation (one output row per savedLines entry):

Output field

Source

Notes

documentId

WMS documents / saved-lines context


documentLine

savedLines.documentLine


ItemCode

Matched lines.itemId

Join on documentId and documentLine

SerialNumber

savedLines.serialNumber


MfrSerialNo

savedLines.serialNumber

Same value as SerialNumber; used when patching empty slots


10. Value translations (reference)

10.1 Object type → B1 base type

Valuemaps differ slightly per mapper (input key is documents[].customFields.objectType):

WMS / message objectType

B1 BaseType

Delivery notes

Production issue

Stock transfer

Orders

17

Yes

SalesOrders

17

Yes

Yes

StockTransferRequests

1250000001

Yes

Yes

Yes

ProductionOrders

202

Yes

10.2 Production issue type

lines.customFields.productionOrderIssueType

Effect

im_Backflush

Line excluded; if all lines backflush → whole message ignored

Other / not backflush

Eligible for Inventory Gen. Exit

10.3 Stock transfer external flag

documents[0].customFields.targetIsExternal

Effect

Y

B1 Stock Transfer

Not Y / missing

WMS Incoming Document

10.4 Warehouse bins (stock transfer)

B1 warehouse fields

Effect on stock transfer

EnableBinLocations = tYES and DefaultBin set, warehouse matches line

Bin allocation rows with BinAbsEntry = DefaultBin

Otherwise

No bin allocation from this rule


11. What is not done / failure & skip cases

Situation

Result

Unknown objectType

No document; log only

Production order, only backflush lines

Ignored (no Inventory Gen. Exit)

Serial required but not available in B1 and no empty slot

Hard stop + known error

Internal stock transfer

No B1 stock transfer; WMS incoming instead

Purchase order path

Purchase-document payload on warehouse Kafka with endpoint IncomingDocument; not B1 GRPO/DN in this route

Prices / full financials

Not the focus of these confirmation mappings

Changing B1 order master beyond serial PATCH

Orders are read for enrichment; serials may be patched


12. End-to-end happy path (sales order delivery)

  1. WMS completes picking/packing for a sales order and publishes a goods message (objectType = Orders).

  2. Integration validates/registers serials in B1 as needed.

  3. Integration loads the B1 order line structure.

  4. Delivery Notes mapper builds B1 DN JSON (lines, batches, serials, packages, expenses).

  5. JSON is sorted by VisualOrder and posted to B1 as DeliveryNotes.

  6. U_AEN_WMS_TRANSID and correlation ids support support/troubleshooting.


13. Implementation checklist for consultants

  1. objectType on WMS documents must match one of: Orders, ProductionOrders, StockTransferRequests, PurchaseOrders.

  2. For stock transfers, set targetIsExternal correctly (Y = post B1 transfer; otherwise WMS incoming).

  3. customFields.externalId must be the B1 base document key (order / production order / STR DocEntry as applicable).

  4. Maintain serial number masters (or empty serial slots) in B1 for serialized items.

  5. For deliveries with packages, ensure licenseId and carrier are filled on saved lines if SSCC/packages are required in B1.

  6. For production issues, set productionOrderIssueType so backflush lines are not double-issued.

  7. For bin-managed warehouses used in external transfers, set DefaultBin and EnableBinLocations in B1.

  8. Use transaction.id / U_AEN_WMS_TRANSID for tracing.


14. Source artifacts

Artifact

Role

mappings/Delivery Notes/delivery-notes-mapper.mfd

WMS → B1 Delivery Notes

mappings/GetItemAndSerial/get-item-and-serial.mfd

Item/serial extraction

mappings/ProductionIssue/production-issue-mapper.mfd

WMS → B1 Inventory Gen. Exit

mappings/StockTransfers/stock-transfer-mapper.mfd

WMS → B1 Stock Transfers

mappings/WmsIncomingDocument/wms-incomingDocument-mapper.mfd

WMS STR → WMS Incoming Document

mappings/PurchaseOrders/purchase-orders-mapper.mfd

WMS → purchase-document payload (published as IncomingDocument)

src/.../route/MainRoutes.java

Routing by objectType

src/.../route/SAPB1Routes.java

Serial + order Service Layer calls

src/.../route/ConfigurationRoute.java

Warehouse master load

scenario_files/

Sample messages (delivery note scenarios)


Generated from the mapping definitions and integration routes in this project. If MapForce mappings or routing change, update this document.


Maintaining this document

For the original documentation intent, when to update, source-of-truth checklist, and a ready-made refresh prompt, see README.md and the repository AGENTS.md.