Functional documentation for the Aiden WMS goods delivery / order document update mapper (inbound).
This document describes what happens after the mapper is installed: how a WMS document status update is written back to SAP Business One (B1) as a PATCH on the related B1 document. It is intended for end-users and functional consultants.
1. Overview
|
|
|
|---|---|
|
Source |
Aiden WMS order/document status message (Kafka) — single document or pick-list with |
|
Target |
SAP B1 document UDF update via Service Layer PATCH |
|
Purpose |
Synchronize WMS document status onto the linked B1 document ( |
This is a minimal status-sync integration. It does not create deliveries, issues, returns, or lines. It only patches a status UDF on an existing B1 document.
What gets updated
|
B1 field |
Meaning |
|---|---|
|
|
Latest WMS document status (e.g. |
Which B1 document is patched?
The Service Layer endpoint is built at runtime from WMS custom fields:
PATCH {cf_objectType}({cf_externalId})
Example: customFields.cf_objectType = ProductionOrders and cf_externalId = 13501 →
PATCH ProductionOrders(13501)
with body:
{ "U_AEN_WMS_STATUS": "Closed" }
2. What the mapper uses as input
2.1 Message shapes
The integration accepts two payload shapes:
|
Shape |
How it is handled |
|---|---|
|
Root object with |
Each element of |
|
Single document object (no |
Mapped and published once |
After split (if any), each unit is treated as one WMS document with at least:
-
status— WMS status string -
customFields.cf_objectType— B1 entity set / object collection name -
customFields.cf_externalId— B1 document key (typicallyDocEntry)
Other WMS fields (documentId, baseType, business partner, lines, etc.) may be present on the message but are not mapped into the B1 PATCH body.
2.2 Correlation / monitoring
|
Value |
Source |
Use |
|---|---|---|
|
Integration message id |
Kafka key |
XIAM correlation |
|
Mapped status |
Per document after MapForce |
Published with PATCH headers |
There is no separate B1 GET enrichment step in this project.
3. Business behavior
3.1 Split multi-document messages
If the Kafka payload contains $.documents:
-
The route logs that an array of documents was received.
-
Each document is processed independently through the mapper.
-
Each document produces its own Kafka outbound message with its own PATCH endpoint.
If documents is absent, the whole body is one document.
3.2 Status mapping
|
WMS field |
B1 field |
Rule |
|---|---|---|
|
|
|
Direct copy (no valuemap) |
Examples from project scenarios:
|
WMS |
B1 |
|---|---|
|
|
|
|
|
|
Any status string WMS sends is written as-is. Consultants should align allowed WMS statuses with what B1 users expect on the UDF.
3.3 Dynamic PATCH endpoint
Before publish, Camel sets:
|
Header |
Value |
|---|---|
|
HTTP method |
|
|
HTTP endpoint |
|
|
WMS custom field |
Role |
Example |
|---|---|---|
|
|
B1 Service Layer entity set name |
|
|
|
B1 document key in the URL |
|
Consultant impact:
cf_objectTypemust match a real B1 Service Layer collection (plural entity set name).
cf_externalIdmust be the correct B1 key (usuallyDocEntry) for that document.Wrong values patch the wrong document or fail the Service Layer call.
These fields are not produced by MapForce; they are read only in the Camel route for headers.
3.4 What is intentionally not done
-
No line, batch, serial, package, or expense mapping
-
No creation of new B1 documents (PATCH only)
-
No warehouse master or BOM logic
-
No status translation table in MapForce
4. Field mapping tables
Columns: B1 target field | WMS / source input | What happens | Notes
4.1 PATCH body (MapForce)
|
B1 target field |
WMS / source input |
What happens |
Notes |
|---|---|---|---|
|
|
|
Direct copy |
Only mapped body field |
4.2 PATCH routing (Camel — not in MapForce body)
|
Runtime setting |
WMS / source input |
What happens |
Notes |
|---|---|---|---|
|
HTTP method |
— |
Constant |
Always |
|
HTTP endpoint |
|
Format |
Required for correct B1 target |
|
Multi-doc fan-out |
Root |
Split then map each |
Optional message shape |
4.3 Not mapped (examples)
Although the output schema lists a full B1 document shape, the following are not written by this mapper (non-exhaustive):
|
Topic |
Behavior |
|---|---|
|
|
Unwired |
|
|
Unwired |
|
|
Unwired in this MFD |
|
WMS |
Not used in PATCH body |
5. Value translations (reference)
5.1 Status
|
WMS |
B1 |
|---|---|
|
(any string) |
Same string |
No closed/open prefix stripping and no valuemap in this project.
5.2 Endpoint pattern
|
Inputs |
Result |
|---|---|
|
|
|
|
|
|
5.3 Message handling
|
Payload |
Behavior |
|---|---|
|
Has |
One PATCH message per document element |
|
No |
One PATCH message for the root document |
6. What is not mapped / important omissions
|
Topic |
Behavior |
|---|---|
|
Full B1 document update |
Only status UDF is mapped |
|
Document create/close in B1 native status |
Does not set B1 |
|
Validation of object type / DocEntry |
No mapper-side check; failures surface at Service Layer |
|
Lines / inventory / serials |
Out of scope for this mapper |
7. End-to-end expectation (happy path)
-
WMS updates an order/document status (or closes documents on a pick list).
-
Integration receives Kafka message (single document or
documents[]). -
For each document:
-
Map
status→{ "U_AEN_WMS_STATUS": "<status>" } -
PATCH
cf_objectType(cf_externalId)on B1
-
-
B1 document shows the latest WMS status on UDF
U_AEN_WMS_STATUS.
8. Example (from project scenarios)
8.1 Multi-document style (scenario_files/1_mainRoute)
Input (excerpt):
|
Field |
Value |
|---|---|
|
Root |
|
|
|
|
|
|
|
|
|
|
Expected output body:
{ "U_AEN_WMS_STATUS": "Closed" }
Expected PATCH endpoint: ProductionOrders(13502)
8.2 Single document (scenario_files/2_single_message)
Input (excerpt):
|
Field |
Value |
|---|---|
|
|
|
|
|
|
|
|
|
Expected output body:
{ "U_AEN_WMS_STATUS": "Closed" }
Expected PATCH endpoint: ProductionOrders(13501)
8.3 MapForce sample (inputExample.json)
|
WMS |
B1 body |
|---|---|
|
|
|
(Endpoint still depends on cf_objectType / cf_externalId on the runtime message; the tiny MapForce example only demonstrates the status field.)
9. Implementation checklist for consultants
-
Ensure every WMS document carries
customFields.cf_objectType(correct B1 collection name). -
Ensure
customFields.cf_externalIdis the B1 DocEntry (or key) of the document to update. -
Align WMS
statusvalues with reporting/UDF expectations in B1. -
Remember this flow only updates
U_AEN_WMS_STATUS— it does not post goods movements. -
For pick-list messages, confirm each entry under
documents[]has its own custom fields and status. -
Do not expect line-level or inventory side effects from this mapper.
10. Source artifacts (for reference)
|
Artifact |
Role |
|---|---|
|
|
MapForce mapping ( |
|
|
WMS input contract / sample |
|
|
B1-shaped output schema (mostly unused fields) |
|
|
Split |
|
|
MapForce runner |
|
|
Multi-document sample |
|
|
Single-document sample |
Generated from the mapping definition and integration behavior in this project. If the MapForce mapping or routing changes, this document should be reviewed and updated.
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.