Odoo MRP integration: shop floor output as manufacturing orders

For each finished job ModernMES creates, confirms and completes a manufacturing order in Odoo, so Odoo consumes the components from the bill of materials exactly as it does for its own orders. Scrap is booked as a scrap record, and products and customers are read from Odoo. It connects through Odoo's external JSON-RPC API.

Last updated: 20 October 2026

What is created in Odoo

In ModernMESIn Odoo
A job is finished with a good quantityA manufacturing order (mrp.production) for that quantity, confirmed and marked done; the product goes into stock and its components are consumed from the BoM
Scrap is reported ("Send scrap" on)A validated scrap record (stock.scrap)

The order's source (origin) carries the ModernMES work order number and the record's unique reference. If a connection drops halfway, ModernMES finds the earlier order by that reference when it retries: a finished order is not opened again, and a half-finished one is completed.

If Odoo stops to ask something before it will complete an order, such as a lot or serial number or a confirmation about missing components, ModernMES does not force it through. The transfer stops with Odoo's message and shows in the transfer log. For lot- or serial-tracked products we work out the approach with you during setup.

What comes from Odoo

  • Products that have an Internal Reference: reference, name and unit of measure, created as parts in ModernMES.
  • Customers: companies marked as customers, with their reference (or the Odoo record ID if there is none), name, tax ID, email, phone and city.

Matching uses the Internal Reference: it should equal the ModernMES part code, or you map the two per part. Records are pulled with a button in the settings screen, and nothing is deleted.

Requirements

  • Odoo 16, 17 or 18 with the Manufacturing (MRP) and Inventory apps installed.
  • The Odoo URL, the database name, a user's email and an API key created by that user (Preferences › Account Security).
  • On Odoo Online, the external API is available only on the Custom plan. Odoo.sh and self-hosted Odoo have no such limit.

Odoo Online and Odoo.sh are reachable from the internet, so the cloud version of ModernMES connects directly. If your Odoo runs on an internal network, either expose it over HTTPS or install ModernMES on your own server. The API key is stored encrypted.

Setting it up

  1. We set up the connection together; "Test connection" signs in and checks that the Manufacturing app is installed.
  2. We create trial manufacturing orders in a test database, an Odoo.sh staging branch for example, and check the component consumption.
  3. You choose when to send: when the part's last operation finishes (the default, and the right choice for finished goods), after every operation, or only manually.

Orders are created in the background. If Odoo cannot be reached, ModernMES tries 8 times at intervals growing from 1 minute to 12 hours. Data errors, such as a product that does not exist in Odoo, are not retried: you fix them and send again.

What it does not do

  • It does not bring Odoo sales orders or existing manufacturing orders into ModernMES; each finished job opens a new order.
  • It does not write operation times to Odoo work orders or work centers.
  • It does not read stock levels back into ModernMES.

Frequently asked questions

Are components consumed from stock?

Yes. Because each finished job becomes a completed manufacturing order in Odoo, Odoo consumes the components on the product's BoM for the quantity made.

Does it work with Odoo Online?

Yes, but on Odoo Online the external API is available only on the Custom plan. Odoo.sh and self-hosted Odoo have no plan restriction.

Which Odoo versions are supported?

Odoo 16, 17 and 18, with the Manufacturing (MRP) and Inventory apps installed.

What about lot- or serial-tracked products?

If Odoo asks for a lot or serial number to complete the order, ModernMES does not force it, and the transfer waits with that message. We agree an approach for those products during setup.

Which plan includes the ERP integration?

The ERP integration add-on is included in Enterprise and can be added to the other plans. See pricing.