27 KiB
title, type, sources, related, last_compiled
| title | type | sources | related | last_compiled | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ERP Interface | concept |
|
|
2026-04-17 |
ERP Interface
Overview
The ERP Interface is the integration layer between Easy WMS and the customer's ERP system (SAP, Oracle, Microsoft Dynamics, or any custom ERP). Communication is asynchronous, message-based, using a structured 3-letter code naming convention. Messages flow in both directions:
- ERP → WMS: Master data synchronization, order creation, requests
- WMS → ERP: Status notifications, order finalizations, stock events
All messages have a version suffix when multiple variants exist (e.g., ROR01, SOR01, SOR02). The Operation field in each message specifies the action: C (Create), U (Update), S (Upsert), D (Delete).
Complete Message Catalog
Master Data Messages (ERP → WMS)
| Code | Name | Direction | Description |
|---|---|---|---|
| ITM | Item | ERP → WMS | Create/update/delete items (SKU master) |
| ITC | Item Classification | ERP → WMS | Min/max stock levels per sub-warehouse |
| OWN | Owner | ERP → WMS | Create/update owners (3PL tenants) |
| CAR | Carrier | ERP → WMS | Create/update carriers |
| ACC | Account | ERP → WMS | Create/update customer accounts |
| SUP | Supplier | ERP → WMS | Create/update suppliers |
| KIT | Kit | ERP → WMS | Create/update kit definitions |
| LCK | Lock Type | ERP → WMS | Lock type master data |
ITM — Image fields
The ITM01 message can optionally convey the article's picture. Two modes:
| Mode | Field | Behaviour |
|---|---|---|
| Local file | <ItmPicture>nom-fichier.jpg</ItmPicture> |
File resolved against the folder pointed to by UserImagesURI in the WMS appsettings.json. Typical value : C:/MLX/Data/Pictures/. |
| URL | <ItmPictureUrl>https://…/photo.jpg</ItmPictureUrl> |
Fetched by the WMS when the client uses the display; ItmPicture takes precedence if both are present. |
Requires read access on the
UserImagesURIshare from the WMS service account. The image is not uploaded via the ITM file — only the filename / URL is stamped on the item record.
Inbound / Receipt Messages
ROR — Receipt Order (ERP → WMS)
The primary message for creating inbound orders.
Versions:
ROR01(default): Supplier receipt orders, return orders, transfer orders
Key fields:
| Field | Description |
|---|---|
| Operation | C/S/U/D |
| Site | Warehouse code |
| RorCode | Receipt order code (unique) |
| RorType | Supplier / Return / Transfer |
| SupplierCode | Supplier (Supplier type only) |
| Document | Delivery note number (optional) |
| Lines[].LneNumber | Line number |
| Lines[].LneItemCode | Item to receive |
| Lines[].LneQtyExpected | Expected quantity |
| Lines[].LneQtyFree | Free-of-charge quantity |
| Lines[].LneQtyUoMCode | Unit of measure |
| Lines[].transactional | If true: fail entire order if one line fails |
Notes:
- Order code must be unique for new orders
- Lines support optional
transactionalgroup to control failure behavior - Can create/modify/cancel lines individually after creation
- Triggers ROC status change notifications
ASN — Advanced Shipping Notice (ERP → WMS)
Pre-notifies WMS of containers en route to the warehouse.
Versions:
ASN01: Basic container pre-notificationASN02–ASN08: Extended variants for cutting stock, quality status, loose stock, etc.
Key fields:
| Field | Description |
|---|---|
| Operation | C/D |
| Site | Warehouse code |
| ContainerCode | Container LPN |
| ContainerTypeCode | Container type |
| ReceiptOrderCode | Associated receipt order (optional) |
| Lines[].ItemCode | Item in container |
| Lines[].Quantity | Quantity |
| Lines[].UoMCode | Unit of measure |
| Lines[].LogisticAttributes | Lot, expiry, serial, etc. |
Notes:
- Creates pending stock at ASN virtual location
- If container is received: triggers ASO response
- If container is rejected or deleted: triggers ASK response
SRN — Stock Replenish Notice (ERP → WMS)
Pre-notifies WMS of loose stock for automatic warehouse replenishment.
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| Operation | Operation code |
| ItemCode | Item to replenish |
| OwnerCode | Owner |
| Quantity | Quantity |
| UoMCode | Unit of measure |
| Status | Stock status group |
| Attributes | Logistic attributes |
| RepQuePickingStationCode | Target picking conveyor (optional, triggers auto replenishment order) |
| RepQuePriority | Priority (Urgent/High/Normal/Low/VeryLow) |
| RepQueReplenishMode | Replenishment mode |
| RepQueEfficiencyMode | Efficiency mode |
ROC — Receipt Order Status Change (WMS → ERP)
Notifies ERP of receipt order status transitions.
Statuses reported: Waiting, Pending, Receiving, PartiallyReceived, Received, Closed, Canceled
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| RorCode | Receipt order code |
| Status | New status |
Triggered by: INO.CST transaction
ROF — Receipt Order Finalization (WMS → ERP)
Notifies ERP that a receipt order has been closed or canceled, with received quantities.
Versions:
ROF01: Standard finalizationROF02: Extended with detailed line-level quantities — the version generated when closing an inbound order sourced from aTransfershipping order (two-warehouse flow). For standard supplier receipts, ROF01 is emitted.
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| RorCode | Receipt order code |
| Status | Closed / Canceled |
| Lines[].LneNumber | Line number |
| Lines[].LneItemCode | Item |
| Lines[].LneQtyExpected | Expected quantity |
| Lines[].LneQtyReceived | Received quantity |
| Lines[].LneQtyUoMCode | Unit of measure |
Triggered by: INO.CLS / INO.CNL transactions
REF — Receipt Finalization (WMS → ERP)
Notifies ERP that a receipt (physical receiving event) has been closed.
Notes:
- Sent only when a receipt with actual received stock is closed
- Sent for blind receipts (no associated receipt order)
- Includes detailed line-level stock received data
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| ReceiptCode | Receipt code |
| Status | Closed |
| RecDatContainers | Number of containers received |
| RecDatDate | Arrival/closure date |
| Lines[].LneItemCode | Item received |
| Lines[].LneQtyReceived | Received quantity |
| Lines[].LneStockItemCode | Actual received item (may differ from ordered) |
| Lines[].LneStockQty | Stock quantity |
| Lines[].LneStockWeight | Weight |
| Lines[].LneStockRecDate | Receipt timestamp |
Triggered by: REC.CLS transaction
ASO — Advanced Shipping Notice OK (WMS → ERP)
Confirms that a pre-notified container has been successfully received.
Triggered by: CON.ASN.001 transaction (ASN container received) or CON.PIE (container entered via PIE)
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| ContainerCode | Received container |
| ReceiptOrderCode | Associated receipt order |
| ReceiptCode | Receipt document |
| ReceivedDate | Reception timestamp |
DirectTransfer trigger — when the expedition of a
<DirectTransfer>shipping order is closed at the origin warehouse, EasyWMS automatically generates anASO01message targeting the destination warehouse, creating the incoming ASN container(s). The ASO carries the container and its stock but no reference to the originatingSorCode/ DirectTransfer header. See concepts/order-outbound.md.
ASK — Advanced Shipping Notice KO (WMS → ERP)
Notifies ERP that a pre-notified container has been rejected or deleted.
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| ContainerCode | Rejected container |
| ReceiptOrderCode | Receipt order (optional) |
| CancelDate | Rejection timestamp |
Triggered by: CON.CNL.ASN transaction
DirectTransfer trigger — deleting an ASN container of a DirectTransfer flow from SmartUI (
Entrepôt → Conteneurs ASN → Supprimer) generates anASK01to the ERP. As with the ASO, the message contains no reference to the upstream shipping order.
SRO — Stock Replenish OK (WMS → ERP)
Confirms that pre-notified loose stock has been used for automatic warehouse replenishment.
Triggered by: STK.REP.001 transaction
SRK — Stock Replenish KO (WMS → ERP)
Notifies that pre-notified loose stock has been canceled (not used for replenishment).
Triggered by: STK.REP.CNL transaction
Outbound / Shipping Messages
SOR — Shipping Order (ERP → WMS)
The primary message for creating outbound orders.
Versions:
SOR01: Standard shipping order (items/containers)SOR02: Prepackaging (specifies package count/type per line; VAS integration)
Key fields:
| Field | Description |
|---|---|
| Operation | S (new/upsert) / U (update) / D (cancel) |
| Site | Warehouse code |
| SorCode | Shipping order code (unique) |
| SorType | Customer / Return / Transfer / DirectTransfer |
| Priority | Urgent/High/Normal/Low/VeryLow |
| EnableReplenishment | Enable auto replenishment for this order |
| PrpPackingLocation | Consolidation location code |
| PlnAssignedDock | Pre-assigned dock |
| Lines[].LneNumber | Line number |
| Lines[].LneItemCode | Item (or alias) |
| Lines[].LneContCode | Container (optional) |
| Lines[].LneQtyOrder | Ordered quantity |
| Lines[].LneQtyUoMCode | Presentation |
| Lines[].LneAttributes | Logistic attribute filters (lot, expiry, etc.) |
| Lines[].LneTrmCritical | Critical line flag (all or nothing) |
| Lines[].LneTrmRequired | Required line flag (conditional preparation) |
| Lines[].LneMaxLots | Maximum number of lots |
| Lines[].LneQtyAllowExcess | Allow over-allocation |
| Lines[].LneTrmAlternative | Use configured substitutes |
| Lines[].LneAltItmCode | Explicit substitute item |
| Lines[].LneTrmStaReq | Required stock status |
| Lines[].LneTrmStaRejC | Rejected stock status |
| Lines[].LneTrmStaPref | Preferred stock status |
| Lines[].LneQtyReserve | Stock reserve quantity |
| Lines[].ShipExpiredStock | Ship only expired stock |
| SOR02: PrpContTypeRequired | Required client container type |
| SOR02: VASCode | VAS template |
SorType = DirectTransfer — inter-warehouse transfer; closing the expedition at origin emits an automatic ASO01 on destination, pre-creating the ASN container (see ASO and concepts/order-outbound.md).
SorType = Transfer — inter-warehouse transfer variant where destination generates a full inbound order on expedition close (as opposed to DirectTransfer which only pre-notifies via ASN). The destination ROR carries the source SOR reference ; on close, destination emits a ROF02 carrying the line-level quantities, which the origin warehouse uses to reconcile. See concepts/order-outbound.md.
SOC — Shipping Order Status Change (WMS → ERP)
Notifies ERP of shipping order status transitions.
Statuses reported: Release, StockFailure, InPreparation, Paused, Stopped, Prepared, Completed, Canceled
Triggered by: OUT.CST transaction
SOF — Shipping Order Finalization (WMS → ERP)
Notifies ERP that a shipping order has been closed or canceled with shipped quantities.
Versions:
SOF01: Full closeSOF02: Partial close (with remaining quantities)
Key fields:
| Field | Description |
|---|---|
| SorCode | Shipping order code |
| Status | Closed / Canceled |
| ClosingNumber | Closing sequence number |
| Lines[].LneNumber | Line number |
| Lines[].LneQtyShipped | Shipped quantity |
| Lines[].LneQtyUoMCode | Unit of measure |
Triggered by: OUT.CLS / OUT.CNL transactions
DlvShareDeliveries — Merge outbound orders (ERP → WMS)
XML message used by the Multi-Carrier / Deliveries module to request that two or more outbound orders be prepared together (merged). A merged group shares client containers, carrier call, and closure.
Eligibility — all orders in the request must match on:
- Same account
- Same site (warehouse)
- Same route or delivery address
- Same carrier
When ALLOW_MERGE_DIFFERENT_ACCOUNT = true is set, the "same account" rule is relaxed (cross-account merges become possible).
Effect on orders:
- Stock assignment is executed across the merged scope (not per-order)
- Client containers can carry lines from any order in the group
- Order closure is triggered when the last line of the last order in the group is picked / when the carrier call returns
- SOF is still emitted per source SOR — only preparation is shared
See concepts/order-outbound.md for operator flows and limitations.
LOF — Load Finalization (WMS → ERP)
Notifies ERP that a truck load has been closed (truck loaded and sealed).
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| LoadCode | Load code |
| RouteCode | Route code |
| Seal | Seal number |
| ClosureDate | Closure timestamp |
| ShippingOrders[] | Orders included in load |
Triggered by: LOAD.CLS transaction
WOR — Work Order (ERP → WMS)
Creates kit assembly or other work orders.
Used for: Kit assembly, quartering (cutting), or other manufactured outputs
WOF — Work Order Finalization (WMS → ERP)
Notifies ERP that a work order (kit assembly, etc.) has been closed or canceled.
Triggered by: WOR.CLS.001 / WOR.CNL.001 transactions
RUT — Route (ERP → WMS)
Creates or updates carrier routes.
Key fields:
| Field | Description |
|---|---|
| RouteCode | Route code |
| CarrierCode | Carrier |
| DockCode | Departure dock |
| DepartureTime | Scheduled departure |
Count Messages
COR — Count Order Request (ERP → WMS)
Requests WMS to create a physical count.
Supported scope types:
- Item count (by item + owner)
- Location count (by location range or aisle)
- Container count (by LPN)
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| CountCode | Count code |
| Priority | Count priority |
| Lines[].ItemCode | Item (item count) |
| Lines[].Aisle | Aisle (aisle count) |
| Lines[].CntCode | Container LPN (container count) |
| Lines[].LocationFrom/To | Location range (location count) |
| Lines[].IsInformed | Blind (false) or informed (true) count |
COF — Count Order Finalization (WMS → ERP)
Reports count results when a WMS-received count (from COR) is closed or canceled.
Note: Only sent for ERP-initiated counts, not WMS-initiated counts.
Key fields:
| Field | Description |
|---|---|
| Status | Closed / Canceled |
| Site | Warehouse code |
| CountCode | Count code |
| Lines[].ItemCode | Counted item |
| Lines[].Quantity | Counted quantity |
| Lines[].UomCode | Unit of measure |
| Lines[].LogisticAttributes | Lot, serial, etc. |
| Lines[].StockStatus | Receiving and user statuses |
| (empty location) LocationEmpty=1 | Indicates empty location |
Triggered by: COU.END transaction
Request Messages
STR — Stock Status Change Request (ERP → WMS)
Requests WMS to apply or remove a quality lock on stock.
Operations:
S(Add): Lock stock with a user statusD(Remove): Remove user or receiving status
Filter options: Item, Owner, Container, Lot (logistic attributes)
Lock types:
- Time-limited lock:
StaUsrEndfield with UTC expiry datetime - Permanent lock: No end date, must be manually released
Key fields:
| Field | Description |
|---|---|
| Operation | S (lock) / D (unlock) |
| ItemCode | Item to lock |
| OwnerCode | Owner |
| FltAttLot | Lot filter |
| StaCode | Status code to apply |
| StaUsrEnd | Lock expiry (UTC) — optional |
| StaUsrEmpty | Status to remove (for unlock) |
| StaRecEmpty | Reception status to remove |
Response: STC message per affected stock line
SCR — Stock Count Request (ERP → WMS)
Requests WMS to report current stock for an item or lot.
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| MassiveCount | true=grouped by item / false=per container |
| ItemCode | Item |
| OwnerCode | Owner |
| LotCode | Lot (optional) |
Response: WSC message
CMC — Container Movement Confirmation (ERP → WMS)
Notifies WMS of a container's destination after removal from outbound conveyor, when movements are managed by an external system.
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| ContainerCode | Container |
| Destination | Destination location code |
Notification Messages (WMS → ERP)
STV — Stock Variation (WMS → ERP)
Reports any stock quantity change (increase, decrease, creation, deletion, UoM change, logistic attribute change).
Operations: C (creation/increase), D (deletion/decrease)
Key fields:
| Field | Description |
|---|---|
| Operation | C or D |
| Site | Warehouse code |
| ItemCode | Item |
| OwnerCode | Owner |
| QuantityVar | Changed quantity (in base UoM) |
| UoMCode | Unit of measure (if UoM change) |
| FilterAttributes | Old logistic attributes (for attribute changes) |
| Attributes | New logistic attributes (for attribute changes) |
| ReasonCode | Adjustment reason (if configured) |
Also sent for: Presentation breakage (UoM split during picking), replenishment splits
Triggered by: STK.ADJ transaction
STC — Stock Status Change (WMS → ERP)
Reports every stock quality status change (lock or unlock).
Can be triggered by: STR request from ERP, manual user action (RF or SmartUI), automatic time-based unlock
Key fields:
| Field | Description |
|---|---|
| ItemCode | Item |
| OwnerCode | Owner |
| Quantity | Stock quantity |
| UomCode | Unit of measure |
| FltAttLot | Lot |
| ContainerCode | Container (if applicable) |
| StaUsrCode | New user status (lock case) |
| StaUsrEnd | Expiry date (for time-limited locks) |
| StaUsrEmpty | true (unlock case) |
Triggered by: CST.STK transaction
WSC — Warehouse Stock Count (WMS → ERP)
Response to SCR stock contrast request. Reports current stock quantities.
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| WSCDate | Date of stock check |
| ItemCode | Item |
| OwnerCode | Owner |
| Quantity | Current stock quantity |
| UomCode | Unit of measure |
| LotCode | Lot (if lot-level contrast requested) |
Triggered by: SCR.REQ transaction
KST — Kit Assembled (WMS → ERP)
Notifies ERP that kit stock has been assembled.
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| WorkOrderCode | Work order code (if applicable) |
| KitItemCode | Assembled kit item |
| KitQuantity | Kit quantity |
| KitVersion | Kit version |
| CompItemCode | Component item |
| CompQty | Component quantity used |
Triggered by: STK.KIT.MOUNT transaction
UNK — Kit Disassembled (WMS → ERP)
Notifies ERP that kit stock has been disassembled.
Triggered by: STK.KIT.UMOUNT transaction
COS — Container Shipped to PS (WMS → ERP)
Notifies ERP that a client container has been sent to the outbound conveyor (PS/Sortation).
Key fields:
| Field | Description |
|---|---|
| Site | Warehouse code |
| StationCode | Station where container ended |
| LocationCode | Location |
| ContainerCode | Container |
| StationToCode | Destination station (if task-based move) |
| ClosedDate | Closing timestamp (UTC) |
Triggered by: CON.COS.001 transaction
COC — Container Closed in MP (WMS → ERP)
Notifies ERP that a client container has been closed in a Preparation Zone (MP).
Key fields: Same structure as COS
Triggered by: CON.COC transaction
ERR — Error (WMS → ERP)
Sent when WMS cannot process an incoming ERP message. Contains the original message reference and error description.
Message Operation Codes
| Code | Meaning |
|---|---|
C |
Create (new record) |
S |
Upsert (create or update) |
U |
Update (existing record only) |
D |
Delete or cancel |
Integration Architecture
Message Flow
ERP ──[async message]──→ WMS Integration Queue
WMS Integration Queue ──→ WMS Core (processes message)
WMS Core ──[transaction]──→ Post-processor
Post-processor ──[async message]──→ ERP Response Queue
ERP Response Queue ──→ ERP
Transaction Post-processing
Many WMS transactions are marked "Post-processed: yes" — meaning after the internal transaction is written, a background post-processor generates the corresponding ERP message:
| Transaction | Generated Message |
|---|---|
CON.ASN.001 |
ASO |
CON.CNL.ASN |
ASK |
CON.PIE |
ASO |
INO.CST |
ROC |
INO.CLS |
ROF |
INO.CNL |
ROF |
REC.CLS |
REF |
OUT.CST |
SOC |
OUT.CLS |
SOF |
OUT.CNL |
SOF |
LOAD.CLS |
LOF |
WOR.CLS.001 |
WOF |
WOR.CNL.001 |
WOF |
COU.END |
COF |
STK.ADJ |
STV |
CST.STK |
STC |
STK.REP.001 |
SRO |
STK.REP.CNL |
SRK |
SCR.REQ |
WSC |
STK.KIT.MOUNT |
KST |
STK.KIT.UMOUNT |
UNK |
Module-Specific ERP Messages
Beyond the core catalog, optional modules add their own ERP messages:
| Module | Message | Direction | Description |
|---|---|---|---|
| Manufacturing | RCP01/RCP02 | ERP → WMS | Recipe (BOM) create/update/delete |
| Manufacturing | MOR01 | ERP → WMS | Manufacturing production order create/update/delete |
| Manufacturing | MOF | WMS → ERP | Manufacturing order finalization (closed or cancelled) |
| Manufacturing | FGP | WMS → MES | Finished goods produced notification (MES integration) |
| Kits | WOR | ERP → WMS | Work order for kit assembly or disassembly |
| Kits | WOF | WMS → ERP | Work order finalized (ERP-originated orders only) |
| Kits | KST | WMS → ERP | Kit manually assembled (manual work orders) |
| Kits | UNK | WMS → ERP | Kit manually disassembled (manual work orders) |
| Store Fulfillment | TOR01 | ERP → WMS | Transfer order between stores/sub-warehouses |
| Store Fulfillment | TOF01 | WMS → ERP | Transfer order finalized |
| Store Fulfillment | TPV01 | ERP → WMS | POS sale notification — decrements store stock |
| VAS | VAS01 | ERP → WMS | Create/update VAS templates, activities, and instructions |
| VAS | SOR02 VASCode | ERP → WMS | VAS template reference per line in shipping order |
| VAS | SOF (VAS field) | WMS → ERP | VAS model used + quantity returned per shipped line |
| Slotting | SAC01 | WMS → ERP | ABC rotation classification suggestion (sent after manual recalculation) |
| DOM | POR/ROC/SOR/SOC/SOF/DOF/ACK/NCR | Both | Multi-node orchestration |
| Yard Management | Appointment sync | Both | ERP/TMS appointment exchange |
| Counting | SCR/WSC | Both | Stock contrast |
SAC01 detail: sent manually from SmartUI after running the ABC rotation analysis in the WMS. Contains item code + suggested ABC class. The ERP uses this to update item classification. Only sent when the WMS operator explicitly triggers it (not automatic).
TPV01 detail: sent by POS (point of sale) system when a store sale occurs. EasyWMS decrements the corresponding store sub-warehouse stock in real time, providing a live stock view per store. Requires Store Fulfillment module.
TOR01/TOF01: used by the Store Fulfillment module to manage inter-store replenishment. TOR01 creates the transfer order from ERP; TOF01 is returned when the transfer is complete.
Common Errors
| Symptom | Cause | Solution |
|---|---|---|
| ROR creates order but lines fail | transactional group not set, line validation error |
Check item/UoM existence; review partial creation log |
| ASN container arrives but no ASO sent | Post-processor not running | Check integration pool and post-processor service |
| SOR rejected: item not found | Item not yet synced via ITM | Send ITM first, then SOR |
| STR applies lock but no STC received | Stock matching filters returned zero results | Verify item/owner/lot combination exists |
| SOF never received | Shipping order not yet closed in WMS | Check order status; may be in Prepared status awaiting manual close |
| COR count created but COF never sent | Count was created from UI (not ERP-initiated) | COF only sent for ERP-initiated counts |
Related
- Inbound Order — Receipt order lifecycle and ROR/ROC/ROF details
- Outbound Order — Shipping order lifecycle and SOR/SOC/SOF details
- Quality Control — Stock lock/unlock and STR/STC messages
- Count — Physical counts and COR/COF messages
- Stock — Stock adjustments and STV messages
- Transactions — Internal transactions that trigger ERP messages
- Entities Map — ERP integration touch points per entity
- Replenishment — Automatic warehouse replenishment and SRN/SRO/SRK
- Manufacturing — MOF/FGP production messages
- DOM — Distributed order management messages