By Isaac Muthui, CEO, Tamalaki Business Network Ltd. Originally published at factoraerp.com.
In food manufacturing ERPs, packaging is often treated as a consumable quantity: "issue 2 rolls of labels." That model fails the moment two SKUs share a line. The operational risk is not running out of labels. It is starting a pack run with the wrong artwork version, the wrong lot coder settings, or a leftover roll from the previous product.
This piece is for builders modelling packaging BOMs, artwork versions and pack-line release. The factory-floor checklist behind it lives on the FactoraERP blog (canonical link above).
The domain objects you need
At minimum:
- FinishedGoodsSKU — the sellable product / pack size.
- LabelArtwork — a versioned document (revision, effective date, obsolete date, approved-by).
-
PackagingComponent — the physical label (or sleeve/carton) stock item, linked to one current
LabelArtwork. - ProductionOrder — references SKU, batch/lot, planned quantity.
- PackagingBOM — which packaging components (and quantities) the order may consume.
- LabelIssue — store issue of specific label lots to a line / order.
-
FirstOffCheck — recorded accept/reject before
pack_statusbecomesrunning.
Sketch:
SKU 1---* LabelArtwork (versions; one current)
SKU 1---1 PackagingBOM *---* PackagingComponent
ProductionOrder -> SKU, batch_code, date_codes
ProductionOrder 1---* LabelIssue (component_lot, qty)
ProductionOrder 1---0..1 FirstOffCheck (passed_at, checked_by)
Rule: wrong label SKU cannot start
Encode the checklist as preconditions, not as a PDF attachment:
artwork.status == approved && artwork.id == sku.current_artwork_id- Packaging BOM line for labels resolves to that artwork's component
- Issued label lots belong to that component (scanner / lot pick)
- No open issues of other SKU label components on the same line resource
- Coder payload (
batch_code, manufacture/expiry) matches the production order -
first_off.passed == truebeforeline.pack_stateleavessetup
If any gate fails, the UI (and API) should refuse start_packing, not show a warning toast operators click through.
Lot coding belongs on the batch, not only on the printer
Store the intended codes on the production order / batch record, then push them to the coder integration or print them on the operator sheet. After first-off, store the observed codes from the sample packs. Mismatch = hard stop.
That identity is what later powers recall queries: "which outbound shipments contain batch X?" If the pack never received the batch code you think it did, your recall graph is fiction.
Packaging BOM as a control plane
Treat labels like controlled ingredients:
- Issue against the order (not free-floor stock)
- Backflush or consume only the SKU's component
- Quarantine misprinted finished goods with a status production cannot ship
This mirrors goods-receipt holds on the inbound side and QA holds on the outbound side: status must match physical location.
What not to overbuild
You do not need a full PLM on day one. You do need:
- Versioned artwork with a single "current" pointer per SKU
- Hard link from packaging stock item → artwork
- Line clearance event that clears foreign label issues
- First-off gate before full speed
Paper checklists work for tiny plants. Software earns its keep when SKU count, revisions and shifts outgrow the notebook—and when "the spare roll under the machine" keeps defeating your SOPs.
Isaac Muthui, CEO, Tamalaki Business Network Ltd
Top comments (0)