WMS Logic for Complex Bundles: The Nested BOM
Definition
A Nested Bill of Materials (BOM) represents assemblies composed of sub-assemblies and raw components; configuring ERP/WMS logic for nested BOMs ensures correct reservations, picks, and assembly while preventing duplicate or 'ghost' inventory.
Overview
Overview
The Nested Bill of Materials (BOM) models a multi-level product structure in which a top-level finished good (for example, a "Starter Kit") contains sub-assemblies that themselves contain components. In warehouse execution this requires coordinated BOM explosion, reservation/allocation, pick-task creation across multiple zones, and an assembly/kit transaction so that inventory is not double-counted or left in a "ghost inventory" state where availability misrepresents reality.
Key concepts to configure
- BOM types: Distinguish between "phantom" (virtual grouping, no physical assembly required), "kit" (picked and packed as a group), and "assembly" (components are put together in a work area). For nested BOMs you will commonly use non-phantom BOMs for physical sub-assemblies and kit/assembly BOMs for the top-level pack.
- Reservation model: Use component-level reservations rather than only reserving the top-level SKU. Reservations must update committed quantities in inventory immediately and atomically to avoid double allocation.
- Zone-centric rules: Define allocation priorities per zone (e.g., pick-face first, bulk second, kitting/assembly zone third) and enforce location-level reservation logic.
- Transaction atomicity & locks: Ensure allocation and decrement operations are wrapped in transactional workflows to avoid race conditions and ghost inventory when concurrent orders or replenishments occur.
- Integration: ERP and WMS must share inventory state via synchronous reservation APIs or event-driven messages to maintain a single source of truth.
Configuration steps (practical)
- Model the nested BOM hierarchy: In the ERP/WMS BOM master, define the Starter Kit as level-1 with explicit links to sub-assemblies (level-2), and list each level-2 sub-assembly's component SKUs (level-3). Specify per-node attributes: "requires assembly", "pick as component", "phantom child" etc.
- Set BOM processing mode: For a Starter Kit that is assembled before shipping, set top-level as "assemble-to-order" or "kit-assembly". For components that are never physically assembled (virtual), mark them as "phantom" so the system simply reserves components directly.
- Define allocation priorities and zone rules: Configure location priority rules—e.g., pick-face (zone A) > bulk storage (zone B) > kitting/assembly (zone C). Map replenishment and pick strategies accordingly.
- Enable component-level reservation and BOM explosion: On sales order confirmation, enable automatic BOM explosion to derive a component reservation list. Reservation logic should create committed inventory records on the component locations selected by prioritization rules; the top-level SKU may be reserved as a "virtual" placeholder only if you maintain component reservations.
- Implement pick/transfer tasks: Configure the WMS task engine to generate separate pick tasks per zone for the components. Where components live in multiple zones, create transfer-to-kitting tasks to consolidate parts into the assembly zone before kit build.
- Assemble transaction and consumption: Set up a BOM consumption transaction that consumes committed component inventory and creates a finished Kit quantity in the kitting zone or finished goods location. This transaction must decrement component committed/on-hand quantities and increment top-level on-hand only after successful assembly.
- Shipping allocation & finalization: Reserve (or release) the assembled Kit for the sales order and generate pick/pack tasks for the finished-good location. Ensure the shipping pick consumes the kit on-hand and posts final outbound transactions.
Example scenario
Starter Kit SKU SK-100 contains Sub-Assembly SA-10 and Item C. SA-10 contains Item A and Item B. Locations: pick-face (Zone A) holds Item B, bulk (Zone B) holds Item A, and kitting area (Zone C) holds SA-10 inventory or is the assembly point.
- Order placed for SK-100 → ERP/WMS triggers BOM explosion: SK-100 → SA-10 + Item C; SA-10 → Item A + Item B.
- Reservation engine selects Item B from Zone A (pick-face) and Item A from Zone B (bulk) per priority rules; Item C reserved where it resides. Reservations are written as committed quantities at the location level immediately.
- Pick tasks created: pick Item B from Zone A and Item A from Zone B; transfer tasks created to move picked quantities to Zone C kitting area.
- Once components arrive in kitting, a kit-assembly transaction consumes the component committed quantities and produces SK-100 in kitting stock. The consumption operation clears component commitments and updates on-hand counts; the produced kit gets an available-on-hand increment and is reserved against the sales order.
- Final shipping picks remove the kit from inventory and post outbound shipments.
Preventing ghost inventory
- Immediate and atomic commitments: Reservation must set committed quantities at the exact location chosen and lock those inventory records. Delayed or batched reservations create windows where availability mismatches actuals.
- Single-source writes: Ensure only one system (either WMS or ERP) performs the authoritative reservation write. If both systems write, implement a reconciliation or master/slave pattern to avoid overwrites.
- Use build-confirm transactions: Only after the kitting/assembly confirmation should the system clear component commitments and increment finished-good inventory. Unconfirmed assemblies should not show finished-good on-hand.
- Handle partial shortages sensibly: If some components are unavailable, the system should allow partial allocation rules or backorder the kit rather than creating phantom top-level reservations that cannot be fulfilled.
- Replenishment and cycle count rules: Replenishment and cycle counts should respect committed quantities and not move stock that is already committed to avoid accidental double use.
Common pitfalls and mitigations
- Double-reserving components: Occurs when top-level reservation and component reservation both decrement available stock without coordination. Mitigate by reserving only components and treating the top-level as virtual until assembly completion.
- Race conditions during high concurrency: Use database-level locks or optimistic concurrency with conflict resolution for reservation writes.
- Misconfigured phantom nodes: Marking an actually-assembled sub-assembly as phantom will bypass necessary assembly transactions and create inventory mismatches. Review BOM node attributes carefully.
- Broken integration between ERP and WMS: Ensure reservation events and confirmations are synchronous or reliably queued; otherwise the WMS may pick items the ERP still shows as available, creating ghost allocations.
Best practices
- Document BOM processes and define explicit assembly vs. kit vs. phantom behaviors.
- Model location priority and replenishment rules to reflect physical workflows.
- Implement atomic reservation/consumption transactions and make WMS the execution authority for physical inventory movements.
- Use test scenarios with concurrent orders and simulated replenishment to validate against ghost inventory outcomes.
- Monitor committed vs. available dashboards and reconcile via regular cycle counts and exception workflows.
With correct BOM modeling, component-level reservations, transactional assembly confirmation, and tight ERP/WMS integration, nested BOMs for Starter Kits can be executed across multiple zones without creating ghost inventory while preserving accurate availability and fulfillment performance.
More from this term
Looking For A 3PL?
Compare warehouses on Racklify and find the right logistics partner for your business.
