Skip to content

Fulfillment Order Lifecycle

Models the lifecycle of a Fulfilment Order (FO) from creation by the OMS through warehouse or store execution, dispatch, and delivery confirmation. A single Order may spawn multiple Fulfilment Orders (split fulfilment).

Object: fulfillment-order · States: 9 · Transitions: 10


State Diagram

flowchart LR

    %% ── classDef palette ─────────────────────────────────────
    classDef stInit  fill:#0d9488,stroke:#0f766e,color:#fff,font-weight:bold
    classDef stNorm  fill:#3b82f6,stroke:#2563eb,color:#fff
    classDef stOk    fill:#16a34a,stroke:#15803d,color:#fff,font-weight:bold
    classDef stFail  fill:#dc2626,stroke:#b91c1c,color:#fff,font-weight:bold
    classDef stHold  fill:#d97706,stroke:#b45309,color:#fff

    %% ── nodes ───────────────────────────────────────────────
    created(["Created"])
    allocated["Allocated"]
    picking["Picking"]
    packed["Packed"]
    dispatched["Dispatched"]
    delivered[["Delivered"]]
    failed_delivery["Failed Delivery"]
    returned_to_sender[["Returned to Sender"]]
    cancelled[["Cancelled"]]

    %% ── transitions ─────────────────────────────────
    created -->|"inventory-reserved"| allocated
    allocated -->|"fulfillment-order-dispatched"| picking
    picking -->|"fulfillment-order-dispatched"| packed
    packed -->|"fulfillment-order-dispatched"| dispatched
    dispatched -->|"fulfillment-order-dispatched"| delivered
    dispatched -->|"fulfillment-order-dispatched"| failed_delivery
    failed_delivery -->|"fulfillment-order-dispatched"| dispatched
    failed_delivery -->|"fulfillment-order-dispatched"| returned_to_sender
    created -->|"order-cancelled"| cancelled
    allocated -->|"order-cancelled"| cancelled

    %% ── class assignments ───────────────────────────
    class created stInit
    class allocated,picking,packed,dispatched,failed_delivery stNorm
    class delivered,returned_to_sender stOk
    class cancelled stFail

States

State Label Description Initial Terminal
created Created Fulfilment Order created by OMS routing. Awaiting stock allocation.
allocated Allocated Stock allocated and reserved for this Fulfilment Order.
picking Picking Warehouse or store associate is physically picking items.
packed Packed Items picked and packed. Ready for handover to carrier or customer.
dispatched Dispatched Parcel handed to carrier or ready for customer collection.
delivered Delivered Customer confirmed receipt or carrier confirmed delivery.
failed-delivery Failed Delivery Delivery attempt unsuccessful. Re-delivery or return to sender pending.
returned-to-sender Returned to Sender Parcel returned to fulfilment location after failed delivery.
cancelled Cancelled Fulfilment Order voided before dispatch.

Transitions

From To Trigger Guards
created allocated inventory-reserved Sufficient stock available at assigned location
allocated picking fulfillment-order-dispatched Picking task assigned to associate or automated system
picking packed fulfillment-order-dispatched All lines picked and verified
packed dispatched fulfillment-order-dispatched Carrier label generated; Handover scan completed
dispatched delivered fulfillment-order-dispatched Carrier delivery confirmation received OR customer signature obtained
dispatched failed-delivery fulfillment-order-dispatched Delivery attempt unsuccessful; Carrier returns failed status
failed-delivery dispatched fulfillment-order-dispatched Re-delivery scheduled with carrier
failed-delivery returned-to-sender fulfillment-order-dispatched Maximum delivery attempts exhausted
created cancelled order-cancelled Stock not yet picked
allocated cancelled order-cancelled Picking not yet started; Stock reservation released