Automation · Goods-to-person Built

One stock HU, many orders.

At a goods-to-person station the operator never travels — handling units come to them. openWCS presents a single stock HU and lights up every order destination that SKU is needed at, so one unit fills many orders in a single pass. That batch pick-and-put is built today.

The station model

Stations, nodes & open demand.

A station is a small graph: STOCK nodes where a stock HU is presented, and ORDER destination nodes where puts land. Allocation feeds the station open demand — for each destination, which SKU and how many to put there.

STOCK node

Where the unit lands

A station has at least one STOCK node — the position where a retrieved stock HU is presented to the operator. From here its contents are distributed across the order destinations.

ORDER node

An order destination

Each ORDER node is a put destination with an optional put-light and a currently bound order HU. It's where the operator places the units this order needs from the presented stock HU.

Open demand

The work fed in

Demand is posted against an ORDER node — an order line, a SKU and a quantity to put there. This is the REST seam where allocation and order-management feed real work into the station.

How it works

Present once, put-to-light many.

The pick-and-put work cycle is a tight loop: present a stock HU, get a put-list, confirm each put. One presented HU serves as many destinations as need that SKU — that's the goods-to-person batch.

Present

Match SKU to demand

Presenting a stock HU (SKU + qty) matches it against open demand across the station's ORDER nodes and greedily fills most-needed-first, emitting a put-list of instructions.

Put-to-light

One HU, many destinations

Each put instruction names a destination node, the resolved order/HU, its put-light and the qty. The operator works the lit cubbies in turn — one stock HU serving the whole batch of orders.

Confirm

Decrement & close out

Confirming a put decrements the cycle's remaining stock and the destination's demand. A fully-putted destination completes; a cycle with no open puts left completes too.

Short put

Handle the shortfall

Confirming a smaller qty is a short put — the instruction goes SHORT and the destination's remaining demand stays OPEN for a later cycle, so nothing is silently lost.

Roll-over

Surplus demand waits

If the presented qty can't cover all demand, the surplus simply stays OPEN for the next stock HU of that SKU — the batch continues across however many units it takes.

RBAC

Reads vs operate

Per-endpoint role-based access (toggleable): viewing demand and cycles needs ORDER_VIEW, while present and confirm need DEVICE_OPERATE — the operator role on the floor.

Two physical worlds

ORDER_LOCATION and PUT_WALL, one engine.

A station's mode documents how its ORDER destinations are physically realised — but the execution engine is identical. The same present / put-to-light / confirm cycle drives both, so you don't maintain two pickers.

ORDER_LOCATION
Built

Order HUs in locations

Order HUs sit in fixed or conveyor-fed locations at the station — the classic put-to-order layout. The operator puts into the order HU presented at each destination, conveyor delivering and clearing them.

PUT_WALL
Built

Lit rack cubbies (typical AMR)

ORDER destinations are cubbies in a lit rack — the typical goods-to-rack realisation for AMR fleets. Each cubby is an ORDER node with its own put-light; the same engine drives the puts.

Inbound queue & station control

HUs arrive, queue, get worked.

A station's inbound queue tracks every handling unit routed to it — whether it's still on its way or waiting for the operator. Deactivating a station drains it cleanly without losing any queued work.

IN_TRANSIT

En route to the station

Conveyor HUs enter the queue as IN_TRANSIT with a computed arrival time (distance ÷ 0.5 m/s). They flip to QUEUED when due — the operator sees only what's ready to work.

QUEUED

Ready to work

ASRS, AMR and AutoStore HUs arrive immediately QUEUED. The operator console auto-presents the head QUEUED tote — no manual selection needed; completing the cycle marks the entry DONE and advances to the next. The full queue is accessible as a fold-out drawer on the right edge of the console.

Drain control

Finish cleanly, then re-open

Deactivating a station stops new HUs from being routed in while the operator finishes the existing queue. Re-activating reopens it — useful for shift changes or maintenance windows.

STOCK_COUNT
Built

Blind count at the station

When a count tote arrives at a STOCK_COUNT station, the operator console switches to a blind-count panel: enter the quantity you see — no system figure shown. Two counts that agree confirm a variance and post a StockAdjusted event to the host automatically.

At a glance

Present → put-list → confirm.

  allocation ─► open demand (per ORDER node: order-line · SKU · qty)
                       │
  present stock HU ─►  openWCS gtp  ── match SKU, fill most-needed-first ─► put-list
                       │                       (destination · order/HU · put-light · qty)
  put-to-light ─► confirm put ─► decrement stock + demand
                       │  short put  → instruction SHORT · demand stays OPEN
                       │  destination fully putted → COMPLETED
                       ▼
                 cycle COMPLETED when no OPEN puts remain · surplus rolls to next HU

Built & open

Run goods-to-person, your way.

The station engine is open source and records the put-lights and HUs it drives. Physical light hardware and retrieving HUs to the station are adapter / flow-orchestrator follow-ups — the batch logic is live today.