MRP, material requirements planning, is the calculation that turns demand into a plan of what to make and buy. Manufacturers evaluating Odoo ask how Odoo does MRP. This piece explains how material requirements planning works in Odoo, grounded in how the system is actually built.
MRP in Odoo is part of the connected system
The first thing to understand is that Odoo does not have a separate, standalone MRP product bolted on. Material planning in Odoo is woven through the Manufacturing, Inventory, and Purchase applications. The bill of materials lives in Manufacturing, stock lives in Inventory, and purchasing lives in Purchase, and Odoo's planning works across them. This connection is the foundation of how Odoo plans: because demand, stock, BOMs, and supply are in one system, the planning calculation runs on current data rather than data copied between tools.
How demand becomes a plan
In Odoo, demand for a product can be met through replenishment, and Odoo decides whether to manufacture or buy based on how the product is configured. For a manufactured product, the demand results in a manufacturing order; for a bought product, in a purchase order. When a manufacturing order for a product is confirmed, Odoo explodes the bill of materials to determine the components required, and if those components are themselves short, the need propagates: components that are manufactured generate their own manufacturing orders, and components that are bought generate purchase requirements. This propagation through the multi-level BOM is the heart of MRP, and Odoo does it through its connected replenishment logic.
Reordering rules
One of the main ways Odoo drives planning is the reordering rule. A reordering rule sets a minimum and maximum stock level for a product. When stock falls to the minimum, Odoo generates the replenishment needed to bring it back up, a manufacturing order for a made product, a purchase order for a bought one. Reordering rules let a manufacturer keep components and products topped up automatically against defined levels, rather than someone watching stock and reacting.
Manufacturing orders triggered by sales
Odoo can also drive manufacturing directly from demand. When the relevant configuration is in place, a sales order for a manufactured product can trigger a manufacturing order for it. This is make-to-order behaviour: the confirmed customer order becomes the production request, rather than production running against a forecast or a stock level. A manufacturer can set products to be made to order or to be replenished from stock, and Odoo plans accordingly.
Lead times and timing
MRP is not only about quantities; it is about timing. Odoo uses lead times, the manufacturing lead time on a BOM, the supplier lead time on a purchase, to work out not just what is needed but when each action has to start so the product is ready in time. This is how Odoo turns a required date into start dates for manufacturing and purchasing.
Visibility and the overview
Odoo provides an overview of a manufacturing order showing its components, operations, and costs, and production analysis reporting across orders. The connected nature of the system means a planner can see, for a product, what is on order, what is in production, and what is needed, in one place.
The honest condition
As with MRP in any system, Odoo's planning is only as good as the data it runs on. If bills of materials are inaccurate, lead times are wrong, or stock figures do not match reality, Odoo will plan confidently from bad inputs. A manufacturer adopting Odoo should expect to invest real effort in getting BOMs, lead times, and stock accurate. That is not an Odoo limitation; it is true of MRP everywhere, and Odoo's connected design helps keep that data current once it is right.
The takeaway
MRP in Odoo is not a separate module but connected planning across Manufacturing, Inventory, and Purchase: demand becomes manufacturing or purchasing, multi-level BOMs propagate the need, reordering rules and sales orders trigger replenishment, and lead times set the timing. Its strength is the connection; its precondition is accurate data. For how we approach Odoo for manufacturers, see our ERP practice.