The Manufacturing module is the centre of gravity for every factory Odoo deployment I run in Bangladesh. Get it right and everything downstream — inventory, costing, procurement, and financial reporting — flows naturally. Get it wrong and you end up with ghost stock, unclosed Manufacturing Orders, and a costing engine producing numbers nobody trusts.
This guide walks through the setup sequence I use in every engagement: prerequisites, Bill of Materials types, Work Center configuration, routing, and the Manufacturing Order lifecycle. Where relevant, I've noted Bangladesh-specific nuances — particularly for RMG, textile, and export manufacturing contexts.
BoMs are the single source of truth. If the BoM is wrong, every MO, cost, and stock move is wrong.
What the Manufacturing module covers (and what it doesn't)
Odoo's Manufacturing module (technically MRP — Material Requirements Planning) handles:
- Bill of Materials (BoM) — the recipe: what goes into making a finished product
- Work Centers — physical production resources (machines, lines, teams)
- Operations & Routing — the sequence of tasks from raw material to finished goods
- Manufacturing Orders (MO) — the actual production instruction document
- Scrap & Rework — recording material losses and rejected output
- Work Orders — task-level instructions for each Work Center (Enterprise only)
What it does not handle without additional configuration:
- Quality control — needs the Quality module (Enterprise)
- Maintenance scheduling — separate Maintenance module
- Advanced capacity planning — uses Work Center working hours but is not a full production scheduler
- Subcontracting — requires specific BoM type and vendor setup
Odoo Community includes MRP v1 — sufficient for simple single-level BoMs and MOs. Enterprise adds MRP v2: multi-level BoM explosion, Work Order tracking, OEE (Overall Equipment Effectiveness), unbuild orders, and the shop-floor tablet interface. Most Bangladesh factories with more than two production steps need Enterprise.
Prerequisites & module activation
Before activating Manufacturing, confirm the following are already configured:
- Inventory module configured — product categories, units of measure, warehouses, and storage locations must be defined. Manufacturing moves stock; if your inventory structure is wrong, MOs will post to the wrong locations.
- Units of Measure enabled — Settings → Inventory → Units of Measure. Critical for Bangladesh factories where fabric is bought in meters but consumed per-unit, or chemicals bought in litres but used in grams.
- Product variants enabled (if needed) — Settings → Inventory → Variants. Essential for RMG and garment factories where the same product has multiple sizes and colours with shared BoMs.
- Costing method decided — AVCO (Average Cost) for most Bangladesh manufacturers. FIFO if you're ISO-certified and need lot-level cost traceability. Set at the product category level before any stock moves. Changing it later is painful. See my inventory valuation guide for the full decision tree.
- Manufacturing module activated — Apps → Manufacturing → Install. This also installs MRP. For Enterprise users, verify that MRP v2 features appear under Settings → Manufacturing.
Bill of Materials setup
The BoM is the foundation of every manufacturing transaction. Every MO, cost roll-up, and procurement trigger derives from it. A BoM defines: what you make, what you consume to make it, and how many of each component per unit of output.
BoM types
Manufacture
Standard in-house production. Creates a Manufacturing Order. Components are consumed from inventory, finished goods are added to stock. Use this for 95% of Bangladesh factory production.
Kit
No MO is created. The product is sold as a kit and components are picked from stock. Used for spare parts kits and bundled export packaging — not for production.
Subcontracting
Components are sent to a vendor who performs manufacturing. Odoo creates a Purchase Order alongside the MO. Common for job work in Bangladesh textile — sending grey fabric for dyeing.
Creating a BoM — step by step
Go to Manufacturing → Products → Bills of Materials → New.
- Set the product — select the finished product. If variants are enabled, you can set a BoM for all variants or a specific one (e.g., "Polo Shirt — White, XL"). For variant-specific quantities (different fabric consumption by size), use the same BoM template and set component quantity by attribute.
- Set BoM type — "Manufacture" for standard in-house production.
- Set quantity — the BoM quantity should typically be 1 unit. Odoo scales component consumption proportionally when you produce larger quantities in an MO. Setting BoM quantity to 100 (for batch costing) is a common mistake — it works but confuses operators and auditors.
- Add components — list every raw material consumed per unit. For a garment: fabric (2.5 m), thread (200 m), buttons (8 pcs), label (1 pcs), poly bag (1 pcs). Set the correct UoM for each. Check that UoMs match how these items are stored in your warehouse — mismatches cause stock valuation errors.
- Set operations (if routing enabled) — link each component to the operation where it is consumed. This enables Work Order-level component tracking. Optional but highly recommended for multi-step production lines.
- Save and confirm — once live, the BoM drives every MO for this product. Changes apply only to new MOs, not in-progress ones.
For garment factories, define a separate BoM for each style or buyer. Fabric consumption, trim specs, and accessory lists differ by buyer — use Odoo's BoM versioning (archive old, create new) to maintain a clean history without deleting production records.
Multi-level BoMs (Enterprise)
If your factory makes sub-assemblies before final assembly — for example, a cycle manufacturer who welds frames before painting — you need multi-level BoMs. The finished product BoM references a semi-finished product (the frame), which itself has a BoM. When Odoo explodes the MO, it creates sub-MOs for each level. This is an Enterprise-only feature under MRP v2.
Work Centers & capacity
A Work Center represents a physical production resource: a machine, a production line, a finishing table, or a team. Work Centers have capacity measured in hours per day and are the foundation of work order scheduling.
Creating Work Centers
Manufacturing → Configuration → Work Centers → New. Key fields:
| Field | What to enter | Bangladesh notes |
|---|---|---|
| Name | Machine or line name | Use names operators recognise: "Line 1 – Stitching", "Flat Knit Machine 3" |
| Working Hours | Shift schedule | Bangladesh factories often run two 8-hour shifts. Create separate Working Time records for Single Shift and Double Shift — link the appropriate one per Work Center |
| Time Efficiency % | Actual vs. theoretical output | Start at 80% for most Bangladesh factories. Refine after 3 months of real production data |
| Capacity | Parallel operations | A production line with 20 operators running in parallel has a capacity of 20 — set this so Odoo doesn't schedule 21 simultaneous work orders on it |
| OEE Target % | Target OEE (Enterprise) | Typical RMG factory: 60–75%. Automated weaving mills: 85%+ |
The most common Work Center error I encounter: Bangladesh public holidays are not removed from the Working Time calendar. Odoo schedules production on Eid holidays. Create a proper Bangladesh public holiday list in the Working Time record at the start of each year.
Operations & routing
An Operation is a task — cutting, stitching, washing, finishing. A Routing is the ordered sequence of Operations that transforms raw materials into a finished product. Routing is an Enterprise-only feature and must be enabled in Settings → Manufacturing → Work Orders.
Creating Operations
Manufacturing → Configuration → Operations → New. For each operation, set:
- Name — what the task is: "Cutting", "Stitching – Body", "Stitching – Sleeve", "Finishing", "QC Inspection", "Packing"
- Default Work Center — which machine or line performs this operation by default
- Duration Computation — "Based on Real Time" (workers log actual time) or "Set Duration" (fixed standard time per unit). Use "Set Duration" initially; migrate to real-time tracking once operators are trained.
- Default Duration (minutes) — standard time per unit produced. E.g., "Stitching – Body": 4 minutes per shirt.
Adding routing to a BoM
Open the BoM → Operations tab → Add a line for each operation in the production sequence. Odoo creates Work Orders automatically when an MO is confirmed — one Work Order per Operation per Manufacturing Order.
Manufacturing Order lifecycle
The Manufacturing Order (MO) is the operational document that drives daily production. Here is the full lifecycle:
Unclosed Manufacturing Orders are the #1 cause of inventory discrepancy in Bangladesh factory deployments. An MO that is "In Progress" for 30 days means components are reserved but not consumed — your stock report shows phantom availability. Enforce a daily close discipline: every MO must be Done or backorder-split by end of shift.
Bangladesh factory pitfalls
After setting up Manufacturing for factories across RMG, textiles, and cycle export, these are the most consistent errors I encounter:
| Pitfall | What happens | Fix |
|---|---|---|
| UoM mismatches in BoM | Fabric bought in yards, BoM in meters — automatic conversion produces wrong costs | Standardise one UoM per material category. Configure UoM conversions precisely (1 yard = 0.9144 m) before go-live |
| No scrap tracking | Rejected garments / cut-off fabric disappear from records — phantom inventory builds up | Enable Scrap on every MO. Create scrap reasons (Cutting Waste, Stitching Defect, Washing Shrinkage) for reporting |
| BoM not reflecting real consumption | Standard cost is wrong; profitability reports are unreliable | Run MO variance reports monthly. Update BoM component quantities quarterly from actual production data |
| Wrong costing method | Standard cost for fashion items means cost is always outdated as fabric prices move | Use AVCO for most Bangladesh factories. Standard cost only if you have a dedicated cost accounting team maintaining it |
| Subcontracting not configured | Job work (washing, dyeing, printing) is done manually outside Odoo — stock disappears during process | Configure Subcontracting BoM for each job work process. Link to the vendor and set the component flow |
For the cost implications of getting this wrong at go-live, see my notes on the real cost of a bad ERP go-live in Bangladesh manufacturing. The pattern is consistent: good setup costs one week of consultant time; fixing a bad setup costs three months and a re-implementation. If you're still scoping the budget, the Odoo cost estimator gives a quick range for a Bangladesh manufacturing deployment.
Manufacturing module setup is part of every manufacturing ERP implementation I lead. If you're configuring for a Bangladesh factory, I'm happy to review your BoM structure and Work Center setup before go-live. Book a scoping call →
Frequently asked questions
Does Odoo Community include the Manufacturing module?
Yes — Odoo Community includes a basic Manufacturing module (MRP v1) with BoMs, MOs, and simple scrap. Odoo Enterprise adds MRP v2: Work Order tracking, multi-level BoM explosion, OEE dashboard, unbuild orders, and the shop-floor tablet interface. Most Bangladesh factories with multiple production steps benefit from Enterprise's routing features.
How do I set up a Bill of Materials for garment manufacturing?
Go to Manufacturing → Products → Bills of Materials → New. Set the finished product (e.g., "Men's Polo Shirt"), select "Manufacture" as the BoM type, and add component lines for each material: fabric (meters), thread (meters), buttons (pcs), label (pcs), poly bag (pcs). For size variants with different fabric consumption, use a single BoM template with component quantity set by variant attribute.
What is the difference between a Work Center and an Operation in Odoo?
A Work Center is a physical resource — a machine, a production line, or a team. An Operation is a task performed at that Work Center: cutting, stitching, finishing. A Routing links Operations to Work Centers in sequence. Work Centers have capacity (hours/day and parallel operators); Operations have standard duration per unit produced.
How does Odoo handle production variances?
When you close an MO with a produced quantity different from the planned quantity, Odoo offers two options: create a backorder (for the remaining quantity to be produced later) or close the shortfall immediately. Component consumption is proportionally adjusted to the actual quantity produced. Cost variances (actual consumption vs. BoM standard) are visible in the Production Variance report — critical for profitability tracking in Bangladesh manufacturing.