Warehouse Management
Inventory management says how much you have. Warehouse management says exactly where it is and how it moves.
When you need a WMS
| Signal | Implication |
|---|---|
| Stock tracked at storage-location level only | Basic inventory management is enough |
| You need bin-level location | WMS |
| Directed put-away and picking | WMS |
| Multiple picks per trip, wave/batch picking | WMS |
| Handling units / pallets / licence plates | WMS |
| RF scanners or voice picking | WMS |
| 3PL operations, billing for storage/handling | WMS |
| Automated equipment (AS/RS, conveyors, AMRs) | WMS + WCS |
Small operations run ERP inventory only. Beyond a few thousand SKUs and a few pickers, a WMS pays for itself in labour alone.
The warehouse structure
Warehouse
└── Storage type (racking, bulk, cold store, hazmat, staging, returns)
└── Storage section (fast-moving zone, slow zone)
└── Storage bin A-01-02-3 (aisle-rack-level-position)
└── Quant the actual stock in that bin
A quant is the atomic unit: material + batch + stock category in one specific bin, with a quantity.
Handling units and licence plates
A handling unit (HU) / licence plate (LPN) is a physical package with its own barcode:
HU 00340123456789012345 (SSCC)
├── 24 × Product A, batch B2601
├── 12 × Product B, batch B2599
└── packed on pallet EUR1, gross weight 340 kg
Scanning one label moves everything inside. Nested HUs — cartons on a pallet, pallets in a container — are standard. The SSCC (Serial Shipping Container Code, GS1) is the global identifier and is what appears on the GS1-128 shipping label.
Inbound process
ASN (Advance Shipping Notice) received ──▶ expected receipt created
│
Truck arrives → dock appointment
│
Unload → count → scan
│
Goods receipt posted (ERP: stock + accounting)
│
Quality inspection (if required) → hold or release
│
PUT-AWAY: system determines destination bin
│
Confirm put-away → stock now in a specific bin
Put-away strategies
| Strategy | Rule |
|---|---|
| Fixed bin | Each material has a home bin |
| Next empty bin | First available |
| Near picking bin | Minimise travel to the pick face |
| Addition to existing stock | Consolidate with the same material/batch |
| Bulk storage | Full pallets to bulk area |
| Pallet type / capacity check | Only where it physically fits |
| Zone by velocity | Fast movers near the dispatch dock |
| Chaotic / random | System remembers; humans don’t need to. Maximises density |
Constraints the strategy must respect: weight limits, height, hazmat separation rules, temperature zones, food/non-food separation, and mixing rules (can two batches share a bin?).
Outbound process
Sales order ──▶ Delivery created ──▶ Wave/release
│
Pick task generation (bin, qty, route)
│
PICKING (RF, voice, pick-to-light, paper)
│
Staging → PACKING → HU creation → label
│
Loading → Goods issue posted (stock ↓, COGS)
│
Shipment → ASN sent to customer
Picking strategies
| Strategy | How | Best for |
|---|---|---|
| Discrete / order picking | One picker, one order, start to finish | Small operations, large orders |
| Batch picking | One picker, many orders, one trip | Many small orders |
| Zone picking | Picker owns a zone; order passes between zones | Large warehouses |
| Wave picking | Release a batch of orders together by criteria (carrier cut-off, route) | Scheduled dispatch |
| Cluster picking | Multiple order totes on one cart | E-commerce |
| Goods-to-person | Robots bring shelves to a stationary picker | High-volume automation |
Stock removal strategies
| Strategy | Rule |
|---|---|
| FIFO | Oldest goods receipt first |
| FEFO | First Expired, First Out — mandatory for pharma and food |
| LIFO | Newest first — rare, sometimes for bulk piles |
| Partial quantities first | Empty part-pallets before breaking full ones |
| Fixed bin | Always from the pick face |
| Large/small quantity split | Full pallets from bulk, cases from the pick face |
FEFO is a compliance requirement, not an optimisation. If you build for food, pharma, or chemicals, FEFO with expiry-date checking is table stakes, along with a minimum-remaining-shelf-life rule per customer (some retailers reject stock with less than 2/3 of its life left).
Replenishment
Moving stock from bulk storage to the pick face before it runs out:
- Min/max — when pick face drops below min, replenish to max
- Demand-driven — replenish for the next wave’s requirements
- Order-driven — triggered by a specific pick that will empty the bin
If replenishment fails, picking stops. It’s a classic hidden bottleneck.
Cross-docking
Goods go from inbound dock straight to outbound without being put away:
- Opportunistic — the system notices an inbound receipt matches an open order
- Planned — inbound is pre-allocated to outbound before it arrives
Saves put-away and picking labour entirely. Requires tight timing and good ASN data.
Task and labour management
warehouse_task(id, type, -- PUTAWAY | PICK | REPLENISH | COUNT | MOVE
source_bin, dest_bin, material, batch, quantity, handling_unit,
priority, assigned_to, status, queue,
created_at, started_at, confirmed_at,
planned_duration, actual_duration)
Tasks are dispatched to operators by queue, zone, and priority. Interleaving (combining a put-away with a nearby pick on the same trip) can cut travel time by 20–30%.
Labour management adds engineered standards: expected time per task type and distance, actual vs standard performance per operator, and productivity reporting. Sensitive to implement — it’s performance monitoring of individual workers, with the employee-relations and (in some jurisdictions) legal implications that carries.
Counting
- Cycle counting — continuous rolling counts by ABC frequency
- Zero-count — count when a bin is emptied by a pick. Nearly free
- Blind counting — the counter doesn’t see the expected quantity. Better data, slower
- Bin-level accuracy is the WMS metric; item-level accuracy is the ERP metric. They’re different and both matter
Integration with ERP
The boundary is the single most important design decision:
ERP WMS
─── ───
Purchase order ──────────▶ Expected receipt
◀────────── Receipt confirmation (qty, batch, HU)
Goods receipt posting
Delivery/shipment ──────────▶ Outbound order
◀────────── Pick confirmation, packed HUs, weights
Goods issue posting
Stock transfer ──────────▶ Move task
◀────────── Confirmation
◀────────── Adjustment (count difference)
Adjustment posting
Rules for this integration:
- The ERP owns the financial posting. The WMS confirms physical reality; the ERP books it.
- Idempotency on every message. Warehouse networks drop connections; messages get retried.
- The WMS must work offline for a while. Warehouses cannot stop because the ERP is down for patching. Queue and replay.
- Reconcile daily. WMS quantity per material/plant must equal ERP quantity. Publish the differences every morning.
- Decide who owns batch determination — usually the WMS, since it knows what’s physically in which bin.
- Handle partial confirmations. A pick of 100 that yields 97 must flow back correctly and adjust the delivery.
Automation
| Technology | Role |
|---|---|
| Barcode / GS1-128 / QR | The baseline |
| RFID | Bulk reading, apparel retail, high-value tracking |
| Voice picking | Hands-free, good accuracy |
| Pick-to-light / put-to-light | High-speed zones |
| AS/RS | Automated storage and retrieval cranes |
| AMR / AGV | Mobile robots |
| Conveyor + sorter | High-volume parcel |
| WCS / WES | Warehouse Control/Execution System — the real-time layer between WMS and the machines |
The WCS boundary matters: WMS decides what to do, WCS decides how the machine does it. Never put millisecond-level equipment control in the WMS.
Metrics
| Metric | Meaning |
|---|---|
| Lines picked per hour | Productivity |
| Pick accuracy | Errors per thousand picks |
| Dock-to-stock time | Receipt to available |
| Order cycle time | Release to shipped |
| OTIF | On time in full |
| Inventory accuracy (bin level) | Data quality |
| Space utilisation | Density |
| Cost per order/line | Economics |