Manufacturing Order Without Components
When creating a manufacturing order, the components tab is empty or shows wrong materials:
Issues:
- Manufacturing Order created but no components listed
- "No Bill of Materials found for this product"
- Components don't match expected recipe
- Wrong BOM version applied
- Product variant doesn't match any BOMFix 1: BOM Not Defined
# A Bill of Materials must exist for the manufactured product
# Check:
# Manufacturing > Bills of Materials
# Search for the product
# If missing, create one:
# Manufacturing > Bills of Materials > Create
# - Product: select the finished product
# - BOM Type: Manufacture This Product
# - Components: add each raw material with quantity
# The BOM must be for the EXACT product (variant), not just the template
# Product Template with variants → separate BOM per variant or use "Apply on Variants"Fix 2: BOM Not Linked to Product
# The product field on the BOM must match the MO product
# Check the BOM:
# Manufacturing > Bills of Materials > open the BOM
# Verify the Product field matches exactly
# Common issue with product variants:
# BOM for "T-Shirt" (template) won't apply to "T-Shirt / Red / Large" (variant)
# unless the BOM's "Apply on Variants" includes that variant
# Check via database:
sudo -u postgres psql -d mydb -c "
SELECT mb.id, pt.name as product_template,
pp.id as product_variant_id,
pp2.default_code as variant_code,
mb.type, mb.active
FROM mrp_bom mb
JOIN product_template pt ON mb.product_tmpl_id = pt.id
LEFT JOIN product_product pp2 ON mb.product_id = pp2.id
CROSS JOIN product_product pp
WHERE pp.id = YOUR_MO_PRODUCT_ID
AND (mb.product_tmpl_id = pp.product_tmpl_id)
AND (mb.product_id IS NULL OR mb.product_id = pp.id)
AND mb.active = true;
"Fix 3: BOM Archived or Inactive
# The BOM may exist but be archived:
# Manufacturing > Bills of Materials
# Remove the "Active" filter to show archived BOMs
# If found, unarchive it:
# Select the BOM > Action > Unarchive
# Or check via database:
sudo -u postgres psql -d mydb -c "
SELECT id, product_tmpl_id, active, type
FROM mrp_bom
WHERE product_tmpl_id = PRODUCT_TEMPLATE_ID;
"Fix 4: Wrong BOM Type
# BOM types:
# - "Manufacture this product" → creates MO with components
# - "Kit" → auto-explodes into individual products on SO (no MO)
# - "Subcontracting" → sent to external manufacturer
# If BOM type is "Kit", it won't create MO components
# Change type to "Manufacture this product" for manufacturing
# Manufacturing > Bills of Materials > open BOM
# Change "BoM Type" to "Manufacture this product"Fix 5: Multi-Level BOM Resolution
# If components are themselves manufactured products:
# Odoo can auto-generate MOs for sub-assemblies
# Check if the component has its own BOM:
# The MO should show the top-level components
# Sub-MOs are created when the top-level MO is confirmed
# If sub-components appear instead of the expected components:
# The "Manufacturing Lead Time" on sub-assembly products
# determines the planning orderFix 6: MO Created from Sale Order
# When an MO is auto-created from a sale order:
# The route on the product must include "Manufacture"
# Product > Inventory tab > Routes
# Enable: "Manufacture" (or "Replenish on Order (MTO)" + "Manufacture")
# If the MO was created but has no components:
# The BOM might not have existed when the MO was generated
# Fix: Create the BOM, then recompute the MO:
# Open the MO > Components tab > "Recompute" or recreate the MOFix 7: Quantity and UoM Mismatches
# BOM quantity and MO quantity use Units of Measure
# If the BOM is defined for 1 Unit but MO requests 1 Dozen:
# Components must scale correctly based on UoM conversion
# Check UoM configuration:
# Product > General tab > Unit of Measure
# BOM > Quantity field + Unit of Measure
# These must be compatible (same category)Prevention
DeployMonkey's AI agent validates BOM configurations during product setup. The agent ensures proper product-to-BOM linking, correct variant matching, and component availability before manufacturing orders are created.