This module addresses the BoM case where the product to manufacture has one attribute with tens or hundreds of values (usually attribute "color", eg: "Configurable Desk" can be produced in 900 different colors).
Creating a dynamic BoM currently requires adding one BoM line for each attribute value to match component variant with attribute value (eg: component "Desk board (Green)" to be applied to variant "Green").
This has 3 downsides:
- BoM lines proliferation (more error prone)
- Difficult to update in case a new attribute value (new color paint) is added
- Difficult to update in case base component changes.
This module allows to use a product template as component in BoM lines, automatically matching component variant to use in MO line with the attribute value selected for manufacture.
Eg: Product template "Desk Board" is added to BoM line for product "Configurable Desk"; match is made on attribute "Color". In MO, if product to manufacture is "Configurable Desk (Steel, Pink)", MO line will have component "Desk Board (Pink)".
Using the same BoM, if product to manufacture is "Configurable Desk (Steel, Yellow)", MO line will have component "Desk Board (Yellow)".
The flow is valid also if the Component (Product Template) has more than one attribute matching the product to manufacture; in this case, on MO line the component variant will be the one matching multiple attribute values for the product to manufacture.
Various checks are in place to make sure this flow is not disrupted:
- user cannot add a product in field "Component (Product Template)" which: > does not have matching attributes with product to manufacture > > has a different variant-generating attribute than the product to > manufacture
- Adding a new variant-generating attribute to a product used as "Component (Product Template)" raises an error if the attribute is not included in all the products to manufacture where component is referenced.
- Removing an attribute used for BoM attribute matching from product to manufacture raises an error.
- On a BoM line with Component (Product Template) set, an attribute value of attributes referenced in "Match on attribute" field cannot be used in field "Apply to variant".
- If attribute value for matching attribute in manufactured product is not present in component (product template), the BoM line is skipped in MO.
auto_awesome What this module does
AI-generated from the code · Odoo 18.0Lets you put a product template (not a specific variant) as a component on a Bill of Materials line, so Odoo automatically picks the matching variant based on the attributes chosen for the manufactured product.
When you build a Bill of Materials, you can now choose a component by product template instead of a single variant. Odoo then matches the right variant automatically using the attributes selected on the product being manufactured.
On the BoM line you get a new "Component (product template)" field and a "Match on Attributes" field that shows which attributes are used for the match. The normal component field becomes read-only once a template is chosen, and the unit of measure follows the template.
Odoo checks your setup and blocks mistakes: the component template must have attributes, those attributes must also exist on the manufactured product, and you cannot use the same attribute both in "Apply on Variants" and in the match. It also prevents you from removing attributes from a product or a component template if that would break an existing BoM.
When a manufacturing order is confirmed, the component variant is resolved and the temporary template reference is cleared. The same matching logic is used when exploding a BoM, when computing the BoM price of a product, and in the BoM structure report, so costs and component lists reflect the real variant.
Depends on
Required by other modules
Models and fields (6)
- mrp.bom · extends an existing model
- mrp.bom.line · extends an existing modelproduct_id, product_backup_id, component_template_id, match_on_attribute_ids (Match on Attributes), product_uom_category_id
- mrp.production · extends an existing model
- product.product · extends an existing model
- product.template · extends an existing model
- report.mrp.report_bom_structure · extends an existing model
Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 4 confirmed, 5 with no information of 9 versions.
Sources · Odoo 18.0
Confirmed on 2026-11-03 in branch 18.0 of OCA/manufacture.
terminal Installation and usage
OCA documentation · Odoo 18.0Usage
Source · Odoo 18.0Using this module you can have dynamic components of a BOM. It will allow you to have only 1 line in the BOM if you have hundreds of attribute values for manufacturing product and hundreds of attributes values of component (material).
How to use
> 1. Create a product to produce e.g. Desk. > 2. Set 1 attribute (e.g. Color). And select possible values for it. > 3. Create a component product (material) e.g. Plastic. > 4. Set 1 attribute (Color). And select possible values for it. > 5. Create a BOM. > 6. Select a manufacturing product Desk. > 7. Add a BOM line. Select Component (product template) Plastic. > 8. You will see Color attribute appeared in the Apply On Attribute > field. > 9. Save the BOM. > 10. Create Manufacturing Order. Select Desk with e.g. Red color to > produce and BOM you created. > 11. You will see in the component list Plastic added with > corresponding (red) color.
Consider, that to use this feature component must have only 1 attribute. And a values of this attribute of a manufacturing product should be available for a component.
No verified information in OCA: Installation, Configuration.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.