Work Orders, BOMs, and Routings in Odoo: What Engineers Should Know

Most engineers have learned the manufacturing process from the part inward through the drawing, the material, tolerances, and the machine that will be used.

Then they have entered a manufacturing environment and realized that the part they are working on also exists in an ERP system, where it is modeled as a bill of materials, operations, and work orders.

Any errors in this data will lead to errors in the schedule and costs, and will also mean that the mill operator receives incorrect directions.

Odoo has been the ERP of choice for many small shops for various reasons. This article provides a user-friendly explanation of how Odoo is able to model manufacturing parts.

Manufacturing Orders vs. Work Orders: Two Levels of One Job

Work Orders, BOMs, and Routings in Odoo

One thing to understand first is that there are essentially two documents produced in Odoo, and each one is used at different levels. 

  • Manufacturing Order (MO): this is the request to create a specified number of finished products, such as “Make 20 brackets”. This order consumes material (raw material and hardware) from the inventory, and once completed, puts the finished products into inventory. 
  • Work Order (WO): this is one step of carrying out the manufacturing order in one work center; for example, “CNC mill 20 brackets at the VMC”. Therefore, the manufacturing order for one component requiring four errands will generate four work orders. 

The two documents create the impression of using the paper traveler system. The manufacturing order becomes the header part of the traveler (for instance, part number, quantity, and material issued), while each work order becomes just one line of the paper traveler signed by the worker/operator. 

Odoo can work only with manufacturing orders. However, a company engaged in assembling purchased parts will not have to work with any other type of order.

Settings and Editions to Check Before You Model Anything

A frequently encountered problem during the first week is discovering that there is no Operations tab when opening a bill of materials.

However, this is not a fault. In the current versions of Odoo, the operations tab will only become available once one has activated the Work Orders function by navigating to Manufacturing > Configuration > Settings menu. The same principle applies to By-products: there is a separate checkbox for this function in the Settings page and the By-products tab will also remain hidden until it is checked.

There is no longer the notion of a separate routing record. Since Odoo 14, the operations are defined on the BoM, meaning that each operation is exclusively linked to one BoM. So today, when people talk about routing in Odoo, they refer to the list of operations on one BoM. If two parts have the same process, all of the operations must still be defined on both BoMs.

It is worth mentioning which edition of Odoo your company is running since the manufacturing toolset differs between editions. Components such as the Manufacuturing app, BoMs, work centers, work orders and subcontracting are all available in the open-source Community framework.

There are many addons that engineers expect are not available in this version, including both Quality control (control points/checks), PLM (engineering change orders) as well as MPS and Shop Floor Tablet interface.

If your shop still needs to decide, you may find that an Odoo Community vs Enterprise comparison can give you a better idea about the missing functionalities before you begin to enter data.

For an engineer, the practical consequence is simple. If you plan to record inspection results or manage drawing revisions inside the ERP, confirm the edition first. Otherwise you’ll design a process around screens that don’t exist on your system.

Bills of Materials: The Three BoM Types

In Odoo, every BoM has a type, and the type changes what the system does with it.

  • Manufacture this product: the standard BoM. Odoo creates manufacturing orders from it, consumes the listed components, and, if Work Orders is enabled, generates a work order for each operation. Your machined bracket uses this type.
  • Kit: a bundle of components sold or moved as one item. A kit BoM doesn’t need manufacturing operations at all. On a delivery order, Odoo lists the components rather than the kit itself, which suits things like a “mounting hardware pack” of bolts, washers, and nuts.
  • Subcontracting: a BoM for a product someone else makes for you, often with material you supply. Think of a part you send out for anodizing or heat treatment. You name the subcontractor on the BoM, and Odoo tracks the components you ship to them and the finished goods that come back. This requires the Subcontracting setting to be enabled.

The components list on a “manufacture” BoM is where engineering accuracy really pays off. List the actual stock item (for example, 6061-T6 flat bar, 50 x 10 mm, consumed in millimetres or by the piece), not a vague description.

If the BoM says one bar per bracket when you actually get eight brackets from a bar, every cost report and purchase suggestion downstream will be off by a factor of eight.

Operations and Work Centers in Plain Engineering Language

An operation is one process step: saw, mill, deburr, inspect. Each operation points to a work center, which is Odoo’s word for the resource that does the work. A work center can be a single machine, a cell, a bench, or even a person’s station.

Odoo’s own work center documentation describes the fields that matter most for planning:

  • Capacity: how many products the work center can process at the same time. A bandsaw cutting one blank at a time has a capacity of 1. A vibratory tumbler that deburrs 50 parts per load could reasonably be set to 50.
  • Time efficiency: a multiplier on how fast work goes at this work center compared with the normal speed. An older, slower machine might sit below 100%.
  • Setup time and cleanup time: fixed minutes before and after the job, independent of quantity. This is where fixturing, tool changes, and first-article checks belong.
  • Cost per hour: the operating cost of the work center, which Odoo uses to cost the work orders.
  • Alternative work centers: where the work can go if the primary resource is busy or down.

On the operation itself you set a default duration, or you let Odoo compute the duration from the time operators actually track. Starting with an estimate and switching to tracked time once you have real data is a sensible path. The estimate gets you a schedule on day one, and the tracked times correct it later.

The key mental shift for engineers: setup belongs to the work center, and per-cycle time belongs to the operation. If you bury a 20-minute fixture change inside the per-part time, a batch of 100 will look roughly 33 hours too long.

Worked Example: Modeling a Machined Bracket

Here’s how a simple aluminum bracket might be set up. The numbers are illustrative, chosen to show how the fields interact, not benchmarks for your shop.

The product is an L-shaped bracket machined from 6061 flat bar. Its BoM type is “Manufacture this product,” the component is the flat bar (one 125 mm blank per bracket), and the operations follow the real process:

  1. Saw cut: cut blanks to length on the bandsaw work center (capacity 1, 5 minutes setup, 2 minutes per cycle).
  2. CNC mill: profile, drill, and chamfer on the vertical machining center (capacity 1, 30 minutes setup for fixture and tool load, 9 minutes per cycle).
  3. Deburr: run parts through the vibratory tumbler (capacity 50, 10 minutes setup, 45 minutes per cycle).
  4. Inspect: check critical dimensions at the inspection bench (capacity 1, no setup, 3 minutes per cycle).

Now confirm an MO for 20 brackets. Odoo creates four work orders, one per operation, and plans each against its work center’s availability. A rough expected time per step looks like this:

OperationWork centerSetup (min)Cycles for 20 partsTime per cycle (min)Rough total (min)
Saw cutBandsaw520245
CNC millVMC30209210
DeburrTumbler1014555
InspectBench020360

Two things stand out. The tumbler’s capacity of 50 means all 20 parts go through in a single cycle, so deburring barely moves the schedule.

And the mill is the bottleneck by a wide margin, which tells a planner exactly where an alternative work center or a second shift would make a difference. That’s the kind of insight you only get when the setup, capacity, and cycle time are entered honestly.

By-Products, Scrap, and the Mistakes That Corrupt Shop Data

The process of metalworking results in more than finished products, and Odoo provides two ways to account for the rest. 

  • By-products: An unused product that results from production together with the main product. By-products are defined on the By-products tab of the BOM. There can be multiple by-products associated with a single BOM. If a shop sells aluminum shavings to a recycler, or if it saves usable bar scrap, these can be recorded as by-products so that the materials remain in stock rather than disappearing into the ether. 
  • Scrap: Parts or materials lost during production. This can be done against the MO or work order. If, for example, the inspector rejects two brackets because of an out-of-tolerance hole, scrapping them in Odoo allows for tracking and an accurate cost as well as inventory. 

The mistakes that occur most often when utilizing this data for the first time are predictable. 

  • Wrong unit of measure: components that are consumed on a “per” basis while the stock is tracked in metric or pounds. 
  • Setup built into cycle time: this distorts the costs of large batch runs and makes more efficient running small batch runs look cheap. 
  • Capacity kept at 1 for batch operations: this causes ovens, tumblers, and washing equipment to show bottlenecks that are not in reality. 
  • One overall operation: Indicating only one operation with “machine part, 45 minutes” does not provide the specific operations that are required and hides the true bottleneck. 

None of the above requires deep knowledge of ERP to avoid. The same type of thought processes can be used that would be utilized in developing a process sheet: one step for each operation, the appropriate resources, and honest timing.

Summary

Odoo defines a manufactured part according to four components: the BOM (i.e., what is going into the product and its kind), the action on the BOM (i.e., the activities or operations that are known as routing), the work centers (i.e., the equipment and places, together with their capacity, setup time, and cost), and the manufacturing order (i.e., the real production, considered in its various steps).

Make sure to enable the setting for work orders before proceeding with finding the operations; check which version of Odoo your company has before making plans about Quality and PLM; and manage the setup, capacity, and cycle time from a separate menu. Get this part right to enable the display to function as desired.