Industry guide · ERP

MES Software Development: A Buyer Guide for Plants Still Scheduling on Whiteboards

The short answer

If your plants schedule on whiteboards while the enterprise resource planning system stops at the work order, building is usually the right call at your scale. In Digital Heroes delivery experience across 2,000+ projects, a focused MES first release runs $60,000 to $130,000 and ships in 12 to 16 weeks, with full multi-plant platforms at $150,000 to $400,000 phased over 6 to 12 months.

Why an MES makes or breaks a multi-plant manufacturer

It is 6:10 a.m. at your second plant. The production meeting happens in front of a whiteboard covered in magnetic job cards, because the whiteboard is the only place the real schedule exists. Epicor says work order 4471, five hundred weldments, ships Friday. The whiteboard says the weld cell lost its second certified welder to a dentist appointment and the powder line is running a rush job that never touched the system. While the meeting runs, a shift supervisor sits at a terminal keying yesterday's paper travelers into the ERP, forty five minutes of typing that makes it accurate as of last night, which is to say, wrong.

This is the normal condition for manufacturers between roughly $20 million and $300 million in revenue. The enterprise resource planning system, whether it is NetSuite, Epicor Kinetic, SAP Business One, or Dynamics 365 Business Central, does exactly what it was bought to do: quotes, purchase orders, inventory dollars, invoices. It stops at the shop floor door. Everything between work order released and work order complete lives on whiteboards, paper travelers, and an end-of-shift spreadsheet, and that gap is precisely where your margin is decided.

Run the numbers on your own operation. Three plants, three shifts, a shift lead spending forty five minutes per shift transcribing travelers: that is over thirty hours a week of supervision spent typing. Add expedite fees discovered at packing and the customer who quietly resourced after the third late shipment. A manufacturing execution system, MES, is the layer that closes this gap. The six-figure question is whether you rent one off the shelf or build one that matches how your plants actually run.

Problem: your ERP thinks in work orders, your floor runs in operations

The ERP releases work order 4471 as a single object with a quantity and a due date. Your floor sees seven operations: saw, deburr, brake, weld, inspect, powder coat, pack, spread across four work centers with an outside plating step in the middle. The ERP has no opinion about any of that until someone backflushes the completion. So the material handler finds work in process by walking the aisles, and the answer to "where is job 4471 right now" is always "let me go look."

This is not a configuration problem you can fix inside the ERP. NetSuite and Business Central track order status, not operation status. Epicor's scheduling module assumes the data underneath is current, and it is a shift behind by design because updates depend on humans typing at the end of the day. Infinite capacity MRP dates were never meant to sequence a Tuesday afternoon on the brake press.

A custom MES puts a dispatch list on a tablet at every work center: what to run next, in what sequence, with the traveler, drawing, and setup sheet attached. Operators scan on at operation start and scan off at completion, so WIP is visible in real time without anyone typing at shift end. Digital Heroes builds the ERP sync as a two way contract: work orders and routings flow down, completions, scrap, and labor flow up, with a reconciliation screen for the ERP administrator instead of a mystery when counts drift. Finance keeps its system of record. The floor finally gets a system of execution.

Problem: machine data dies inside the PLC

Your CNC machines, presses, and packaging lines already know their cycle counts, fault codes, and run states. That data lives and dies inside a programmable logic controller, PLC, that nothing else reads. So overall equipment effectiveness, OEE, gets computed in a spreadsheet once a month from operator logs, and it flatters everyone: the 22 minute changeover recorded as 10, the micro stops that never get written down at all. In our experience, a plant that believes it runs at 75 percent measures closer to 55 once the machines are finally instrumented.

The ERP cannot help because it has no machine connectivity, and bolting on a historian gives you timestamps with no production context: it can say the machine stopped at 2:14 p.m., but not which order was running, who was at the station, or whether the stop was a die change or a jam.

A custom build connects machines over OPC UA or MTConnect where the controller supports it, and over Modbus, retrofit sensors, or current monitoring for the 1994 press with no network port. The MES joins machine events to the order and operator context it already holds. When a stop exceeds a threshold you define, the station tablet asks for a reason code within seconds, while the operator still remembers. OEE stops being a monthly argument and becomes a live number per shift, per machine, per part.

Problem: one quality claim triggers a three-day paper chase

An automotive customer emails: a bracket cracked at their line, and they want every shipment containing material from the same steel coil identified by Thursday. In a paper plant, two quality engineers spend three days pulling travelers from banker's boxes and cross referencing heat numbers against receiving logs. Then you over scope the containment because you cannot prove which lots are clean, and you pay to sort or scrap product that was fine.

ERP lot control does not solve this because it is blind through WIP: the system knows which coils you received and which finished goods you shipped, but the linkage between them was handwritten on a traveler, if it was captured at all.

A custom MES enforces genealogy at the point of consumption: the saw operation cannot start until the coil tag is scanned, and every downstream operation inherits the chain. Forward and backward trace becomes a query that runs in minutes: this coil touched these 14 work orders, which shipped in these 40 cartons to these 3 customers. For shops selling into automotive or aerospace, this is what IATF 16949 and AS9100 auditors want demonstrated, not described.

Problem: scrap shows up five weeks later as a variance nobody can explain

The controller closes the month and finds a six percent unfavorable material variance at plant one. Nobody can say which jobs, operations, or weeks produced it, because scrap was recorded as a single number on the traveler, if the operator remembered. By the time anyone investigates, the worn tooling that caused it has run 40 more jobs.

ERP quality modules capture scrap at completion, as a quantity, which is the information you already had. What you need is the reason, the operation, and the moment.

In a custom MES, scrap is reported at the station where it happens, with a reason code from your own taxonomy, tied to the operation, machine, operator, and material lot. A supervisor gets an alert the shift an operation's scrap rate crosses your threshold, not at month end. Quality holds stop a traveler in software: a held order physically cannot be scanned into the next operation until disposition. Rework loops, the thing generic tools model worst, get first class treatment because the workflow is built from your actual routing exceptions.

Problem: off-the-shelf MES forces your plant into someone else's model

The commercial MES market is real: Siemens Opcenter, Rockwell's Plex, Tulip, L2L. If they fit, use them. But mid market manufacturers hit three walls. Licensing is priced per user or per station, and a three shift plant multiplies every seat across all three crews; clients arrive at Digital Heroes holding six figure annual quotes before implementation has even been scoped. The implementation itself is integrator led and commonly runs 12 to 18 months, often costing more than the licenses. And most expensive of all, the platform has a process model, and where your plant differs, outside plating loops, shared work centers across value streams, one serialized product line inside a lot controlled plant, you either change the plant or pay to customize software you will never own.

Building inverts that. The data model starts from your routings and your exceptions. No per seat meter runs across three shifts and three plants. When you add plant four, you deploy software you own instead of renegotiating a license.

What custom MES development costs and how long it takes

These bands come from Digital Heroes delivery experience across 2,000+ projects, not an analyst report. A focused first release, typically one plant with operator stations, dispatch lists, scan based WIP tracking, scrap and downtime capture, and two way ERP sync, runs $60,000 to $130,000 and ships in 12 to 16 weeks. A full platform, machine connectivity across dozens of assets, finite scheduling, genealogy and recall tooling, multi plant rollout, runs $150,000 to $400,000 phased over 6 to 12 months, with the floor using release one while later phases are built.

What pushes MES toward the top of those bands: the number and age of machine integrations (five OPC UA capable CNCs are cheap, thirty mixed generation PLCs with two that predate ethernet are not), regulated traceability with electronic signatures, finite scheduling with your real constraints encoded, offline tolerance so a network blip never stops a line, and every additional site with a different process. Scanners, label printers, and ruggedized tablets are real line items but rarely the driver.

Build vs buy: an honest line in the sand

Buy when you are a single plant with under roughly 25 machines, your processes look like the demo (discrete assembly, linear routings, minimal rework), and you can absorb a platform implementation. Tulip or L2L on top of your ERP is a defensible answer there, and cheaper than building. Also buy if a parent company has already standardized on Opcenter or Plex; fighting corporate IT is not a project.

Build when any two of the following are true: you run multiple plants with different processes, the whiteboard still beats your ERP's schedule, per seat quotes across your shift structure exceed roughly $80,000 a year, your traceability requirement is contractual and audited, or the way you route and rework product is part of why customers choose you. At $100,000 to $400,000 of budget, our position is direct: a multi plant, high volume operation with nonstandard flows should build the execution layer and keep the ERP for what it is good at. The companies that regret building are the ones that tried to rebuild the ERP too. Do not. Build the layer the ERP never covered.

How to choose a developer for MES software

First, make them draw your data model before you sign. A developer who has built MES will whiteboard work orders decomposing into operations, lots consuming into genealogy, serials, reason code taxonomies, and shift calendars without prompting. If the first diagram shows orders and statuses and nothing else, they are about to learn manufacturing on your budget.

Second, interrogate machine connectivity with specifics: which PLC families they have integrated, what they do with a controller that only speaks a 1990s serial protocol, how they timestamp events when the network drops. Vague answers here become change orders later.

Third, ask how the ERP sync fails. Not whether, how. The honest answer describes queues, retries, and a reconciliation view for when the ERP rejects a completion mid shift. Anyone who says the integration just works has not run one through a quarter end close.

Fourth, if you are audited, ask for compliance artifacts from past builds: append-only audit trails, electronic signature flows for FDA 21 CFR Part 11 if you touch medical or food, document control patterns for AS9100 or IATF 16949. Compliance retrofitted after the fact costs roughly what the first release did. Designed in from the first sprint, it is mostly discipline.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. Across more than 5,400 IT projects studied by McKinsey and the University of Oxford BT Centre, large IT projects ran on average 45% over budget and 7% over schedule while delivering 56% less value than predicted. Source: McKinsey & Company / University of Oxford (BT Centre for Major Programme Management) (2012) →
  2. Across 1,471 IT projects the average cost overrun was 27%, but one in six projects was a 'black swan' with an average cost overrun of 200% and a schedule overrun of nearly 70%. Source: Harvard Business Review (Bent Flyvbjerg & Alexander Budzier, University of Oxford) (2011) →
  3. SHRM's 2025 benchmarking data puts the average cost-per-hire at $5,475 for nonexecutive roles and $35,879 for executive roles - executive hires are on average nearly 7x more expensive than nonexecutive hires. Source: SHRM (Society for Human Resource Management) (2025) →
  4. In an RCT, the no-show rate was 23.5% for patients receiving a text-message reminder versus 38.1% for the control group - a 14.6 percentage-point reduction (p = 0.04). Source: Clinical Pediatrics / PubMed Central (Lin et al.) (2016) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does it cost to build a custom MES for a multi-plant manufacturer?
Across Digital Heroes delivery experience, a focused first release covering one plant with operator stations, WIP tracking, and ERP sync runs $60,000 to $130,000. Full multi-plant platforms with machine connectivity and lot genealogy run $150,000 to $400,000 phased over 6 to 12 months. The biggest drivers are the number and age of machines being connected and how many sites you roll out to.
Should we buy Siemens Opcenter or Plex instead of building a custom MES?
Buy them if you run a single plant with standard discrete processes and can absorb a 12 to 18 month integrator-led implementation plus per-seat or per-station licensing across every shift. Build when you run multiple plants with different processes, your routings include heavy rework or outside processing, or annual license quotes cross roughly $80,000. Ownership matters too: customization on their platform is money spent on software you rent.
Can a custom MES integrate with NetSuite, Epicor, or SAP Business One?
Yes, and that integration is the core of the project, not an add-on. Work orders, routings, and bills of material flow down from the ERP, while completions, scrap, and labor post back automatically, so finance keeps its system of record. A well-built sync includes queuing, retries, and a reconciliation screen so a mid-shift ERP outage never stops the floor.
How long does custom MES development take before the floor can use it?
A focused first release ships in 12 to 16 weeks in Digital Heroes delivery experience: dispatch lists, scan-based operation tracking, scrap and downtime capture, and ERP sync at one plant. Machine connectivity, finite scheduling, and additional plants phase in afterward, typically over 6 to 12 months total. Operators use release one while later phases are built.
How do we move off whiteboards and paper travelers without stopping production?
Run the MES in parallel on one value stream or work center first, keep the paper traveler alongside the scans for two to four weeks, then retire paper cell by cell. The whiteboard usually dies on its own once supervisors trust the dispatch list. A big-bang cutover across all plants at once is the one migration pattern we advise against.
Who owns the source code if Digital Heroes builds our MES?
You do. Code, database schemas, machine connectivity adapters, and documentation transfer to you, and the system runs in your cloud account or on-premise at the plant. There is no per-seat or per-station license, which is exactly the cost trap a three-shift operation hits with commercial MES platforms.
Can an MES connect to 30-year-old machines that have no network port?
Yes. Machines without modern controllers get retrofit sensors, current monitoring, or serial protocol bridges instead of OPC UA, and the MES treats their signals the same way. Connecting legacy equipment costs more per machine than a modern CNC, which is why the mix and age of your machines is one of the biggest pricing drivers.
Can a custom MES meet FDA 21 CFR Part 11 or AS9100 traceability requirements?
Yes, when the requirements are designed in from the first sprint: append-only audit trails, electronic signatures on quality dispositions, enforced genealogy scans, and controlled documents at the station. Auditors respond well to demonstrable, query-based traceability instead of paper reconstruction. Retrofitting compliance after the build is where it gets expensive, so name the standard during discovery.
What should the first release of a custom MES include?
Operator stations with dispatch lists, scan on and scan off operation tracking, scrap and downtime capture with reason codes, and two-way ERP sync at a single plant. That set kills end-of-shift data entry and makes WIP visible, which is where the fastest payback lives. Machine data, scheduling, and genealogy usually follow in phase two, prioritized by whatever hurts most.
How many developers does it take to build an ERP?
A typical Digital Heroes ERP pod is five to seven people: two or three backend engineers, one frontend engineer, a QA engineer, a project manager, and a part-time architect and designer. Bigger teams rarely go faster on ERP because the bottleneck is decisions about your business rules, not typing speed. What you need on your side is one empowered internal owner who can answer process questions within a day.
Can I start with one ERP module instead of the full system?
Yes, and it is how most successful custom ERP projects at Digital Heroes begin. We build the single module causing the worst pain first, typically inventory or order management, get it live in 10 to 14 weeks, and let it prove ROI before the next phase gets funded. Starting with one module also derisks data migration because you move one dataset at a time.
Can I build my product on a no-code tool like Bubble instead of hiring developers?
For testing whether anyone wants the product, yes, and Bubble's paid plans start at $29 a month, which is the cheapest validation you will ever buy. The ceiling arrives with complex data relationships, heavy integrations, performance at a few thousand users, and the fact that you cannot export a Bubble app to servers you control. A path many Digital Heroes clients take: prove demand on no-code, then rebuild custom once revenue justifies it, treating the no-code version as a paid prototype rather than a foundation.
How do I calculate the ROI on a custom ERP?
Add up three lines: hours of manual work removed at loaded labor cost, subscription licenses you cancel, and error costs like mispicks and double entry that disappear. In Digital Heroes delivery experience, mid-market ERP builds typically reach payback in 18 to 30 months, faster when they replace a per-seat platform at 30 or more users. Run the math over five years, because that is where a one-time build beats recurring licenses decisively.
Can a freelancer build an ERP, or do I need an agency?
An ERP is too wide for one person: it needs backend, frontend, database design, integrations, QA, and someone mapping your business processes. A solo freelancer can extend an existing ERP or ship one small internal tool, but full ERP builds by single developers are the most common rescue scenario Digital Heroes takes on. If budget is tight, shrink the scope to one module rather than shrinking the team below three or four people.
How much does a custom ERP cost for a small business?
A small-business ERP covering two or three core modules typically runs $40,000 to $120,000, with inventory, ordering, and accounting sync being the usual starting set. Across 2,000+ Digital Heroes projects, integration count and user roles drive cost far more than screen count. A full mid-market ERP with six or more modules usually lands between $150,000 and $400,000.
Will a custom ERP scale as we grow from 50 to 500 employees?
Yes, if it is designed for that from the start, which mostly means clean database design, permissions that handle new departments, and modules that stay separable. Adding users to software you own costs nothing in licenses, the opposite of the per-seat scaling penalty on NetSuite or Dynamics. What does need budget as you grow is new modules and integrations, so keep a small standing development arrangement rather than restarting a vendor search every two years.
Who owns the source code if an agency builds my ERP?
You should, in full, and it must be written into the contract as work for hire with IP assignment on payment. At Digital Heroes every client receives the complete repository, database schemas, and deployment documentation, so they could hand the system to another team tomorrow. Walk away from any ERP proposal built on the agency's proprietary platform with ongoing license fees, because that recreates the vendor lock-in you were escaping.
What tech stack should a custom ERP be built on?
A boring, hireable one: Digital Heroes most often ships ERPs on PostgreSQL with a Node.js or Python backend and a React frontend, hosted on AWS or Azure. The stack matters far less than the database design, because your ERP schema will outlive every framework choice. Be skeptical of any agency proposing a niche or proprietary framework, since your ability to hire maintainers later is part of the total cost.
How do I vet a software development agency before signing a contract?
Ask to speak with two past clients whose projects resemble yours in size and industry, and ask exactly who will write your code, since some agencies sell senior faces and deliver junior or subcontracted hands. Demand a written specification with acceptance criteria before any fixed price, and check that their portfolio links to products that are actually live. An instant quote given without questions about your workflows is the clearest warning sign there is.
Can custom software connect to the tools we already use, like QuickBooks, Stripe, and Google Workspace?
Yes, and connecting your existing tools is one of the main reasons to build custom: mainstream platforms like QuickBooks, Stripe, Shopify, and Google Workspace all publish documented APIs. Budget 1 to 3 weeks of work per integration depending on API quality and how much data flows in both directions. Ask any vendor whether they have integrated with your specific tools before, because quirks like QuickBooks' OAuth token handling and API rate limits get learned on someone's project, and it should not be yours.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?