Files
mcp-wms-wiki/wiki/architecture/entities-map.md
T
arthur 9ce6ae37be lint(standard): corrections completes mode standard
- Em dashes: 1712 remplaces par tirets simples (86 fichiers + _index.md,
  en-tete section Limagrain conserve)
- Checklists: 24 '- [ ]' -> '- ☐' (3 pages operations, plus de todos Obsidian)
- Ancres: 33 reparees (slugs GitHub + ancres HTML <a id> reconnues),
  1 reciblee (manuel de reten)
- related: tenseflow -> tense-flow, pie -> mechanical-elements,
  group.md retire (doublon shipping)
- Registre: compteur global 122 -> 131 pages
- Rapport racine _lint_report.md mis a jour (scan v2 + re-scan final: 0 anomalie)
- Aucun fichier limagrain/ modifie (cloisonnement)
2026-07-20 13:01:21 +02:00

15 KiB
Raw Blame History

title, type, sources, related, last_compiled
title type sources related last_compiled
Entities Relationship Map architecture
Synthesized from all Batch 1-5 compiled wiki pages
areas/TransactionTypes.md
areas/ERP.md
All ERP message files
All concept and module pages
architecture/application-dictionary.md
architecture/overview.md
concepts/container.md
concepts/location.md
concepts/stock.md
concepts/product-item.md
concepts/task.md
concepts/order-inbound.md
concepts/order-outbound.md
concepts/erp-interface.md
2026-04-10

Entities Relationship Map

Overview

This page provides the complete entity relationship model of Easy WMS, synthesized from all documented behavior across Batches 15. It shows the core entities, their key attributes, and how they relate to one another - forming the mental model needed to interpret WMS data.

Core Entity Hierarchy

Organization
└── Site (Warehouse)
    ├── Zones (Storage / Working)
    │   └── Aisles
    │       └── Racks / Shelves
    │           └── Locations ──────────────── contains ──→ Containers
    │                                                           └── Stock lines
    ├── SubWarehouses
    │   └── Locations (scoped)
    ├── Stations (Dock / PIE / PK / PS / MU / ME / etc.)
    │   └── Routes (Simple / Composed)
    │       └── Route Managers (Galileo / RF / Voice / PTL / External)
    ├── Equipment (Forklifts / AGVs / Conveyors)
    └── Users
        └── Roles → Station Roles

Primary Entity Relationships

Location → Container → Stock

The fundamental storage chain:

Location (1) ←── stored_at ──── (N) Container
Container (1) ←── held_in ──── (N) Stock
Stock (N) ──── is_of_type ────→ (1) Item
Stock (N) ──── owned_by ───────→ (1) Owner
Relationship Cardinality Notes
Location → Container 1:N One location can hold multiple containers (stacking)
Container → Stock 1:N One container can hold multiple stock lines
Container → Container 1:N Stacked containers; outer container holds inner
Stock → Item N:1 Multiple stock lines for same item (different lot/location)
Stock → UoM N:1 Each stock line has one UoM
Stock → Owner N:1 Stock belongs to one owner

Orders → Stock → Task

The fulfillment chain:

ReceiptOrder (1) ←── fulfilled_via ──── (N) Receipt
Receipt (1) ─────── creates ──────────→ (N) Container (received containers)
Receipt (1) ─────── creates ──────────→ (N) Stock (loose stock)
ReceiptOrder (1) ←── associated ──── (N) Container (ASN pre-notified)

ShippingOrder (1) ←── assigned_from ── (N) Stock (reservations)
ShippingOrder (1) ─── generates ──────→ (N) Task (picking tasks)
Task (1) ────────────── moves ─────────→ (N) Container
Task (1) ────────────── moves ─────────→ (N) Stock
Task (N) ─────────────── assigned_to ──→ (1) User / Equipment

Container Lifecycle Relationships

Container ──── received_at ─────→ Location (Dock/PIE/PK/ASN)
Container ──── moved_to ─────────→ Location (via putaway Task)
Container ──── picked_from ──────→ Location (via picking Task)
Container ──── shipped_to ───────→ Location (Dock/Stage)
Container ──── loaded_on ────────→ Load (truck loading)
Container ──── consolidated_into → Container (client container)
Container ──── stacked_on ───────→ Container (stacking)
Container ──── locked_by ────────→ ContainerLock (N lock types)

Detailed Entity Attribute Map

Container

Container {
  Code*           → unique LPN identifier
  TypeCode        → ContainerType (dimension, weight capacity)
  Weight          → actual weight
  Status          → Received / In Transit / Located / Shipped / Deleted
  LocationCode    → current Location (nullable if in transit)
  OwnerCode       → Owner (nullable)
  ReceiptCode     → source Receipt (if received via reception)
  ASNCode         → advance shipping notice code (if pre-notified)
  Locks[]         → active ContainerLock list
  StackedOn       → parent Container (if stacked)
  Divisions[]     → cutting stock divisions (if applicable)
}

Location

Location {
  Code*           → ASXY format (Aisle+Section+X+Y) or virtual code
  Type            → Conventional/Compact/APS/APSFIFO/Dynamic/Pushback/
                    Cantilever/Buffer/Dock/Equipment/Conveyor/Virtual
  ZoneCode        → storage Zone
  SubWarehouseCode→ SubWarehouse (optional scoping)
  StorageMode     → Single container / Multi-container / Loose stock
  StorageLogic    → 12 flags (fifo/lifo/fefo/stack/mix items/mix lots/etc.)
  Locks[]         → active LocationLock list (8 operation types)
  Capacity        → weight/height/container count limits
  Features[]      → compatibility flags for putaway restrictions
  IsPickingDedicated → boolean (PDL flag)
  VirtualType     → ASN / LostFound / Mov (if virtual)
}

Stock

Stock {
  ItemCode*       → Item
  UoMCode*        → Unit of Measure
  Quantity*       → current quantity
  ContainerCode   → Container (nullable for loose stock)
  LocationCode    → Location
  OwnerCode       → Owner
  ReceivingStatus → quality status set at reception (clear/locked)
  UserStatus      → quality status set by user/ERP (0..N statuses)
  LogisticAttributes {
    Lot, SerialNumber, ExpiryDate, BestBefore, ProductionDate,
    DaysOfLife, Color, Size, Version, Weight, ... (item-specific)
  }
  ReservedQty     → quantity reserved for ShippingOrder lines
  AssignedQty     → quantity assigned to Tasks
}

Task

Task {
  Number*         → unique task ID
  ProcessType     → Putaway/Picking/Shipping/Replenishment/Count/
                    Movement/Consolidation/etc.
  Status          → Pending/Generated/InProcess/Finished/Canceled
  ContainerCode   → Container being moved (nullable)
  LocationFrom    → source Location
  LocationTo      → destination Location
  ShippingOrderCode → linked ShippingOrder (if picking/shipping task)
  CountCode       → linked Count (if count task)
  AssignedUser    → User assigned to execute
  AssignedEquipment → Equipment (AGV, forklift)
  Priority        → Urgent/High/Normal/Low/VeryLow
  Route           → Route/Station path for automatic warehouse
  Movements[]     → decomposed Movement steps (compound routes)
}

Receipt Order (Inbound Order)

ReceiptOrder {
  Code*           → unique order code
  Type            → Supplier/Return/Transfer
  Status          → Created/Waiting/Pending/Receiving/PartiallyReceived/
                    Received/Closed/Canceled
  SupplierCode    → Supplier (if type=Supplier)
  Lines[] {
    Number, ItemCode, ExpectedQty, ReceivedQty, FreeQty, UoMCode
  }
  Receipts[]      → linked Receipts (physical receiving events)
  Containers[]    → ASN pre-notified Containers
  ERP_Source      → ROR message code (if from ERP)
}

Shipping Order (Outbound Order)

ShippingOrder {
  Code*           → unique order code
  Type            → Customer/Return/Transfer/DirectTransfer/
                    Replenishment/Kit/Desk/Work
  Status          → Created/Released/InPreparation/StockFailure/
                    Paused/Prepared/Closed/Canceled
  Priority        → Urgent/High/Normal/Low/VeryLow
  AccountCode     → Account (delivery destination)
  DockCode        → assigned dock (optional)
  RouteCode       → Route assignment (optional)
  GroupCode       → wave/group (optional)
  Lines[] {
    Number, ItemCode, ContainerCode, OrderedQty, PreparedQty,
    ShippedQty, UoMCode, LogisticAttributes, MaxLots,
    Flags: Critical/Required/Excess/Substitutes
  }
  Prepackaging    → prepackaging config (SOR02 only)
  VASCode         → VAS template reference (optional)
  ERP_Source      → SOR message code
}

Count

Count {
  Code*           → unique count code
  Type            → Location/Item/Container
  Status          → Disabled/Releasing/InProcess/Closed/Canceled
  Priority        → count priority
  Lines[] {
    Number, Scope: {ItemCode/ContainerCode/LocationFrom-To/Aisle},
    IsInformed, IsBlind
  }
  Tasks[]         → count Tasks generated
  ERP_Source      → COR message code (if ERP-initiated)
}

Master Data Entities

Item {
  Code*, OwnerCode, Description, ShortDescription
  TypeCode → ItemType
  FamilyCode → ItemFamily
  ABCClass → A/B/C classification
  Profiles: LogisticProfile, ReceptionProfile, PutawayProfile,
            ShippingProfile, CuttingProfile
  UoMBase, Conversions[], Aliases[]
  LogisticAttributes: {lot, serial, expiry, bestBefore, days_of_life,
                       production, color, size, version, quality, weight}
  MinQty, MaxQty (per SubWarehouse via ItemClassification)
  IsKit, IsSubstitute, IsCuttingStock
}

Owner {
  Code*, Description
  (with Owner Extensions: isolated master data scope)
}

Supplier {
  Code*, Description, OwnerCode
}

Account {
  Code*, Description, OwnerCode, AccountType
  MixingRules → item/lot mixing restrictions
}

Carrier {
  Code*, Description
  Services[] → carrier service levels
  (with Multi-Carrier: extended delivery configuration)
}

Operational Entities

Routes and Loads

Route {
  Code*, Description, CarrierCode
  DockCode → departure dock
  DepartureTime
  Status → Open/Closed/Canceled
  Loads[] → truck Loads
  ShippingOrders[] → assigned orders
}

Load {
  Code*, RouteCode
  Status → Open/InLoading/Closed
  Seal → seal number
  Containers[] → loaded containers
  Stocks[] → loaded loose stock
}

Putaway and Replenishment

PutawayStrategy {
  Criteria[] → filter rules (item type, family, ABC, weight, etc.)
  LocationRules[] → destination preference rules
  AisleBalancing → boolean
  ChannelFilling → boolean (prefer filling partial channels)
}

PDL (PickingDedicatedLocation) {
  LocationCode, ItemCode, UoMCode
  MinQty, MaxQty, ReplenishQty
  PartitionType → fixed/flexible
  EfficiencyMode → efficient/complete/none
}

Consolidation and Defragmentation

ConsolidationProcess {
  Code*, Definition, Criteria
  AllowMixing → boolean
  DestinationStation
  Status → Standby/Released/Paused/Canceled
  Orders[] → consolidation orders
}

DefragmentationPlanner {
  Type → Rotation/Shipping
  Schedule, Duration, Frequency
  Status → Active/Inactive
}

Module-Specific Entity Extensions

AGV

AGVOrder {
  ContainerCode, LoadType (0=Container/1=PalletShuttle)
  PhaseCode → communication phase (00/03/04/06/08/10/255)
  OriginLocation, DestinationLocation
  ErrorCode, ErrorDescription
}

Multi-Carrier

Delivery {
  CarrierCode, ConsigneeCode
  Status → Pending/Confirmed/Shipped/Delivered
  TrackingNumber
  Packages[]
  ShippingOrderCode
}

3PL Billing

BillingContract {
  OwnerCode, Description
  Rules[] → BillingRule
  Planners[] → BillingPlanner
}

BillingRule {
  Type → Standard/Custom
  ValuationFields[], TieredPricing[]
}

DOM

DOMNode {
  Code*, Type → POI/POF/Store
  RegionCode
  StockLevels → Organization/Node/Line
}

DOMOrder {
  Code*, Type → Purchase/Sales/Replenishment
  SourceNode, DestinationNode
  OrchestrationStage → Region/Carrier/Stock/Capacity/Strategy
}

Key Referential Constraints

Constraint Description
Item cannot be deleted with active stock Item delete requires zero stock across all locations
Location cannot be deleted if occupied Must empty location first
ReceiptOrder cannot be deleted if has receipts Must cancel or close first
ShippingOrder cannot be modified if closed/canceled Immutable after close
Task cannot be canceled if InProcess Must be released by operator first
Container lock blocks most operations Check active locks before operations
Stock with active UserStatus blocks shipping Unless order specifically requests that status

Transaction-Entity Mapping

Every entity state change generates a Transaction. Key mappings:

Transaction Entity Changed
CON.LOCATE Container → Location (putaway)
CON.MOVE Container → Location (manual move)
CON.SHIPPED Container → Status=Shipped
CON.RECEP Container → Created at receipt
STK.RECEP Stock → Created at receipt
STK.LOCATE Stock → Location (via putaway)
STK.MOVE Stock → Location (manual)
STK.PICKING Stock → Quantity decreased (picking)
STK.ADJ Stock → Quantity adjusted
STK.SHIPPED Stock → Status=Shipped
INO.CST ReceiptOrder → Status changed
INO.CLS ReceiptOrder → Status=Closed
OUT.CST ShippingOrder → Status changed
OUT.CLS ShippingOrder → Status=Closed
COU.CST Count → Status changed
COU.END Count → Status=Closed/Canceled
TSK.LOC.001 Task → Status=Finished (putaway)
TSK.SHIP Task → Status=Finished (shipping)

ERP Integration Touch Points

Each entity has ERP messages that create, update, or receive data:

Entity ERP In (ERP→WMS) ERP Out (WMS→ERP)
Item ITM -
Owner OWN -
Supplier SUP -
Account ACC -
Carrier CAR -
Kit KIT KST (assemble), UNK (disassemble)
ItemClassification ITC -
ReceiptOrder ROR ROC (status), ROF (close)
Container (ASN) ASN ASO (received), ASK (rejected)
Receipt - REF (closed)
ShippingOrder SOR, RUT, WOR SOC (status), SOF (close), LOF (load close), WOF (work order close)
Count COR COF (finalized)
Stock STR (lock), SCR (contrast) STV (variation), STC (status change), WSC (contrast response)
AutoWarehouse replenishment SRN SRO (done), SRK (canceled)
Container on conveyor CMC COS (shipped to PS), COC (closed in MP)