5.2 Routes, rules & replenishment
Key Takeaways
- A route is an ordered set of rules selectable on the warehouse, product, category, or sales line, with the most specific selection taking priority.
- Multi-step receipts run Vendor to Stock (1), via Input (2), or via Input then Quality (3); deliveries run Stock to Customer (1), via Output (2), or Pick-Pack-Output (3).
- A pull rule is triggered by demand at its destination and flows backward; a push rule is triggered by supply arriving at its source and flows forward.
- Reordering rules hold stock between a min and max and replenish up to max via their route, while Make-to-Order (MTO) spawns one supply order per sales line and holds no buffer.
- Drop-shipping ships Vendor directly to Customer with no warehouse stock, and 'Resupply from' routes inter-warehouse transfers through a Transit location.
Routes: modeling the flow of goods
A route is an ordered set of rules that tells Odoo how a product should move. Routes can be enabled at several levels — on the warehouse, on a product, on a product category, or directly on a sales-order line — and the most specific selection wins. The Inventory app ships with configurable multi-step routes for both inbound and outbound flows, plus route templates such as Buy, Manufacture, and Replenish on Order (MTO) that determine how a need is fulfilled.
Multi-step receipts and deliveries
Each warehouse independently chooses how many steps its incoming and outgoing shipments take. Adding steps inserts extra internal transfers and their operation types:
| Flow | Steps | Path |
|---|---|---|
| Receive in 1 step | 1 | Vendor → Stock |
| Receive in 2 steps | 2 | Vendor → Input → Stock |
| Receive in 3 steps | 3 | Vendor → Input → Quality → Stock |
| Deliver in 1 step | 1 | Stock → Customer |
| Deliver in 2 steps | 2 | Stock → Output → Customer |
| Deliver in 3 steps | 3 | Stock → Pick → Pack → Output → Customer |
Two-step delivery separates picking from shipping; three-step inserts a packing stage between them. Two-step receipt adds an unloading/Input buffer; three-step adds a Quality control stop before goods reach Stock.
Push versus pull rules
Every rule inside a route is either push or pull, and telling them apart is a classic exam point:
- A pull rule is triggered by demand at its destination. When something needs a product at location X, the pull rule creates a move to bring it there from a defined source. Procurement flows backward from the customer: the delivery pulls from Output, Output pulls from Stock, and so on. Pull rules answer "where do I get this from?"
- A push rule is triggered by supply arriving at its source. When product lands in a location, the push rule automatically moves it onward. Flow runs forward: goods that arrive in Input are pushed to Stock. Push rules answer "where does this go next?"
Multi-step routes chain these rules so a single sales order can spawn a cascade of transfers.
How a product's supply is decided
When Odoo needs to fulfill a demand it reads the routes selected on the product (or its category) to choose a supply method. The Buy route creates a request-for-quotation to a vendor; the Manufacture route creates a manufacturing order; a resupply route pulls from another warehouse. If several routes could apply, the more specific selection and the rule sequence resolve the conflict. Most of this happens automatically when the scheduler (the "Run Scheduler" / procurement run) fires, which re-evaluates every reordering rule and open need and generates the resulting orders in one batch.
Replenishment rules
Reordering rules (min / max)
A reordering rule keeps a product between a minimum and maximum quantity. When the forecasted quantity drops below the minimum, Odoo proposes an order that brings stock up to the maximum, respecting any configured multiple quantity (round-up). The rule's route decides how it replenishes — Buy from a vendor, Manufacture, or resupply from another warehouse. Rules run automatically when the scheduler executes, or on demand from the Replenishment report where a planner reviews and confirms each proposed order.
Make-to-order (MTO)
The Replenish on Order (MTO) route links demand directly to supply: each sales-order line spawns its own purchase or manufacturing order, sized exactly to that line, instead of pulling from existing stock. MTO suits made-to-spec or high-value items you do not want to hold, and it is normally combined with Buy or Manufacture so Odoo knows the source. Unlike a min/max rule, MTO never builds a buffer — no demand means no procurement.
Drop-shipping and cross-dock
- Drop-shipping uses the Dropship route so the vendor ships directly to the customer (Vendor → Customer); no stock enters your warehouse. It requires the Dropshipping setting under Purchase.
- Cross-docking routes incoming goods straight from receiving to the outgoing dock without putting them into storage, cutting handling for items already allocated to orders. It is often paired with MTO so a purchase and a delivery are linked end to end.
Multi-warehouse resupply and the forecast
When you run several warehouses, one can resupply another. Enabling "Resupply from" on a warehouse creates inter-warehouse routes so a reordering rule in Warehouse B can trigger a transfer — routed through a Transit location — from Warehouse A. Each product then chooses which warehouse supplies it.
The Replenishment report (Inventory → Operations → Replenishment) consolidates every product that needs ordering, showing on-hand, forecasted, and suggested quantities so a planner can confirm purchase or manufacturing proposals in one place. The per-product Forecasted report visualizes stock over time, lining confirmed receipts up against confirmed deliveries so you can see exactly when a product is expected to run short and which document will cover it. Together these views turn the rule engine's calculations into decisions a human can confirm.
What triggers a pull rule, and in which direction does the resulting procurement flow?
A warehouse is set to 'Receive in 2 steps.' What is the location path a receipt follows?
A company sells a high-value, made-to-spec machine it never wants to keep in stock. Each sale should generate exactly one matching purchase or manufacturing order. Which approach fits best?