DEV Community

Isaac Mwendwa Muthui
Isaac Mwendwa Muthui

Posted on Originally published at factoraerp.com

Model Label and Artwork Versions So the Wrong SKU Cannot Start Packing

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_status becomes running.

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)
Enter fullscreen mode Exit fullscreen mode

Rule: wrong label SKU cannot start

Encode the checklist as preconditions, not as a PDF attachment:

  1. artwork.status == approved && artwork.id == sku.current_artwork_id
  2. Packaging BOM line for labels resolves to that artwork's component
  3. Issued label lots belong to that component (scanner / lot pick)
  4. No open issues of other SKU label components on the same line resource
  5. Coder payload (batch_code, manufacture/expiry) matches the production order
  6. first_off.passed == true before line.pack_state leaves setup

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)