Odoo: Create a Manufacturing Order from a Sales Order
odoo sales order to manufacturing order
Also searched as
- odoo create manufacturing order from sales order automatically
- odoo make to order manufacturing route
- odoo sales order does not create manufacturing order
- odoo replenish on order mto manufacture
Short answer
To make confirming an Odoo sales order create a manufacturing order, give the product a Bill of Materials of type Manufacture this product and set both the Manufacture and Replenish on Order (MTO) routes on the product. When the order is confirmed, the delivery demand triggers a procurement, the Manufacture rule fires, and an MO is created with the sales order as its source.
Applies to: Odoo 16, 17, 18 and later, Community and Enterprise. Menu names shift slightly between versions; the route logic is the same.
How to set up sales order to manufacturing order
- 1Install the Sales, Inventory and Manufacturing apps. In Inventory > Configuration > Settings, turn on Multi-Step Routes if you want to see and use routes on products.
- 2Create the product (Sales > Products). Make sure it is a goods product that tracks inventory, so Odoo generates stock moves for it.
- 3Create a Bill of Materials in Manufacturing > Operations > Bills of Materials (menu path varies by version) with BoM Type set to Manufacture this product, and add the components and quantities.
- 4Open the product, go to the Inventory tab and tick the Manufacture route. Then tick Replenish on Order (MTO). If MTO is not listed, unarchive it under Inventory > Configuration > Routes (use the Archived filter).
- 5Check the warehouse under Inventory > Configuration > Warehouses: Manufacture must be enabled and the manufacturing steps chosen (one step, two or three).
- 6Create a quotation for the product and confirm it. A Manufacturing smart button appears on the sales order, and the MO carries the sales order number in its Source field.
- 7Open the MO, confirm it, check component availability, then produce it. The finished goods reserve against the delivery on the sales order.
- 8If no MO appears, run through the troubleshooting section below before touching the scheduler.
How the chain actually works
Odoo does not link a sales order to an MO directly. Confirming the order creates a delivery order with a stock move. That move needs stock in the warehouse. If the product has the Replenish on Order route, the move creates a procurement that cannot be satisfied from stock alone. The procurement is passed to the product routes in sequence, and the Manufacture rule creates an MO whose finished product move feeds the delivery.
That is why both routes are needed. Manufacture alone says how the product is made when something requests it, but without MTO the delivery simply reserves whatever is in stock and waits. Without Manufacture, MTO has no way to supply the demand and you typically see a purchase or a pull rule failure instead.
Make to order versus make to stock
With MTO, every confirmed order creates its own MO for the ordered quantity, linked to that order. This suits configured or custom items where you only build what is sold. With make to stock, you leave out MTO and use reordering rules (a minimum and maximum quantity) so the scheduler creates MOs to keep stock topped up, and deliveries are served from shelf stock.
Many shops mix the two: MTS for fast movers, MTO for slow or custom items. The route is set per product or per product category, so you can apply it to a whole category in one place. If the scheduler is the source of your problem instead, see the page on reordering rules not creating manufacturing orders.
Troubleshooting: sales order created no MO
Start with the BOM. The BOM must be active, of type Manufacture this product, and belong to the right product or variant. A kit-type BOM does not create an MO at all; it explodes into component moves on the delivery. Check the company on the BOM and product too, since multi-company databases hide BOMs from other companies.
Next check routes and warehouse. Confirm the Manufacture route is not archived, that the warehouse has manufacturing enabled, and that the sales order line uses the warehouse you configured. Finally, look at the delivery order: if it is already fully reserved from stock, no procurement is raised, which is the correct behaviour for MTO only when stock does not cover the demand in some versions.
If the MO exists but is stuck, the problem has moved to component availability, which is covered separately.
Product form > Inventory tab > Routes: [x] Manufacture [x] Replenish on Order (MTO) Inventory > Configuration > Warehouses > Manufacture: enabled
Try it here, free
Odoo Manufacturing Technical Model Names Reference
Searchable lookup of the Odoo models behind manufacturing, inventory, purchasing and sales, with the fields you query most.
Common pitfalls
- !Ticking only Replenish on Order without Manufacture, which raises a procurement error instead of an MO.
- !Using a kit-type BOM and expecting an MO; kits never create manufacturing orders.
- !Leaving the MTO route archived after upgrading to a newer version, so it never appears on the product.
- !Testing with stock on hand and concluding the route is broken, when the delivery was simply reserved from stock.
- !Setting the route on the product template when the variants carry their own BOMs and the BOM is not tied to the variant.
How an ERP-grounded AI assistant handles this
An assistant grounded in your Odoo data (ERPray is read-only by default and shows its query) can answer why a given sales order produced no MO: it can check the product routes, the BOM type, the warehouse manufacturing setting and the reservation state of the delivery, and list every confirmed order whose product lacks a BOM. For manufacturers running Odoo on their own servers, that runs against a model hosted on their own hardware, so order and BOM data do not leave the network. Odoo's own configuration screens are enough for a one-time setup; the value is in auditing many products at once.
Frequently asked questions
Do I need MTO to get an MO from a sales order?
Yes, if you want an MO per order. Without Replenish on Order, the delivery reserves from stock and nothing is manufactured until a reordering rule or a manual MO does it. MTO is what turns each confirmed order into its own procurement for that quantity.
Where do I see the MO linked to my sales order?
A Manufacturing smart button appears on the sales order after confirmation. You can also search MOs by the Source field, which carries the sales order reference. The delivery order shows the same link through its origin.
Why is the MTO route not visible on my product?
In recent versions the Replenish on Order route is archived by default and Multi-Step Routes must be enabled in Inventory settings. Unarchive the route under Inventory > Configuration > Routes, then it appears on the product Inventory tab.
Can one sales order create several MOs?
Yes. Each order line for a manufactured product can create its own MO, and a multi-level BOM with sub-assemblies set to Manufacture and MTO creates child MOs for the sub-assemblies as well.
Related
Odoo Manufacturing Order: Components Not Available or Will Not Reserve
An Odoo manufacturing order stays in Confirmed with components marked Not Available when stock.move lines for the raw materials cannot be reserved from the quantity actually sitting in the MO's source location. The usual causes are stock in the wrong location, stock already reserved by another document, lot or tracking mismatches, and a unit of measure difference between the BoM and the product.
How-toOdoo Reordering Rule Not Creating Manufacturing Orders: Causes and Fixes
Odoo creates a manufacturing order from a reordering rule only when the rule's forecast quantity falls below its minimum, the product has the Manufacture route with an active BoM, and the replenishment scheduler actually runs. Check the rule's route and warehouse, the product's forecast, the BoM, and the scheduler cron, in that order.
How-toOdoo Manufacturing Tutorial: From BOM to Finished Product
The Odoo Manufacturing app (MRP) turns a Bill of Materials into manufacturing orders that consume components and produce finished goods. The core flow is: create products, build a BOM, optionally add work centers and operations, create and confirm a manufacturing order, then produce and mark it done. This walkthrough covers the process end to end and what to verify on Odoo 19.
How-toOdoo Manufacturing App: How to Make a Kit
In Odoo you make a kit by creating a Bill of Materials and setting BoM Type to Kit instead of Manufacture this product. A kit is not produced: when you sell or deliver it, Odoo replaces the kit product with its components on the stock moves. Use a kit for bundles you pack at delivery, and a manufactured BOM when you need to build and stock the assembled item.
How-toHow to Create a Generic Inquiry in Acumatica
Generic Inquiries (GI) are Acumatica's no-code query builder for joining tables, adding filters, and exposing the result as an inquiry screen, dashboard data source, or API endpoint. Open System > Customization > Generic Inquiry, add your base table, define joins and conditions, then run and save. No SQL or customization project is required.
Error fixFix Odoo AccessError: You Are Not Allowed to Access Records
Odoo raises AccessError when a user's security groups do not grant a CRUD right on a model through ir.model.access.csv, or when an ir.rule record rule filters the specific record out for that user or company. Fix it by adding the user to the group named in the error, editing the model's access rights, or reviewing the record rule's domain under Settings > Technical > Security.
AI for ERPAI for Odoo Manufacturing (MRP): BOMs, Work Orders and Shortages
AI for Odoo Manufacturing: BOM checks, work order delays, reordering rules and plain-language questions over mrp.production data, on-prem or private cloud.
AI for ERPAI for Odoo Manufacturing That Reads Your Own Database, Not a Vendor's Cloud
Add grounded, natural-language AI to Odoo Manufacturing without sending MRP, BoM, or work order data to a public model. On-prem or private cloud, ORM-native.
Stuck on Odoo?
Talk to engineers who work inside Odoo every week, and who build private AI that answers these questions from your own ERP data.
Keep exploring
Free tools
- Odoo Manufacturing Technical Model Names ReferenceSearchable lookup of the Odoo models behind manufacturing, inventory, purchasing and sales, with the fields you query most.
- Odoo Manufacturing Setup ChecklistA practical checklist for configuring Odoo Manufacturing from inventory foundations through BOMs, work centers, planning and go-live.
- Odoo Work Center Capacity CalculatorWork out how many units a work center can make per week and how loaded it is, using the same fields you enter in Odoo: capacity, time efficiency, OEE target, setup and cleanup.
ERP fixes and how-tos
- Odoo Manufacturing App: How to Make a KitHow to make a kit in the Odoo Manufacturing app: set the BoM type to Kit, how stock and deliveries behave, and when to use Manufacture this product instead.
- Odoo Reordering Rule Not Creating Manufacturing Orders: Causes and FixesOdoo reordering rule or scheduler not creating manufacturing orders? Check the Manufacture route, BoM, forecast, lead times and cron, with the SQL to confirm.
- Odoo Manufacturing Order: Components Not Available or Will Not ReserveOdoo manufacturing order stuck on Confirmed with components Not Available though stock exists? Check locations, reservations, lots, UoM and routes, step by step.
AI on your ERP
- AI for Odoo Manufacturing (MRP): BOMs, Work Orders and ShortagesAI for Odoo Manufacturing: BOM checks, work order delays, reordering rules and plain-language questions over mrp.production data, on-prem or private cloud.
- AI for Odoo Manufacturing That Reads Your Own Database, Not a Vendor's CloudAdd grounded, natural-language AI to Odoo Manufacturing without sending MRP, BoM, or work order data to a public model. On-prem or private cloud, ORM-native.
Integrations
- How to add AI agents to OdooHow to add AI agents to Odoo Manufacturing: a tool layer over the external API, approval before writes, and agents for MRP exceptions, POs and quality.
- How to connect Power BI to OdooHow to connect Power BI to Odoo: PostgreSQL direct, API or warehouse routes, the on-premises data gateway, manufacturing dashboards and natural-language Q&A.