Using Routes and Rules

In Odoo there are several different ways to ensure that you have sufficient stock to satisfy customer orders.

  1. Replenish on Order (MTO – Make to Order)
    • For every customer order (or manufacturing order) you place a Purchase Order or create a Manufacturing Order.
    • Odoo can consolidate supply so that one PO is for multiple demand orders (you can configure this behaviour, as explained below).
  2. Make-to-Stock
    • You manufacture or purchase based upon a plan (you could use the Odoo MPS app for this).
  3. Replenishment
    • Setup re-ordering rules for products so that you can automatically create Requests for Quotations (RFQ – draft Purchase Orders) or draft Manufacturing Orders. This can be configured.

As ever, automation can sometimes be confusing so it’s important to understand the configuration options that exist within Odoo.

Fortunately, Odoo lets you configure this (though there’s not much documentation to explain how to do it).

For example:

  1. If you use Replenish on Order (MTO) to buy from vendors, an RFQ for one sales order might have lines added for another sales order – and maybe you want to keep them separate.
  2. If you create RFQs manually and use reordering rules you might find that the RFQ you are working on gets updated by the scheduled job. Here’s how to stop that happening.
  3. Replenish on Order (MTO) has changed in Odoo 13 so that an order is NOT created if there is stock available. This is a useful feature, but you might prefer the way it worked in Odoo 12 and earlier (see below).

Let’s start with the basics

Configuration of Routes

The first step is to enable Routes in Inventory Settings:

Once “Multi-Step Routes” are selected, you can view all the Routes in Inventory / Configuration / Routes

These are the three “basic” Routes in Odoo, but there are several more available, including “Drop Shipment“.

These same three routes are available to select for products, and note that multiple routes can be selected:

In this example, the product is “Make to Order” and “Buy”, which means that when you confirm a Sales Order, Odoo will attempt to either add this demand to an existing RFQ (draft Purchase Order) or create a new RFQ.

  • In later versions of Odoo, you can use “Drop Shipment” instead. This is “MTO” + “Buy”, but the goods are shipped direct to the customer.

“Replenish to Order (MTO)” + Manufacture means that you will manufacture to order.

Where can Routes be selected?

This is defined for each Route:

These are the four options:

  • Product Categories
  • ​Products
  • ​Warehouses ​
  • Sales Order Lines

It can be convenient to setup the standard routes on product categories so that users don’t have to remember to specify them for each product, or you could set routes automatically (using Automated Actions).

You can set routes on Sales Order lines, which would be useful if you normally rely on reordering rules, but sometimes want to use MTO.

Configuration options

Create separate RFQs

It’s possible to configure Odoo to always create a new RFQ and not add the demand to an existing RFQ.

As explained above, ensure that “Multi-Step Routes” is enabled in Inventory settings. Then enable Developer Mode and navigate to Inventory / Configuration / Rules

Select the “Buy” rule:

This is the “Buy” rule for the main warehouse. You may have other “Buy” rules for other warehouses.

  • Note that the “Propagation” options are only available in Developer Mode

Change “Propagation of Procurement Group” to Propagate. Now you should find that the MTO method will generate a separate RFQ for each sales order

Reordering Rules

An extra step is required if you are using Reordering Rules.

Navigate to Inventory / Master Data / Reordering Rules

You should create a new Procurement Group to be used by the Reordering Rules. The same one can be used for all the Reordering Rules, and you can set this as a default.

It is possible to create Reordering Rules automatically for new products and you could add the Procurement Group field to this Automated Action.

Should MTO check stock first?

In Odoo 12 and earlier, Make to Order rules would not check for available stock (so an RFQ or draft Manufacturing Order would be created – or updated – regardless of whether any inventory was available).

From Odoo 13 onwards the inventory balance is checked first, but you can change this by configuring Inventory Rules.

As explained above, enable Multi-Step Routes and navigate to Inventory / Configuration / Rules:

Select the Replenish On Order (MTO) rule for customers.

The standard setting for Supply Method is “Take from Stock, if unavailable, trigger another rule”:

The explanation on the right tells you that if stock is not available (in the specified Source Location) a rule will be triggered. This will create an RFQ (draft Purchase Order) or add to an existing RFQ (see above for how to change that behaviour).

There are three options for Supply Method:

  1. “Take from Stock” isn’t correct for MTO.
  2. “Trigger another rule” is the way it worked in Odoo 12 and earlier, meaning that an RFQ will always be created (or demand added to an existing RFQ), regardless of the stock available.
  3. “Take from Stock, if unavailable, trigger another rule” is the default in Odoo 13, as explained above.

If we select the 2nd option, the description on the right changes and the behaviour will be the same as it was in Odoo 12 (and earlier).

The same options are available for Manufacturing Orders. Simply select the appropriate rule.

Drop Shipment

This is a useful route that effectively combines “Make to Order” and “Buy”. This is when your vendor delivers direct to your customer.

Navigate to Purchase / Configuration / Settings:

8 thoughts on “Using Routes and Rules

  1. Hi All,
    I am using version 12 so can I use 3 supply methods? Currently only having 2
    My MO did not get from stock first otherwise will issue the new MO



    1. No, in Odoo 12 the stock is not checked and the MO will be created even if there is stock available. The new functionality is in Odoo 13.


      1. Hi Chris,
        Thanks for your information. In ver13 we will set the same with 12? If you have any tips please sharing

        Thanks a lot


  2. I have multi-level BoM (6 levels) and I have the quantity in parent products but it still generate to childs BoM for MO and not get the available quantity of parent products.

    I want system get the available qty from parent first and if out of stock then will generate to MO. thanks


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s