BOMs are the easy part
People think the hard bit of a manufacturing ERP is the bill of materials. It isn’t. A BOM is a list, and your engineers already have it in a spreadsheet. The hard bit is everything the supervisor knows and the system doesn’t: which operator is allowed on which machine, what loss is normal on the coating line, why one job always gets split into two.
ERPNext and Odoo both handle the standard flow well. BOM, work order, operations at workstations (work centers in Odoo), material consumption, finished goods into stock. ERPNext even splits Job Cards by the batch size you set on an operation. Where they fall short is the local rules, and that’s where projects stall while someone writes a spec.
What a manufacturing ERP module from erpfly includes
On ERPNext, we generate a Frappe app with DocTypes for the things the standard product doesn’t model (operator certifications, loss thresholds, machine-specific checklists), document hooks on Work Order and Job Card, and Script Reports for the numbers your production meeting argues about. Custom fields ship as fixtures and install with bench migrate.
On Odoo, it’s an addon that inherits mrp.production, mrp.workorder and mrp.bom, adds constraints and computed fields, and extends the standard views instead of replacing them. Access rules go in ir.model.access.csv, and recurring checks run as ir.cron jobs.
Not sure which platform suits your plant? We cover that in ERP for manufacturing companies.
Worked example: a sheet metal shop with a certification rule
Say you fabricate steel enclosures. The routing is laser cutting, bending on a press brake, then powder coating. A typical Work Order is 120 enclosures.
Two rules come from your safety officer and your production manager:
- Only operators with a valid press brake certificate may log time on that machine. Certificates last 12 months.
- If process loss on any job passes 3%, the workstation supervisor hears about it the same shift.
On Tuesday, Marek tries to log time on the press brake Job Card. His certificate expired three weeks ago. The Job Card won’t save, and the message names the row and the machine, so the shift lead knows exactly what to fix. Ana, who is certified, takes over.
The bending finishes with 5 enclosures scrapped out of 120. That’s about 4.2%, so when the Job Card is submitted a ToDo lands with the press brake supervisor, linked to the card. A small thing, but it can be the difference between catching a worn tool today and finding 60 bad parts next week.
Notice what the prompt didn’t include. There’s no dashboard in it, no AI scrap predictor and no new approval chain. Two rules, both already enforced on paper, now enforced by the system. Changes this size are the ones that stick on a shop floor, and you can add the next rule once these two stop generating complaints.
The code on this page covers both rules. The Operator Certification DocType, a supervisor field on Workstation and the hooks entry make up the rest.
Requests we’d question
Real-time machine data through the ERP. ERPNext and Odoo are not built to swallow a reading every second. Aggregate it on the machine side and send totals per job.
A routing for every product variant. If 200 variants share three routings, build three routings. Copy-paste BOM trees are how costing goes wrong.
Backflushing everything on day one. Automatic consumption is tidy until your BOMs are slightly wrong, and at the start they always are. Record actual consumption for a month, then decide.
Planning to the minute. Scheduling a job shop to the minute in an ERP produces a very precise plan that’s wrong by lunchtime. Plan by shift or by day.
Connecting production to stock, purchasing and quality
Work orders consume stock, so inventory management has to be trusted first. Shortages turn into requests handled by purchase management, and in-process inspections belong in quality management. If you already run ERPNext, ERPNext custom module development explains how generated apps are structured, and Odoo shops should read about Odoo module development.