Technical Lab · 0013

Odoo Manufacturing module setup for Bangladesh factories — the complete guide.

BoM types, Work Centers, routing, and the full Manufacturing Order lifecycle — configured for how Bangladesh factories actually run. Drawn from RMG, textile, and cycle export deployments.

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:

What it does not handle without additional configuration:

Community vs Enterprise

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

Most Common

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.

Sub-assembly

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.

Outsourced Work

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.

  1. 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.
  2. Set BoM type — "Manufacture" for standard in-house production.
  3. 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.
  4. 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.
  5. 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.
  6. Save and confirm — once live, the BoM drives every MO for this product. Changes apply only to new MOs, not in-progress ones.
Bangladesh note

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:

FieldWhat to enterBangladesh 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%+
Working Hours critical

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:

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:

Draft
MO created. Can be created manually (Manufacturing → Manufacturing Orders → New), triggered by a Sales Order (Make to Order), or generated by scheduler (reordering rules). Components are reserved but not consumed. Still editable.
Confirmed
MO confirmed. Work Orders are generated (if routing configured). Component availability is checked. Scheduled date is set. At this point the MO appears in the shop-floor app for operators. Components transition to "reserved" in inventory.
In Progress
Production started. Operators log Work Order progress (start, pause, done). In the simple flow (no Work Orders), you update the "Quantity Producing" field directly. Component lots/serial numbers are assigned at this stage if lot tracking is enabled.
Scrap
Scrap recorded (optional). Any rejected raw materials or work-in-progress are scrapped via the Scrap button — this moves the quantity out of production stock and into a Scrap location, posting the cost to a Scrap expense account. Track scrap by product and reason.
Produce
Quantity produced set. Enter the actual quantity produced. If it differs from the planned quantity (common in garment production due to rejection), Odoo handles the variance — either creating a backorder for the remaining quantity or closing the shortfall.
Done
MO closed. Components are consumed from stock (inventory decreases). Finished goods are added to stock (inventory increases). Journal entries are posted: Raw Materials → WIP → Finished Goods. Valuation at standard or average cost depending on your costing method.
Critical discipline

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:

PitfallWhat happensFix
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
Note · RMG factory, Gazipur~3 months post-go-live
A knit garment factory I supported kept reporting fabric stock the warehouse physically did not have. The cause was not theft — it was discipline. Operators confirmed Manufacturing Orders but never marked them Done; dozens of MOs sat "In Progress" for weeks, holding components in reserved rather than consuming them. The stock report showed availability that the floor had already cut and stitched. The fix was procedural, not technical: a daily end-of-shift rule that every MO must be Done or backorder-split. Within two weeks the inventory report matched the floor — no new module, just a closed loop.

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.

Next step

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.