Production Reference Public

FAQ & Troubleshooting

Help & Support FAQ & Troubleshooting The questions operators, supervisors, and administrators ask most often about the Production module — plus a lookup table of every user-facing…

Guide version: r1 Module version: 1.0.0 Updated: 2026-07-22 Estimated time: 17 min 1 views
Help & Support

FAQ & Troubleshooting

The questions operators, supervisors, and administrators ask most often about the Production module — plus a lookup table of every user-facing error and confirmation message, when it appears, and what to do about it.

ℹ️
Most problems in this module trace back to three things: a missing Bill of Materials, a finished good or component with no inventory variant, or an action attempted from the wrong status. If you are stuck, scan the Troubleshooting messages table for the exact wording you saw on screen.

Frequently asked questions

The first answer is expanded. Click any question to open it.

Confirming a Manufacturing Order requires a Bill of Materials. Even though the Bill of Materials field is Optional when you create the order, the Confirm Order action is blocked until a BOM is attached, because Confirm is what copies (snapshots) the BOM's components onto the order.

Message: “Select a bill of materials before confirming the order.” (bom_required_to_confirm)

What to do: Click Edit on the order (allowed while it is Draft), pick an active BOM in the Bill of Materials dropdown, Save, then click Confirm Order again. See Bill of Materials for how to build one first.

Stock is tracked against each item's default variant (items.default_variant_id). To produce the finished good, the module writes a positive stock movement against that default variant. If the finished good item has no default variant set in Inventory, there is nowhere to add the produced stock, so completion is refused.

Message: “The finished good has no inventory variant, so stock cannot be posted.” (mo_finished_good_no_variant)

What to do: Open the item in Inventory and give it a default variant, then return and click Mark as Done. See Getting Started → Prerequisites. Note that components without a default variant behave differently — they are silently skipped (no stock deducted), only the finished good blocks completion.

In Base Production, inventory only moves when a Manufacturing Order reaches Done. Creating, confirming, or starting an order has no stock effect:

  • Draft — nothing committed; no stock impact.
  • Confirmed — the BOM components are snapshotted (planned) onto the order, but no stock moves.
  • In Progress — records the actual start time only; no stock moves.
  • Done — this is the only step that posts stock: each component is consumed (flow -) and the finished good is produced (flow +).

What to do: Confirm the order actually reached Done (not just In Progress). If it is stuck in Confirmed or In Progress, click Mark as Done. See the Manufacturing Orders lifecycle.

⚠️
In the Advanced Manufacturing area, Material Requisitions & Issues are a consumption/costing log only — issuing materials there does not deduct Inventory stock at all. Adjust real stock separately in the Inventory module.

You tried a lifecycle action that isn't valid from the order's current status — for example confirming an order that is no longer Draft, starting one that isn't Confirmed, or completing one that is already Done or Cancelled.

Message: “This action is not allowed for the current order status.” (mo_invalid_status_transition) — also returned when you try to save a component line on an order that is no longer editable.

What to do: Reload the order to see its real status, then use only the buttons offered for that state. The allowed moves are:

Draft
Confirm / Edit / Cancel
Confirmed
Start / Done / Edit / Cancel
In Progress
Done / Cancel
Done
terminal — no actions
Cancelled
terminal — no actions

Two independent things must be true for a group to appear in the left sidebar: the module toggle must be on, and your role must hold the permission for at least one item in the group.

What's missingSymptomFix
module_production off No Production group; base pages and /production/* APIs return "not available". Admin enables Production in Settings → Manage Modules.
module_manufacturing off No separate Manufacturing group; /manufacturing/* APIs return "not available". Admin enables the Manufacturing sub-feature (it sits beneath the Production master toggle).
Permission not granted Group or specific item is hidden even though the module is on; opening the URL directly redirects instead of showing a 403. Admin grants the matching permission in the Role editor. See Permissions & Roles.
⚠️
Enabling module_production does not automatically enable module_manufacturing — they are separate flags. And module_manufacturing only takes effect while module_production is on. Because both access failures redirect (rather than showing an error), a missing menu can look like a broken link.

The Finished Good and Component pickers on a Manufacturing Order are sourced from your core Inventory items — specifically active items of type product. The module reads Inventory even when the Inventory UI is off, but the item must already exist there.

What to do:

  • Create the item in Inventory first (finished goods and every raw material/component).
  • Make sure its status is active and its type is product.
  • Give it a default variant so it can carry stock — required on the finished good, recommended on components (a component with no variant is skipped at completion).

See Getting Started → Prerequisites. In the Advanced Manufacturing requisition/issue forms, by contrast, Item Name is free text (not a catalog picker) — a different mechanism entirely.

No. Completion is irreversible. When an order reaches Done the module sets an internal stock_posted flag, records the produced quantity and actual end time, and marks each consumed component. Done is a terminal state.

The confirmation dialog warns you in advance: “Complete this order? Components will be consumed and the finished good produced in inventory. This cannot be undone.”
  • Trying to complete it again is refused — “This manufacturing order is already completed.” (mo_already_completed).
  • You cannot cancel a Done order.
  • Cancelling other (non-Done) states does not reverse any stock either.

What to do if you posted in error: make the correcting stock adjustment in the Inventory module. There is no in-app "un-complete" action.

The BOM snapshot at Confirm happens only once, and only if the order has zero component lines at that moment. If you manually added any component before confirming, the BOM is not snapshotted at all.

What to do: On the Components tab, click Add Component to add lines manually, or delete your manual lines and re-confirm on a Draft order that has no lines so the BOM copies over. Component lines stay editable through Draft, Confirmed, and In Progress. See Manufacturing Orders.

At Confirm, each component's Required Quantity is computed as:

Required Qty = BOM component qty × (Quantity to Produce ÷ BOM output quantity)

If the BOM's output quantity is 0 or missing, it is treated as 1, which inflates every component to the full per-unit quantity multiplied by your whole planned quantity.

What to do: Open the BOM and set its output quantity correctly (e.g. a recipe that yields 10 units should have output quantity 10). See Bill of Materials.

At completion, components whose item has no default variant (for example a service line) are silently skipped — no stock is deducted and their Consumed Quantity stays 0. Every stocked component is consumed for exactly its Required Quantity (its Consumed is then set equal to Required).

⚠️
There is no stock-availability / negative-stock check — completing an order can drive inventory negative if components are short. Verify on-hand balances before completing large runs.

What to do: If a component should have been consumed, give its item a default variant in Inventory before completing. See Manufacturing Orders.

Editing scope depends on status:

  • The header Edit button appears only while the order is Draft or Confirmed.
  • Component lines remain editable through In Progress as well.
  • Done and Cancelled orders cannot be edited at all.
  • Delete requires the production_delete permission; deleting an order soft-deletes it and its component lines, with no undo in the UI.

What to do: If you only need to fix a component quantity on an In Progress order, use the Components tab (still editable) rather than the header Edit button. If you lack the delete option entirely, ask an admin to grant production_delete. See Permissions & Roles.

Manufacturing Order references (MO-#####) derive from MAX(id)+1, so deleting orders can leave gaps. The reference is fixed at creation and never renumbered.

Advanced-area document numbers (Work Orders, BOMs, ECOs, QC Plans, Inspections, NCRs, CAPAs, Requisitions, Issues) use the prefixes set in Mfg Settings. Their next number is derived from the highest existing (non-deleted) number for that prefix, so:

  • Soft-deleting the latest record can cause a number to be reused.
  • Changing a prefix starts a fresh sequence at -000001; existing rows keep their old numbers and are not renumbered.

This is by design; gaps and the occasional reuse are expected.

No — that is how Material Requisitions & Issues works today. Recording a Material Issue does not:

  • deduct or update any Inventory stock,
  • increase the requisition line's Qty Issued (it stays 0, so Remaining doesn't change), or
  • advance the requisition's status.

Only Draft → Approved is automated (via the Approve link). The other statuses — Submitted, Issued, Partial, Completed, Cancelled — are valid values with badges and filters but have no built-in trigger.

What to do: Track fulfilment manually per your local procedure, and deduct real stock separately in the Inventory module.

In Quality Control, a measurement's Result is auto-computed from the parameter's Min/Max spec (a value below Min or above Max is FAIL, otherwise PASS). But the inspection's own Status and Overall Result are independent free-choice dropdowns — nothing rolls the per-measurement results up automatically.

ℹ️
If a parameter has no Min and no Max, every measured value is recorded as PASS — Target value and Tolerance % are not used in the check. Set Min/Max on measurement parameters you want auto-graded.

What to do: After recording measurements, edit the inspection and set its final Status and Overall Result to match reality (e.g. Failed / Fail). Then raise an NCR and, if needed, a CAPA from it.

The measurement form accepts only a numeric Measured Value (it is required and numeric); there is no input for a text value. So Visual, Attribute, and Functional parameters must still be given a numeric value to save a measurement.

What to do: Adopt a local numeric convention (for example 1 = pass, 0 = fail) and, if you want it auto-graded, set the parameter's Min/Max around your "good" value. Record the plain-language detail in the measurement Notes.

Correct — QC parameters cannot be edited. There is no edit action, only Add and Delete, and adding one reloads the whole page.

What to do: To change a parameter, delete it and re-add it with the corrected target/min/max/UOM.

The CAPA for NCR screen's New CAPA modal does not pre-fill the Related NCR. If you leave that dropdown unset, the CAPA is created without a link and won't show in that NCR's filtered list.

What to do: In the New CAPA modal, manually select the correct NCR in Related NCR before saving. See Quality Control → CAPA.

The dashboard's Expiring Documents panel uses a fixed 30-day window. The Expiry Warning (Days) value in Mfg Settings is stored, but the dashboard panel does not read it — changing the setting will not change what the panel shows.

What to do: Treat the dashboard panel as a fixed 30-day look-ahead. This is a known behaviour, not a fault.

No. The module helps you gather compliance evidence and stay audit-ready (quality records, inspections, NCR/CAPA, compliance-document expiry tracking), but it does not by itself grant ISO certification, GMP certification, FDA product approval, or product registration. Those are decisions made by regulators and accredited bodies and require your own SOPs, qualified staff, and validated processes.

A granted API scope is not enough on its own. Even with production:read or manufacturing:read, the endpoint returns 404 "module_unavailable" if the matching module toggle (module_production / module_manufacturing) is off for the tenant. The 404 deliberately hides the feature's existence rather than returning a 403.

What to do: Ask an admin to confirm the module toggle is enabled, then retry. The APIs are strictly read-only and GET-only — any non-GET verb returns 405. See Read-only API.


Troubleshooting messages

Every user-facing message you may see, when it appears, and what to do. Confirmation dialogs are expected prompts (not errors) — click through them to proceed.

Manufacturing Orders — validation & lifecycle

MessageWhen it appearsWhat to do
“Select a bill of materials before confirming the order.”
bom_required_to_confirm
You clicked Confirm Order on an order that has no BOM attached. Edit the order, choose an active BOM, Save, then Confirm again. See Manufacturing Orders.
“Add at least one component before completing the order.”
mo_no_components_to_post
You clicked Mark as Done on an order that has zero component lines. On the Components tab add at least one line (or confirm a Draft order with an attached BOM so components snapshot in), then complete.
“The finished good has no inventory variant, so stock cannot be posted.”
mo_finished_good_no_variant
You clicked Mark as Done but the finished good item has no default variant. Set a default variant on the item in Inventory, then complete. See Prerequisites.
“This manufacturing order is already completed.”
mo_already_completed
You tried to complete an order that is already Done (stock already posted). None needed — completion is irreversible. Make any correction in Inventory.
“This action is not allowed for the current order status.”
mo_invalid_status_transition
A lifecycle action was attempted from an invalid status (e.g. Start on a non-Confirmed order), or a component was saved on a non-editable order. Reload to see the real status; use only the buttons offered for that state.
“Manufacturing order confirmed. Components have been planned from the bill of materials.”
manufacturing_order_confirmed
Confirm succeeded — the BOM components were snapshotted onto the order. Success. Review the Components tab; add/adjust lines while editable.
“Production started for this manufacturing order.”
manufacturing_order_started
Start Production succeeded; the order is now In Progress and the actual start time is recorded. Success. Complete the order when output is finished.
“Manufacturing order completed. Stock movements have been posted to inventory.”
manufacturing_order_completed
Completion succeeded — components consumed, finished good produced. Success. On-hand balances in Inventory are now updated.
“Manufacturing order cancelled.”
manufacturing_order_cancelled
Cancel succeeded on a non-Done order. Success. Note: cancellation does not reverse any previously posted stock.
“This field is required.”
field_required
You left a required field empty — Finished Good and Quantity to Produce on the order; Component and Required Quantity on a component line. Fill the highlighted field(s) and Save again.

Save, delete & permission — used across the module

MessageWhen it appearsWhat to do
“Record saved successfully.”
record_saved
A create/update (order, component, UOM, QC plan, parameter, inspection, NCR, CAPA, requisition, line item, issue) succeeded. Success. The list or table refreshes.
“Record deleted successfully.”
record_deleted
A soft-delete succeeded (record hidden with deleted=1). Success. Deletes are soft; the record leaves all lists.
“This record cannot be deleted.”
record_cannot_be_deleted
A delete failed (record in use / delete refused). Remove dependent records or retry; contact an admin if it persists.
“An error occurred. Please try again.”
error_occurred
A generic save failure, or a lifecycle action called with a missing/invalid order id. Retry; if it repeats, reopen the record from the list and try again.
Standard delete-confirmation dialog
delete_confirmation
You clicked a delete action — a confirmation prompt appears before anything is removed. Confirm to delete, or cancel to keep the record.
No-permission response / silent redirect You lack the permission for a gated action, or the module is disabled — page-level access redirects rather than showing a 403. Ask an admin to enable the module and grant the permission. See Permissions & Roles.

Confirmation dialogs (Manufacturing Orders)

DialogWhen it appearsWhat to do
“Confirm this order? Components will be planned from the bill of materials.” You clicked Confirm Order. Accept to snapshot the BOM components and move to Confirmed.
“Complete this order? Components will be consumed and the finished good produced in inventory. This cannot be undone.” You clicked Mark as Done. Accept only when output is final — this posts stock and is irreversible.
“Cancel this manufacturing order?” You clicked Cancel Order (any non-Done state). Accept to cancel. Cancellation does not reverse posted stock.

Advanced Manufacturing — Settings, UOM, Quality & Requisitions

MessageWhen it appearsWhat to do
“Settings saved successfully” You saved the Mfg Settings form (green toast, 10 seconds). Success. New prefixes/toggles are persisted.
“Measurement recorded – PASS” / “Measurement recorded – FAIL” You saved a measurement; the result is auto-computed against the parameter's Min/Max. Success. Remember the inspection Status/Overall Result do not update automatically — set them by editing the inspection.
“No parameters defined for this inspection's QC plan.” You opened Record Measurements for an inspection whose plan has no parameters. Add parameters to the QC plan first, then record measurements.
“Requisition approved” You clicked the Approve link on a Draft requisition (no confirmation — approves immediately). Success. The Issue Materials button becomes available. There is no revert-to-draft action.
“Material issued successfully” You saved a Material Issue. Success — but it is a costing/consumption log only. It does not deduct Inventory stock or update the requisition. Adjust stock separately.
“This field is required.”
field_required
A required field was empty — e.g. UOM Name/Symbol; QC Plan Code/Plan Name, inspection QC Plan/Date, NCR Description, CAPA Title/Description; requisition Item Name/Required Quantity/UoM. Fill the highlighted field(s) and Save again.

Operations tab & empty states

ℹ️
The Manufacturing Order Operations tab is read-only and driven by the BOM's operations. If the order has no BOM or no operations it shows “No components defined yet.” (no_components_defined) — a slightly misleading label for operations. Add routing operations on the BOM to populate it.

Read-only API errors

Only relevant if you or an integration are calling the Production / Manufacturing read-only API.

Message (HTTP / code)When it appearsWhat to do
“This feature is not available.”
404 · module_unavailable
The required module toggle (module_production / module_manufacturing) is off — even with a valid scope. Have an admin enable the module toggle for the tenant, then retry.
“Method not allowed.”
405 · invalid_request
You used a non-GET verb; the APIs are strictly read-only (allowed = GET). Use GET only. All writes happen through the web UI.
“Unknown <param> filter.”
422 · invalid_filter
A whitelisted filter (e.g. status/priority) received a value not in the allowed list. Use a value from the allowed list returned in the error.
“Both start_date and end_date are required together.”
422 · invalid_filter
You supplied only one side of a date range. Send both start_date and end_date.
“Date filters must be valid YYYY-MM-DD values.”
422 · invalid_filter
A date was malformed or impossible (e.g. 2026-02-31). Use real calendar dates in YYYY-MM-DD form.
“end_date must not be earlier than start_date.”
422 · invalid_filter
The range is reversed. Ensure end_datestart_date.
“…not found.”
404 (per resource, e.g. order_not_found, inspection_not_found)
The requested id doesn't exist — or is hidden because access isn't allowed (404 hides existence). Check the id; confirm the module is enabled and you hold the permit/scope.
403 forbidden (End-User API) / scope authorization failure (Client API) The staff caller lacks the endpoint's web permit, or the client token lacks production:read/manufacturing:read. Grant the web permission (End-User) or the OAuth scope (Client). Admins bypass the permit.

Status colour reference

When a message points you at a record's status, use this legend to read the coloured badges.

Manufacturing Order status

DraftNew, not confirmed; editable.
ConfirmedCommitted; components planned from the BOM.
In ProgressProduction physically started.
DoneCompleted; stock posted (terminal).
CancelledAbandoned (terminal); no stock reversed.

Inspection & measurement status

PendingInspection not yet started.
In ProgressInspection underway.
Passed / PassInspection or measurement within spec.
Failed / FailJudged failed / out of spec.
ConditionalAccepted with conditions.

Requisition status

DraftNew; items editable; can be Approved.
SubmittedEnum value; no action sets it in this controller.
ApprovedApproved; Issue Materials available.
IssuedEnum value; no auto-transition.
PartialPartially issued; Issue Materials still available.
CompletedFully completed (enum value; no auto-transition).
CancelledCancelled (enum value; no cancel action wired).
⚠️
Requisition badge colours can differ between the list and the detail page (for example Approved is blue in the list but green on the detail view). Read the label text, not just the colour.

Still stuck?

Was this guide helpful?

Report a content problem