Order lifecycle and statuses

This page describes how orders are structured and managed in Djust OMS, with a focus on lifecycle progression, key statuses, and operational transitions.


📦 Order Structure Overview

Each order in Djust OMS follows a structured lifecycle composed of several phases. It can contain:

  • One or multiple order lines (products)
  • Optional delivery splits (for multi-shipment flows)
  • Related documents (quotes, invoices, delivery notes)
  • Linked approval and shipment statuses

Orders progress through the lifecycle based on configured business rules, user actions, and external system events (e.g. approval, shipment, or cancellation).


🧭 Main Order Lifecycle Phases

The following statuses define the typical flow of a B2B order in Djust OMS:

1. Draft

  • The order is being created and not yet submitted.
  • Still editable by the buyer.

2. On Hold

  • This is an optional intermediate status that can be triggered during checkout.
  • It allows a third party (e.g., a procurement manager or finance controller) to review and verify the order before submission.
  • Useful in workflows where manual validation, rechecking, or internal coordination is required before the order proceeds.

3. Created

  • The order has been submitted by the buyer.
  • It awaits the next approval steps.

4. Waiting Customer Approval

  • An internal approval step is required from the customer (e.g., purchase manager validation).
  • Configurable per client and order type.

5. Waiting Supplier Approval

  • The order is awaiting review and confirmation by the supplier.
  • The supplier can accept or decline based on stock or commercial conditions.

6. Declined By Customer

  • The customer has refused or withdrawn the order after submission.
  • The process stops unless re-submitted.

7. Declined By Supplier

  • The supplier has refused the order (e.g. stock unavailability, pricing issue).
  • The order cannot proceed further.

8. Accepted By Supplier

  • The supplier has confirmed the order and is ready to fulfill it.
  • It transitions to the fulfillment phase.

9. Waiting Shipment

  • The order is ready to be shipped, either partially or in full.
  • Warehouse or supplier actions are expected.

10. Partially Shipped

  • Some order lines have been shipped, others are still pending.
  • The order remains open until all items are fulfilled or canceled.

11. Shipped

  • All items have been shipped.
  • Delivery may be confirmed by carrier integration or manually.

12. Canceled

  • The order was canceled before full shipment.
  • Can be triggered by the customer, supplier, or system rules.

13. Completed

  • The order has been fully processed: all shipments completed, and the flow is finalized.
  • The order is archived operationally.

🧾 Status Types

Djust OMS tracks multiple layers of order status:

Status TypeDescription
Order StatusesMain lifecycle status described above
Order Line StatusesStatus per line (can be different across lines), for example, when an incident occurs
Approval StatusesTracks buyer or supplier decision states
Shipment StatusesCaptures delivery progress (partial/full)
Cancellation StatusesUsed if canceled by either party or auto-rules
Payment StatusesAll payment integration with PSP actions and events

⚙️ Status Transition Logic

Status changes can be triggered by:

  • Customer or supplier actions
  • Admin operations via backoffice
  • Data Hub jobs and or Webhooks from logistics or external systems
  • Automated rules (e.g., timeout or rejection fallback)

All transitions are logged as events and auditable through the OMS.


🔁 Example Lifecycle Flow

flowchart TD
    A[Draft] --> B[Created]
    B --> C[Waiting Customer Approval]
    C -->|Approved| D[Waiting Supplier Approval]
    C -->|Declined| K[Declined By Customer]
    D -->|Declined| L[Declined By Supplier]
    D -->|Approved| E[Accepted By Supplier]
    E --> F[Waiting Shipment]
    F --> G{Shipped Fully?}
    G -- No --> H[Partially Shipped]
    G -- Yes --> I[Shipped]
    H & I --> J[Completed]
    A --> M[On Hold]
    M --> B
    B --> N[Canceled]