If your bills of materials come out of CAD software, you can load a new version into Odoo from a spreadsheet instead of retyping every component line. This guide shows how to export the revision that an engineering change order creates, update it in Excel or CSV, and import it back, using only the standard export and import in Odoo 19, with no custom module. The change still passes through your approval stages before it reaches production.
It is written for engineering and manufacturing teams who manage product changes in Odoo or are evaluating it.
Before you start
- Version and edition: the steps were verified on Odoo 19. The PLM app is part of Odoo Enterprise, so this applies to Odoo Online, Odoo.sh and Enterprise on-premise. It is not available in Community.
- Apps: PLM, which installs Manufacturing with it.
- Access rights: you need PLM access to create and work on change orders. Editing a bill of materials, including through an import, requires Administrator access for Manufacturing. A Manufacturing User can only read bills of materials.
- Products: every component in your spreadsheet must already exist as a product in Odoo. Storing your CAD part numbers in each product's Internal Reference field makes the import match them reliably.
- Bill of materials (BoM): the list of components and quantities needed to make one product. A large assembly usually has one BoM for the top level and a separate BoM for each sub-assembly.
- Engineering change order (ECO): Odoo's record for proposing, reviewing and approving a change to a bill of materials. It moves through stages, and the change only takes effect when someone applies it.
- External ID: a permanent identifier Odoo attaches to a record when you export it, so that a later import updates that same record instead of creating a new one.
How an ECO revision holds your changes
When you click Start Revision on an ECO, Odoo copies the current bill of materials, archives the copy, links it to the original and raises its version number by one, as long as the Update Version box on the ECO is ticked, which it is by default. Archived means hidden from normal lists and unused in production. The Revision smart button on the ECO, labelled with the new version such as V2, opens that copy.
Because the revision is an ordinary bill of materials, export and import can read and update it. The ECO compares the revision with the current bill and lists the differences on its Component Changes tab. That comparison recalculates whenever a revision line changes its component, quantity, unit or operation, whether the change was typed on screen or written by an import.
Nothing reaches production until someone clicks Apply Changes. That makes the revision the active bill of materials and archives the previous one. The button only appears while the ECO is in a stage that allows changes to be applied. Out of the box, the BOM Updates type has the stages New, In Progress, Validated and Effective, and changes can be applied from Validated onward.
Step by step: export, edit, import
- Open the PLM app and go to Changes. Click New, enter a Description, choose a Type, set Apply on to Bill of Materials, then select the Product and its Bill of Materials.
- Click Start Revision. A Revision smart button with the new version number now appears at the top of the ECO.
- Open the Manufacturing app and go to Products > Bills of Materials. Switch to the list view, open the filters and choose Archived. The revision now appears in the list. If the product has older archived bills as well, show the optional Version column to pick the right one.
- Tick the revision and choose Export from the actions menu.
- Select I want to update data (import-compatible export). Add External ID, then open BoM Lines and add its External ID, Component and Quantity, plus any other line columns you plan to change. Export the file.
- Open the file in Excel and edit it against your CAD export. The first row carries the bill's external ID. The rows below it, with the bill columns left blank, are lines of the same bill. Change quantities or components in place. For a new component, add a row inside that block and leave both ID cells blank.
- Back in the Bills of Materials list, open the gear menu next to the list title, choose Import records and upload the file. Click Test. If no errors are reported, click Import.
Check that it worked
For a first run, change one quantity and add one new component in the spreadsheet, then import it. Open the ECO from PLM > Changes and select the Component Changes tab, which appears once the revision differs from the current bill. You should see one row of type Update for the changed quantity and one row of type Add for the new component. The Revision smart button opens the revision so you can check the lines.
If a component you only meant to edit appears as Add, the line's external ID was probably lost from that row, so the import created a second line instead of updating the first.
Matching CAD parts to Odoo products
When the import reads the Component column, it first looks for a product whose Internal Reference matches the cell exactly, then a matching barcode, and only then the product name. A value in the form "[reference] name", as Odoo writes it in the export, is matched on the bracketed reference. If your CAD part numbers are stored as Internal References, you can paste them straight into the Component column.
What the import will not do
- It does not delete lines. A row that carries a line's external ID updates that line, and a row without one creates a new line. Nothing in the import removes a line, so a part dropped from the CAD bill stays on the revision. Delete those lines by hand on the revision before you apply the ECO.
- Removing the line ID duplicates the line. If you clear the external ID on a row you only meant to edit, the import treats it as a new component and the old line stays alongside it.
- One ECO covers one bill of materials. Each ECO points at a single bill, and each sub-assembly has its own bill. A change that runs through several levels of an assembly needs one ECO, and one revision, per affected bill. You can select several archived revisions in one export, provided you have clicked Start Revision on each ECO first.
- Name matches can pick the wrong product. If a component cell matches more than one product, the import shows a warning and uses the first match. Matching on Internal Reference avoids this.
When a spreadsheet is not enough
The import is a manual step for each revision. If you want CAD changes to flow into Odoo automatically, that requires customization. Odoo Online does not accept custom modules that contain Python code, so an automated connector of that kind would mean running Odoo on Odoo.sh or on-premise.
Steps verified on Odoo 19. Menus and labels can differ on other versions.
Common questions
Can I import bill of materials changes into an ECO on Odoo Online?
Yes. The revision an engineering change order creates is a normal archived bill of materials, so the standard Export and Import records tools in the Manufacturing app's Bills of Materials list can update it without any custom module.
Do changes imported from a spreadsheet show up on the ECO?
Yes. The ECO's Component Changes tab recalculates whenever a revision line's component, quantity, unit or operation changes, whether the change was typed on screen or imported.
Will an Odoo import remove components I deleted in CAD?
No. An import only updates existing bill of materials lines and adds new ones. Components removed from the CAD bill have to be deleted by hand on the revision before the ECO is applied.
Can one ECO update a top-level assembly and its sub-assemblies together?
No. Each engineering change order is linked to a single bill of materials, and every sub-assembly has its own bill, so each affected level needs its own ECO and revision.
What access rights do I need to import BoM changes in Odoo?
You need PLM access to work on engineering change orders, and Administrator access for Manufacturing to edit bills of materials, which includes importing changes into them.
Talk to the team.
If you are setting this up, or Odoo is not behaving the way this guide describes, book a 30-minute call. We will look at your configuration and tell you what it needs. Calgary studio, in-house team, no offshore handoffs.
Book the call →