Odoo 14: Replenishment and MTO

In Odoo 14 (released in October 2020), there is new functionality for replenishment. Odoo are promoting this as a powerful tool if you want to manually adjust either how you will replenish (e.g. buy, make, transfer) or the quantity. For example, if you want to:

  • Buy a product that you normally manufacture
  • Choose a different vendor
  • Transfer from another warehouse or location
  • Buy (or manufacture) a certain quantity of a product – greater or less than calculated.

However, it does have several limitations:

  • After you have confirmed an RFQ, this is NOT always included in the calculation of Quantity To Order.
    • This means that you have to do a manual check rather than relying on the “recommendations” from Replenishment.
  • Replenishment does not fully consider timelines

Based on this, it seems hard to argue that Replenishment is always better than MTO – and yet, that seems to be the current strategy:

That’s presumably why the Replenish on Order (MTO) route [more on Routes and Rules] is not available as standard in Odoo 14 (but is easy to reactivate).

Is MTO really too complicated or troublesome to use? No! It’s easy to set up and generally works well (see below). So it’s seems very odd to try to persuade people to use Replenishment when it isn’t really appropriate.

  • There are some scenarios where you absolutely should use MTO,
  • There are others where you should use reordering rules / replenishment.
  • For some products either approach could work, and the Replenishment tool is useful if you want to easily switch from one to the other or just to have more control over ordering (but watch out for the problem described above).

Anyway, let’s see how to use it. Don’t forget that you need to setup a vendor for all purchased products (for both replenishment and MTO):

Odoo 14 seems to create basic reordering rules automatically (so this tip may be redundant). The trigger is set to “manual”, but of course this can be changed to “automatic”. More information about Reordering Rules below.

This is the Replenishment View.

Odoo shows the “On Hand” and “Forecast” quantity, plus the Minimum and Maximum (from the Reordering Rules) and a calculated Quantity to Order. Unfortunately this isn’t a number you can rely on, because it excludes future receipts from Purchase Orders.

There are some optional fields that you can display by clicking on the three vertical dots on the right hand side.

You can change the Route, the vendor (or the BOM) and the quantity. This is what makes Replenishment quite powerful.

If a Preferred Route is specified, it will be used for replenishment. If it is left blank the first route from the product will be used (e.g. Buy or Manufacture).

If no vendor is entered here, the first vendor shown against the product will be used). Likewise you can select the BOM for a manufactured product.

“Order Once” will create an RFQ, Manufacturing Order or transfer depending upon which Route applies (e.g. if the route is “Buy” an RFQ will be created).

Doing it this way there is a link to the RFQ shown in the top right corner of the screen

If you click on “Automate Orders” the reordering rule will be set to “Auto” so that replenishment will be run as per the schedule (by default that will happen once per day) and not shown here (though you can remove the filter).

Let’s look at automatic replenishment…

Reordering Rules and Scheduled Job

This is also available in Odoo 13 and earlier but you need to create the Reordering Rules (and this tip may be useful). All Reordering Rules in earlier versions are “automated”.

The first place to see Reordering Rules is as a “Smart Button” on the Product:

…or from the Inventory Configuration menu:

  • Preferred Route should be set to “Buy” for purchased items or “Manufacture” for manufactured items. If the product only has one route that will be used.
  • Trigger is “Auto” by default (and it is not displayed unless you select it). This means that replenishment happens automatically as per the schedule.
    • As noted above, in Odoo 14 Reordering Rules are created automatically but with the trigger set to “Manual”
  • Minimum and Maximum Quantity can be specified if required
  • Multiple Quantity can be specified, or defaults to 1

Let’s place a Sales Order to see what happens:

You might notice the “graph” icon” next to the quantity delivered. If you click on it, you will get more information and a link to the forecast:

This is the forecast:

As this is a simple example there isn’t much information, but you should see that the scheduled job has created a draft PO (RFQ).

There isn’t a link from the Forecast, but you can navigate to the Purchase app and find it:

The Source Document is the Re-ordering Rule, the product and quantity match what was on the sales order.

Note that if there is an existing RFQ for this product (and vendor), the quantity will be increased (and a new RFQ will not be created). This may not be what you want, and it seems that it cannot be changed (whereas it can be configured for MTO, which is one reason why that may be a better choice).

After you confirm the RFQ the forecast is updated and now there is a link

Although the forecast is updated, the main Replenishment View does NOT use the expected delivery in its calculations. In fact it will calculate that another order is required and a button will be displayed to create this order that you probably don’t need!

After the goods are received they will be reserved, and you can ship the goods and confirm the Delivery Order:

That’s a very simple example, and is designed to show how it works as a replacement for MTO rather than the power of using replenishment as a strategy.

Note: it’s important to understand that replenishment is a “soft” link between the demand and supply, and it’s possible to re-allocate the goods to a different Sales Order / Delivery Order. This certainly provides more flexibility, but it’s different from MTO.

Parameter to prevent immediate replenishment

Odoo 14 automatically checks reordering rules when a product cannot be completely reserved, rather than waiting until the scheduled job runs (normally once per day). This could cause undesirable results (e.g. creating multiple Manufacturing Orders when they could be combined). It’s now possible to disable this by setting parameter stock.no_auto_scheduler to TRUE.

More information on this change is here

Give me back my MTO

Fortunately it’s easy to re-activate the old MTO route (but it works differently):

Start by ensuring that “Multi-Step Routes” are enabled:

Then navigate to Inventory / Configuration / (Warehouse Management) / Routes

Now selects “Archived” in Filters

You should see the Replenish on Order (MTO) route:

Select this route and you should see that it is archived:

Click on “Unarchive” under Action and it will be reactivated. Now you should see these three routes (and probably some others).

You could now go back to settings and disable Multi-Step Routes and Storage Locations if you don’t want to do anything more with them (MTO will still be available).

MTO in Odoo 14

MTO has been changed in Odoo 14. Odoo now recommend Replenishment in most cases, and MTO is only supposed to be used for products that are never held in stock. Therefore it is not possible to reserve other stock if there is a problem with the original supply.

  • This also applies to Drop Shipments, which are effectively a combination of “MTO” and “Buy” – the goods are shipped direct to the customer.

There are some improvements to the visibility.

Here’s an example of a confirmed Sales Order (for an item with routes MTO & Buy and a vendor defined):

Note that in the top right corner there is now a “Smart Button” showing the linked Purchase Order (actually an RFQ):

In the top right corner there is another “Smart Button” showing the linked Sales Order. Previously the “source document” was shown, but without a link, so this is a clear improvement.

Isn’t that easier than replenishment? But it really depends what you want to achieve.