All posts
Functional5 min read

Managing Product Variant BOMs in Odoo Manufacturing

Configure Bills of Materials for product variants in Odoo - defining component differences between sizes, colors, and configurations without duplicating BOMs for every combination.

Product Variant BOMs in Odoo Manufacturing#

When a product comes in multiple variants (sizes, colors, configurations), each variant may require slightly different components. Odoo's variant BOM feature avoids creating a separate BOM for every combination - instead, you define one BOM with conditional component lines.

Product Attributes and Variants#

Product → Attributes & Variants tab:

  • Color: Red, Blue, Black
  • Size: Small, Medium, Large
  • Power: 100W, 200W

Odoo generates a matrix of variants: Red-Small-100W, Red-Small-200W, Blue-Medium-100W, etc.

One BOM for Multiple Variants#

Manufacturing → Bills of Materials → New:

  • Product: Widget (the product template, not a specific variant)
  • Apply on Variants: all (or select specific variants)

Components tab:

  • Red Paint: 100ml → Apply on Variants: Color = Red
  • Blue Paint: 100ml → Apply on Variants: Color = Blue
  • Small Housing: 1 pc → Apply on Variants: Size = Small
  • Medium Housing: 1 pc → Apply on Variants: Size = Medium
  • Large Housing: 1 pc → Apply on Variants: Size = Large
  • 100W Motor: 1 pc → Apply on Variants: Power = 100W
  • 200W Motor: 1 pc → Apply on Variants: Power = 200W
  • Base Frame: 1 pc → (no variant filter - applies to all variants)

How Odoo Uses Variant BOMs#

When a manufacturing order is created for Widget (Blue-Large-200W):

  • Odoo selects the BOM for Widget
  • Filters components: includes Blue Paint, Large Housing, 200W Motor, Base Frame
  • Excludes: Red Paint, Small Housing, Medium Housing, 100W Motor

One BOM manages all combinations - any component change (e.g., new motor supplier) is updated once and applies to all relevant variants.

Routing Differences by Variant#

Operations can also be variant-conditional:

BOM → Operations tab → [Operation] → Apply on Variants:

  • "Special Coating" operation → only for Color = Red
  • "High-Power Testing" operation → only for Power = 200W

BOM Version Control#

When a component changes:

  • Archive the old BOM line (don't delete - preserves history)
  • Add new line with the replacement component
  • Tag the change date in the chatter

MOs created before the change use the old components; new MOs use the updated BOM.

Validating Variant BOMs#

Create a test MO for each major variant combination:

Manufacturing → Orders → New MO → select Widget Blue-Large-200W → review exploded components:

  • Verify correct paint, housing, and motor are listed
  • Verify shared components (Base Frame) are present
  • No unexpected components from other variant lines

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free