- Home
- Blog
- Worked Examples
- Building a Multi-Level Assembly Routing in EDGEBIC
A multi-level assembly in EDGEBIC by User Solutions is modeled the way a real bill of materials works: the sub-assembly gets its own product and routing, and the parent references it as a material step, so the engine can build or net the component and then schedule the final assembly after it is ready. This walkthrough builds a two-level product (a sub-frame that feeds a finished cabinet) and schedules both. It is part of our worked examples series. The numbers here are illustrative, chosen to make the structure clear; the routing mechanics they demonstrate are the documented mechanics.
The Setup: A Cabinet Built From a Welded Sub-Frame
Lakeside Enclosures makes a control cabinet, CAB-100, whose core is a welded steel sub-frame, FRAME-S. The sub-frame is worth making as its own item: it is used across several cabinet models, and the shop likes to keep a few on the shelf. So the product structure is two levels:
- FRAME-S (sub-assembly): cut and weld, its own routing, sometimes stocked.
- CAB-100 (finished good): consume one FRAME-S, then mount, wire, and inspect.
Two products, two bills of routing, one reference linking them. That is a multi-level assembly.
Step 1: Build the Sub-Assembly's Own Routing
Dana, the planner, first sets up FRAME-S as a normal product. She creates a bill of routing for it and adds work center steps the ordinary way:
| Seq | Work center | Per-unit | Setup | Notes |
|---|---|---|---|---|
| 10 | Saw | 0.20 h | 0.25 h | Cut blanks |
| 20 | Weld | 0.40 h | 0.50 h | Weld sub-frame |
Each step names a real work center, so each consumes machine capacity and will appear as a bar on the Gantt. FRAME-S is now a fully schedulable product in its own right: you could raise a manufacturing order for it and run it exactly like any other job. That independence is the reason to model it separately rather than burying its two operations inside the cabinet routing.
Step 2: Build the Parent Routing With a Material Step
Now Dana creates the bill of routing for CAB-100. The finished cabinet's routing has one operation the others do not: it consumes a FRAME-S. She builds it in the BOR grid:
- Material step for the sub-frame. She clicks Add Step, sets the sequence, and leaves the Work Center blank. She marks the step as a product (the Is Product flag), sets the Product to FRAME-S, and sets Quantity to 1 (one sub-frame per cabinet). She links its Next In Seq Id to the first assembly step. Because the work center is blank, the engine recognizes this as a material step: it consumes no machine time and gets an instant completion, while inventory netting handles the FRAME-S issue.
- Assembly work center steps. She then adds the real operations that build the cabinet around the sub-frame:
| Seq | Work center | Per-unit | Setup |
|---|---|---|---|
| 10 | (material: 1 x FRAME-S) | 0 | 0 |
| 20 | Assembly | 0.50 h | 0.30 h |
| 30 | Wiring | 0.40 h | 0.20 h |
| 40 | Inspect | 0.10 h | 0 |
She links the chain (material to assembly to wiring to inspect) and saves. CAB-100 now has a routing that says, in effect, "take one sub-frame, then assemble, wire, and inspect."
Step 3: Schedule and Watch the Levels Resolve
How the two levels schedule depends on whether the sub-frame is stocked. Both paths are worth seeing.
Path A, sub-frame from stock. FRAME-S is a stocked product with 20 on hand. An order for 15 cabinets is scheduled. When the engine hits CAB-100's material step, inventory netting satisfies it from the 20 on-hand sub-frames: 15 are issued, no machine time is scheduled to build them, and the cabinet's assembly step starts as soon as the material is available (immediately, since the stock exists). The Gantt shows only the cabinet's assembly, wiring, and inspection bars; the sub-frame contributes an inventory issue, not a machine bar. This is consume-from-stock netting at work.
Path B, sub-frame built to order. FRAME-S has zero on hand. Now the shortfall must be produced, so a FRAME-S build runs its own saw-and-weld routing first, and the cabinet's assembly step waits until the sub-frames are complete. The engine sequences the producer ahead of the consumer in the same run, so the stock the FRAME-S build creates is visible to the cabinet order that wants it. The Gantt shows the sub-frame's saw and weld bars, then the cabinet's assembly bars starting after them.
Either way, the assembly step never starts before its sub-frame exists. That is the whole promise of a multi-level routing: the parent cannot consume a component that has not been made or netted.
Where the Work Lands (Path B, Illustrative)
For a build-to-order run of 15 cabinets with no sub-frames on hand:
| Operation | Level | Roughly |
|---|---|---|
| FRAME-S saw | Sub-assembly | Day 1 morning |
| FRAME-S weld | Sub-assembly | Day 1 afternoon |
| CAB-100 assembly | Parent | Day 2 (after sub-frames ready) |
| CAB-100 wiring | Parent | Day 2 to 3 |
| CAB-100 inspect | Parent | Day 3 |
The sub-frame level clears first because the parent's assembly step depends on it through the material link. Cut and weld the frames, then build the cabinets: the engine derives that order from the structure, not from anyone sequencing it by hand.
What This Build Proves
- A sub-assembly is its own product and routing. Modeling it separately lets you stock it, quote it, and reuse it across parents.
- The parent references the component as a material step. Blank work center, marked as a product, quantity per parent unit, linked into the chain.
- Material steps consume components, not machine time. They complete instantly on the machine axis while netting handles the inventory issue.
- Stocked components net; short components build. Netting satisfies the parent from the shelf when it can, and triggers a build only for the shortfall.
- The parent never consumes what does not exist. Assembly waits for the sub-frame, and the producer is sequenced ahead of the consumer.
Variations Worth Trying
Stock the sub-frame deliberately. Set a reorder point and reorder quantity on FRAME-S so it replenishes to the shelf on its own cycle, decoupling sub-frame production from cabinet demand. That make-to-stock loop has its own replenishment walkthrough.
Add a third level. If the sub-frame itself consumes a machined bracket that you also make in-house, give the bracket its own product and routing and reference it as a material step inside FRAME-S. The same pattern nests to as many levels as your product needs.
Outsource the sub-frame. If the sub-frame is purchased or sent out, model it with a supplier and lead time, or add transit days on the step so the parent waits the right number of days for it to arrive. Shipping a step out to a plating vendor and back works that transit-days setup through in full, including why inventing a fake work center for the vendor distorts the promise date.
The Bigger Point: Structure Beats a Flattened Routing
Flattening a multi-level product into one long routing works until you want to stock the sub-assembly, quote it, or reuse it, at which point the flattened version fights you. Modeling the real levels, a component with its own routing referenced by a material step, gives the scheduling engine the dependency it needs to sequence build-before-consume automatically, and gives inventory netting the hook it needs to satisfy demand from stock. The structure does the work so you do not have to.
User Solutions has built that discipline into scheduling tools since 1991, for operations with deep product structures: the US Navy, GE, BAE Systems, and Cummins among them. EDGEBIC carries that lineage into a modern engine. If you are moving from an older setup, the complete guide maps the full data model.
Bring your deepest product structure to a demo. Contact us and we will build its multi-level routing against your own data, or read the greenfield setup walkthrough to see a single-level routing built from an empty database first.
You give the sub-assembly its own product record and its own bill of routing, then reference it from the parent as a material step. In the parent's routing you add a step with the work center left blank, mark it as a product, set the component product and the quantity consumed per parent unit, and link it to the downstream assembly step. The scheduler treats a blank-work-center step as material: it consumes no machine capacity, and inventory netting issues the component when the parent needs it.
It sequences so the component is available when the parent's assembly step needs it, either from stock or from a build. If the sub-assembly is built to stock, netting satisfies the parent's material step from on-hand and no machine time is added for it. If it must be built, the sub-assembly's own manufacturing order runs its routing first, and the parent's assembly step starts after the component is ready. Producing before consuming in the same window is exactly how consume-from-stock netting orders the two.
A work center step consumes machine time and appears on the Gantt as a bar with hours; a material step consumes a component and takes effectively no machine time. You create a material step by leaving the work center blank, marking the step as a product, and naming the component and quantity per parent unit. The engine recognizes a blank or zero work center as material and gives it an instant completion, while inventory netting handles the consume transaction against on-hand stock.
Expert Q&A: Deep Dive
Q: My finished product has a welded sub-frame that we make in-house. Do I put the sub-frame's operations inside the finished product's routing, or separately?
A: Separately, as its own product and routing, then reference it in the finished product as a material step. Keeping the sub-frame's operations in their own bill of routing means you can build it to stock, quote it independently, and reuse it across several finished products without duplicating the steps. The finished product's routing just carries a material step naming the sub-frame and the quantity per unit, plus the final assembly work center step. This mirrors a real multi-level bill of materials rather than flattening everything into one long routing.
Q: If I keep 20 sub-assemblies on the shelf and an order needs 15, does the scheduler still book machine time to build them?
A: No. With inventory netting, the parent's material step for the sub-assembly is satisfied from the 20 on hand, so 15 are issued from stock and no machine time is scheduled for them. Only if demand exceeds available stock does a real build get triggered for the shortfall. That is the whole point of modeling the sub-assembly as a stocked product with a material step: the engine nets demand against the shelf before it schedules a single hour, so you do not rebuild what you already have.
Frequently Asked Questions
Ready to Transform Your Production Scheduling?
User Solutions has been helping manufacturers optimize their production schedules for over 35 years. One-time license, 5-day implementation.

User Solutions Team
Manufacturing Software Experts
User Solutions has been developing production planning and scheduling software for manufacturers since 1991. Our team combines 35+ years of manufacturing software expertise with deep industry knowledge to help factories optimize their operations.
Share this article
Related Articles
A Stock Build and a Customer Order Share One Machine: The First Run
A first schedule run walkthrough in EDGEBIC: two jobs collide on one laser, a holiday costs a day, and the furnace turns out to own three weeks of the calendar.
An OEE Week on One Machine: 40 Hours In, 65.5% Out
A worked OEE calculation example: one CNC machine, 40 available hours, one lost day, and how availability, performance, and quality multiply out to 65.5%.
Earned Value Mid-Job: Ahead of Schedule and Over Budget at Once
A worked earned value example on a five-step job: BAC 50 hours, AC 55, SPI 1.09 and CPI 0.91, and what to do when the two indices point opposite ways.
