Skip to content

Outbound Flow

theGreenGuy edited this page Jun 3, 2026 · 1 revision

Outbound Flow

How an outbound order becomes picked, cubed cartons with dispatch labels. Design: ADR 0002.

create order ─► release ─► allocation: reserve at PICK locations + cube into shippers ─► (pick) ─► ship
   (order-management)          (allocation)                                                (order-management)

Order

POST /api/orders creates an order with an orderType (INBOUND/OUTBOUND/COUNT/ADJUSTMENT). An outbound order may also carry serviceCode, routeCode, a shipTo address, and an optional labelTemplateCode (validated against the master-data catalogs). Orders carry priority and dispatch time; release management surfaces a most-urgent-first queue (/release-queue, /release-due).

Release → allocation + cubing

On release, order-management delegates to allocation, which:

  1. Allocates each line against PICK-purpose locations (inventory location-scoped ATP) until met, with a pick-type UoM breakdown (cases/eaches, per the warehouse's allowed pick types). If every line is reserved → ALLOCATED/FULFILLABLE; otherwise all reservations are released → NOT_FULFILLABLE.
  2. Cubes the order into shippers:
    • APP — greedy volume+weight across the warehouse's active shipper sizes: packs the largest carton that fits while a lot remains, then downsizes the final carton to the remainder. A single order line can be split across cartons.
    • ONE_TO_ONE — the host already cubed; the request's cube instructions map 1:1 to cartons.
    • Each carton (ShipperAssignment) has a stable shipperUnitId, and its contents carry the order lineNo — so a line split across cartons (and a carton holding several lines) is fully traceable.
  3. Dispatch label per carton: the resolved label template (order override → service → warehouse default) + fields (ship-to, service, route, carton seq/total) + a barcode requested from the host per shipper (the barcode is only knowable once cubing produced the cartons). See Host Integration.

Cubing failure

If a SKU is larger than the biggest available carton, the order can't be cubed: no shippers are produced, any held stock is released, and the order is parked in CUBING_FAILED with a reason (the offending line/SKU) for an operator to resolve. It can be re-released after the carton/SKU master data is fixed.

Batch (cluster) picking

POST /api/allocation/batches groups eligible small orders (FULFILLABLE, pieces ≤ batchMaxPieces) into pick totes (≤ batchMaxOrders), merges their picks into one combined list, and records the per-order separation plan.

Related: Inbound and Inventory · Equipment Integration · Services.

Clone this wiki locally