Function · Allocation Built
Before an operator touches a tote, openWCS turns an outbound order into committed stock and a packing plan: it reserves the right units at reachable locations, breaks the demand down by unit of measure, cubes the lines into shippers, and groups work into batches.
How it works
Releasing an order runs allocation against location-scoped availability. It reserves stock until demand is met, computes the pick-type UoM breakdown, and produces a pick plan plus a cube plan — or fails cleanly if it can't.
Allocation reserves against location-scoped ATP until demand is met, so each line points at a real, reachable unit — not just a SKU that exists somewhere in the building.
Demand is broken into the pick-type unit of measure — case, split-case, each — so the plan reflects how stock is actually held and picked, not a flat quantity.
Lines are fitted into shippers across multiple carton/tote sizes, largest-first, using SKU dimensions and weight — so the plan knows how many of which size a set of orders needs.
Each carton carries a stable shipper-unit ID and the lines it holds, so every shipper is traceable back to the order lines inside it — for labels, dispatch and audit.
A dispatch-label barcode is requested per shipper — knowable only once cubing exists — from the host system, or a built-in simulator when no host label service is configured.
Batch-pick planning groups order lines into efficient pick work — the basis for wave / batch picking, and the plan that pick execution will later drive against.
Honest outcomes
Release has explicit outcomes, so a release that can't be fulfilled fails loudly instead of half-committing. Held reservations are always released on failure or cancel.
Demand was met: stock is reserved, the UoM breakdown computed, and a pick plan plus cube plan produced. The order is ready to release to the floor.
Availability can't cover the order. Every reservation held during the attempt is released, so a failed allocation never strands stock as committed-but-unusable.
A SKU is larger than the biggest carton, so no shippers can be produced. The attempt backs out cleanly — a distinct, actionable outcome rather than a silent partial.
At a glance
order release ─► openWCS allocation
│ reserve vs location-scoped ATP (until demand met)
│ UoM breakdown: case · split-case · each
│ cube into shippers (multi-size, largest-first, line-traceable)
│ request dispatch-label barcode per shipper
▼
ALLOCATED (pick plan + cube plan) · batch picking
└─ NOT_FULFILLABLE / CUBING_FAILED → release held reservations
Open & configurable
Allocation commits against the event-sourced inventory and feeds goods-to-person demand. Pick execution on top of this plan is on the roadmap — see the picking page.