Odoo Manufacturing · intermediate · 10 min read
Manufacturing Orders Explained
How Odoo manufacturing orders move from draft to done: reservation, work orders, production posting, backorders, scrap, and shop-floor execution patterns.
Last reviewed 2026-07-30 · Estimated effort: 2–6 weeks typical implementation slice
Table of contents
A manufacturing order in Odoo is the production run for a quantity of a finished product: it explodes the BoM, reserves or consumes components, records output, and posts inventory moves when marked done.
MOs can be created manually, from reorder rules, from sales (MTO), or from procurement rules. State progression (draft, confirmed, in progress, done) should mirror shop-floor reality — not admin convenience.
Work orders and work centers add operation-level tracking when routings exist. Without routings, operators produce in one step from the MO form or barcode views.
Teams new to Odoo often confirm MOs before components exist in stock, then blame the system when reservation fails or partial production creates confusing backorders.
This article walks through MO lifecycle decisions that keep inventory, costing, and shop-floor screens aligned.
MOs specify product, quantity, BoM, and optionally routing. Confirmation triggers component need calculation and reservation based on stock rules and locations.
Planned start dates help sequencing but do not replace component availability checks. For make-to-order, trace which sales order or procurement rule originated the MO so planners can prioritize.
- ▸Manual MO for batch builds or rework
- ▸Replenishment MO from orderpoints or MTS rules
- ▸MTO MO spawned from confirmed sales demand
- ▸Subcontract MO variants follow vendor-specific flows
Odoo reserves components from configured stock locations when the MO is confirmed or when you explicitly check availability. Shortages should surface early — not at pick time.
Multi-level BoMs may require child MOs or purchase orders before the parent can start. Procurement and inventory articles cover how routes propagate demand.
When a routing exists, Odoo splits the MO into work orders per operation with expected duration and work center load. Operators start, pause, and finish work orders from the shop-floor interface or barcode app.
Honest operation times improve capacity planning views. Garbage defaults make planning screens useless. Link Performance guidance when large MO lists or work order screens slow under peak load.
Recording produced quantity posts finished goods into stock (or WIP locations if configured). Scrap moves consume extra components or post scrap locations — define whether scrap is expected in BoM or ad hoc on the MO.
Partial production creates backorder MOs for remaining quantity unless you reduce the order. Train operators on which path your business uses to avoid duplicate builds.
- ✓Standardize MO confirmation rules: who checks availability and who releases to the floor.
- ✓Use barcode or shop-floor views if operators live on tablets — not full backend forms.
- ✓Define scrap recording at MO close versus at operation level for routings.
- ✓Review backorder behavior after first month of live MO volume.
- ✓Tie MO priority to sales promise dates for MTO lines.
- ✓Cross-link Performance when MO and work order lists degrade at scale.
- !Confirming MOs without locations and routes configured for components.
- !Editing BoM on the MO ad hoc without updating master BoM — causing repeat errors.
- !Ignoring work order times so capacity planning shows false free capacity.
- !Marking MO done with zero component consumption when picks happened offline.
- !Creating duplicate MOs for the same sales line because MTO rules were duplicated.
- !Closing MOs with open work orders still in progress.
Manufacturing orders connect BoM theory to stock reality — reservation, execution, and closing must match floor discipline.
Next, run a pilot MO with real components and operators on the screen they will use daily.
Demand
SO / forecast.
Plan
BoM and procurement.
Produce
MO execution.
Finish
FG putaway and cost.
Trigger
Business event starts the flow.
Execute
Operate in the system of record.
Validate
Check outcomes and exceptions.
Close
Reconcile and hand off.
Frequently asked questions
Can I produce less than the MO quantity?
Yes. Partial production typically leaves a backorder MO for the remainder or closes the MO at the produced quantity depending on settings and user choice. Document the standard for your plant.
Do I need routings for every product?
No. Simple assembly can use BoM-only MOs with a single produce action. Add routings when operation-level tracking, work center load, or step-by-step shop-floor control adds value.
How do MOs relate to pick lists?
Component consumption can be driven from MO component list picks or integrated with warehouse pick operations depending on configuration. Align with inventory article location strategy.
What happens to costing when I reopen a done MO?
Reopening posted MOs affects stock valuation and variances. Restrict reopen permissions and prefer adjustment MOs for rework when possible.
Related articles
Understanding Bills of Materials in Odoo
How to structure Odoo BoMs for single-level, multi-level, phantom, and subcontracting builds — with quantities, UoM, revisions, and costing implications.
View →Inventory Control in Manufacturing
Locations, routes, lots, reservation, and WIP handling in Odoo so manufacturing can find components and post finished goods where sales and shipping expect them.
View →Subcontracting in Odoo
How Odoo subcontracting moves components to vendors, creates service purchase orders, receives finished goods, and keeps stock and costing aligned.
View →Manufacturing Performance Metrics
KPIs and reporting in Odoo for on-time delivery, scrap, WIP aging, component shortages, and work center load — with owners and actionable thresholds.
View →Tuning shop-floor execution in Odoo?
Describe your routing depth, barcode use, and partial production habits — we will suggest MO and work order setup.
