# Odoo Reordering Rule Not Creating Manufacturing Orders: Causes and Fixes

> Source: https://netray.co/erp-help/odoo-mrp-scheduler-reordering-rule-not-creating-manufacturing-orders
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: ERP Help

## Short answer

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.

## Kind

how-to

## System

small-erp

## Erp

Odoo

## Module

Manufacturing / Replenishment

## Query

Odoo reordering rule not creating manufacturing order

## Alternate Queries

- odoo scheduler not generating manufacturing orders
- odoo run scheduler mrp not working
- odoo replenishment manufacture route no MO created
- odoo reordering rule min max not triggering

## Applies To

Odoo 15, 16, 17 and 18 (Community and Enterprise) with Manufacturing and Inventory installed

## Steps

### How to diagnose a rule that creates nothing

**Items:**

Open Inventory > Operations > Replenishment. Find the rule and read Forecast, Min, Max and To Order. If To Order is 0, the rule has no need yet.

Check the Route column on the rule. For manufactured products it must be Manufacture. If it is blank, Odoo uses the product's own routes, and multiple matches can choose Buy instead.

Open the product > Inventory tab and confirm the Manufacture route is ticked. The warehouse must also have manufacturing enabled under Inventory > Configuration > Warehouses.

Open the product's Bills of Materials and verify an active BoM of type Manufacture this Product exists for the company, and is not tied to a variant you are not stocking.

Click Order Once on the rule. If an MO appears, the rule works and the scheduler schedule is the issue. If you get a warning, read it, as it names the missing route or BoM.

Go to Settings > Technical > Automation > Scheduled Actions and open Scheduler: Run (named Procurement: run scheduler in older releases). Confirm it is active, next execution is in the future and the user has access to the company.

Check the log for the cron in Settings > Technical > Logging for errors, and for Odoo.sh or self-hosted, the server log lines containing procurement.group or run_scheduler.

## Sections

### What the scheduler actually evaluates

**Body:**

A reordering rule (stock.warehouse.orderpoint) calculates a forecast quantity for the product in the rule's location over a lead-time horizon: on hand, plus incoming receipts and MOs, minus outgoing deliveries and component demand scheduled inside the visibility window. If that forecast is below Min, the rule creates a procurement to reach Max (or Min plus the multiple).

In Odoo 15 and later, the Replenishment menu pre-computes To Order and, if Trigger is Manual, only creates orders when you click Order. Rules with Trigger set to Auto are processed by the scheduler cron. A large number of users create rules and leave them on Manual, then wonder why no MO ever appears.

The procurement then runs through stock.rule records. The Manufacture rule creates an mrp.production using the BoM found for the product. No matching BoM raises a UserError that is swallowed by the cron and logged, which is why the failure looks silent in the UI.

**Code:**

-- Rules, triggers and the active routes involved
SELECT o.id, p.default_code, o.product_min_qty, o.product_max_qty,
       o.trigger, o.route_id, o.active
FROM stock_warehouse_orderpoint o
JOIN product_product pp ON pp.id = o.product_id
JOIN product_template p ON p.id = pp.product_tmpl_id
WHERE o.active;

-- Is the scheduler cron enabled and when does it fire?
SELECT c.cron_name, c.active, c.nextcall, c.interval_number, c.interval_type
FROM ir_cron c
WHERE c.cron_name::text ILIKE '%scheduler%';

### Route and BoM problems

**Body:**

If a product has both Buy and Manufacture routes ticked, the procurement picks the rule by sequence and route priority. Set the Route field on the reordering rule explicitly to Manufacture to stop Odoo purchasing a manufactured item.

The BoM lookup considers company, variant and, with Odoo 16+ multi-operation setups, the picking type. A BoM restricted to another company or to a variant different from the one on the rule is invisible to the procurement. The archived BoM case is common after engineering revisions.

Kits are a distinct trap. A BoM with type Kit does not create MOs. It explodes into component moves on a delivery. A product configured as a Kit never triggers a manufacturing order from a reordering rule.

### Forecast and lead time effects

**Body:**

Rules look at the forecast, not on hand. If a confirmed MO or purchase order already covers the shortage, To Order stays at zero. That is correct. Look at Inventory > Reporting > Forecasted Inventory for the product and check receipts, MOs and moves inside the horizon.

Lead times shift when demand is counted. Manufacturing Lead Time on the product, the company's Manufacturing Lead Time in Manufacturing > Configuration > Settings, and the Security Lead Time all push planned dates earlier. A rule with a visibility days setting may ignore demand that falls outside the window.

Multi-company and multi-warehouse setups need a rule per warehouse location. A rule on WH/Stock does not respond to demand from WH2/Stock.

### Scheduler runs but fails halfway

**Body:**

When one procurement raises an error, recent releases log it and move on, but older code paths can roll back the batch for the same product group. Look for repeated tracebacks in the server log naming mrp.bom or stock.rule. Fix the data issue, then rerun from Inventory > Operations > Replenishment using Run Scheduler (Enterprise) or Settings > Technical > Scheduled Actions > Run Manually.

On heavily loaded databases, long scheduler runs can overlap with the next one and be skipped. Check cron timing and consider running the scheduler outside business hours.

## Pitfalls

- Leaving the rule Trigger on Manual and expecting overnight automation.
- Leaving the rule Route blank when the product has both Buy and Manufacture ticked.
- Defining the product as a Kit, which never generates a manufacturing order.
- Archiving the only BoM during an engineering change and not publishing the replacement.
- Creating the rule in the wrong warehouse location, so it never sees the real demand.
- Reading On Hand instead of Forecast when judging whether a rule should fire.

## Ai Angle

This kind of triage is mostly joins across orderpoints, routes, BoMs and forecast moves, which is exactly what a grounded assistant does well. Asked why product X has no MO, an assistant on your Odoo data (ERPray in a read-only setup) can show the rule's trigger and route, the forecast calculation inputs, and whether an active BoM matches, with the query visible. It should not edit rules on its own. Creating or changing replenishment settings stays a human-approved action.

## Faq

### Why does the scheduler run but To Order stays at zero?

**Answer:** The forecast already meets Min. Incoming MOs, receipts or reservations inside the visibility window count against demand. Inspect Forecasted Inventory for the product. If the forecast really is low, check that the rule's location matches where demand is booked.

### Does Order Once create an MO even if the scheduler is disabled?

**Answer:** Yes. Order Once runs the procurement for that rule immediately, independent of the cron. It is a good test: if it works, the scheduler or trigger setting is the issue, not the route or BoM.

### Can I make a purchased product and a manufactured one share a rule?

**Answer:** Create one rule and set its Route explicitly. For a product that is sometimes bought and sometimes made, use separate rules or a Manufacture route chosen per rule so Odoo does not pick Buy by default.

### How often should the scheduler run?

**Answer:** Daily is the default and fine for most shops. Lower intervals help when MOs depend on rapid demand changes, but frequent runs on large databases can overlap, so test run time first.

## Search terms

odoo reordering rule manufacture, odoo run scheduler, odoo replenishment not working, odoo orderpoint trigger auto manual, odoo mrp scheduler cron, odoo to order zero, odoo manufacture route bom, odoo kit bom no manufacturing order

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
