ISA-95 and B2MML: How to Integrate ERP with MES
ISA-95 B2MML integration between ERP and MES how to
Also searched as
- B2MML production schedule ProductionPerformance example
- ISA-95 level 3 level 4 integration
- ISA-95 part 2 object model ERP MES
- B2MML XML ERP to MES work order
Short answer
ISA-95 defines the boundary between business systems (Level 4, the ERP) and manufacturing operations (Level 3, the MES) and the information that crosses it. B2MML is the XML implementation of those models. In practice you exchange a ProductionSchedule from ERP to MES, and ProductionPerformance, plus material and equipment information, back, mapping each element to your ERP's work order and confirmation APIs.
Applies to: ISA-95 (IEC 62264) based integrations using B2MML XML or equivalent JSON, against any ERP with a web service, IDO, BAPI or REST interface
How to implement an ISA-95 / B2MML interface
- 1Draw the Level 3 / Level 4 boundary: ERP owns orders, materials, costing and customers; MES owns detailed scheduling, execution, genealogy and machine interaction.
- 2List the information flows you need: master data (material, equipment, personnel), ProductionSchedule (ERP to MES), ProductionPerformance (MES to ERP), and optionally ProductionCapability and ProductionRequest.
- 3Select the B2MML version your MES vendor supports and obtain its XSDs; do not mix versions between the two sides.
- 4Map ISA-95 elements to ERP objects: ProductionRequest or ProductionSchedule to production/work order, SegmentRequirement to routing operation, MaterialRequirement to BOM component, EquipmentRequirement to work center.
- 5Define identifiers: a stable ID for each order, segment and material that both systems recognise, plus a unique message ID for idempotency.
- 6Build the transport (REST, SOAP, message queue, or an iPaaS) with schema validation on receipt and a dead-letter queue for rejects.
- 7Return ProductionPerformance with ProductionResponse, SegmentResponse, material actuals (consumed, produced) and personnel and equipment actuals, and post them to the ERP via its supported confirmation API.
- 8Test with sample messages for edge cases: split orders, rework, partial completions, cancelled orders and re-sent messages.
What ISA-95 gives you, and what it does not
ISA-95 (IEC 62264) is a standard model: a functional hierarchy (Levels 0 to 4), defined activity models, and an object model for information exchanged between enterprise and manufacturing systems. B2MML, maintained by MESA, is the XML schema family that encodes those objects. The value is a shared vocabulary so ERP and MES vendors, and your integrators, mean the same thing by schedule, segment, material lot and performance.
What it does not give you is plug and play. B2MML is intentionally generic, with many optional elements, so two compliant systems still need a mapping agreement: which optional fields are populated, what units are used, and how your ERP's routings map to segments. Treat the standard as the dictionary and your interface spec as the conversation.
The core messages
ProductionSchedule carries what to make: one or more ProductionRequests, each with SegmentRequirements describing steps, materials, equipment and personnel, along with planned start and end times and quantities. ProductionPerformance carries what happened: ProductionResponses with SegmentResponses, actual quantities consumed and produced, actual times, and the resources used.
Keep messages business-level. The MES should not need the ERP's internal table keys, and the ERP should not receive raw machine data. Machine signals belong to a lower level, reaching the MES through OPC UA or a historian, and are summarised into performance records before crossing to the ERP.
<ProductionPerformance xmlns="http://www.mesa.org/xml/B2MML">
<ID>PERF-000412</ID>
<ProductionResponse>
<ID>WO-100234</ID>
<SegmentResponse>
<ID>OP-40</ID>
<StartTime>2026-10-19T06:02:11Z</StartTime>
<EndTime>2026-10-19T09:47:50Z</EndTime>
<MaterialProduced>
<MaterialDefinitionID>PART-7731</MaterialDefinitionID>
<Quantity><QuantityString>46</QuantityString><UnitOfMeasure>EA</UnitOfMeasure></Quantity>
</MaterialProduced>
</SegmentResponse>
</ProductionResponse>
</ProductionPerformance>Mapping to the ERP
Most ERPs do not speak B2MML natively. You need an adapter: a service or iPaaS flow that transforms between B2MML and the ERP's own interface (for example SyteLine IDOs, M3 MI programs or APIs, SAP BAPIs and OData, NetSuite REST or SuiteScript, Dynamics OData). Keep the transformation logic in one place, versioned and covered by tests, rather than scattered in scripts on either side.
Decide how revisions and effectivity are handled. If an engineering change alters a routing mid-order, the MES must know which segment definition applies to which order. Pass the revision explicitly rather than assuming the latest.
Versioning, validation and testing
Validate every inbound message against the XSD and fail fast with a clear reason. Version your interface contract, and support at least one previous version during rollouts. Log full message payloads with correlation IDs in a store you can search, since interface troubleshooting is mostly reading messages.
Build a regression set of real messages including ugly ones: duplicate sends, out-of-order segments, quantity zero, missing optional fields, and unit mismatches. Run it on every change to the adapter or either system's upgrade.
Common pitfalls
- !Assuming two B2MML-compliant systems will interoperate without a written mapping agreement.
- !Mixing B2MML schema versions between the ERP adapter and the MES.
- !Sending raw machine telemetry through the ERP interface instead of summarised performance.
- !Omitting message IDs, making retries create duplicates.
- !Ignoring unit-of-measure differences between systems.
- !Letting routing revisions change mid-order without passing the revision to the MES.
How an ERP-grounded AI assistant handles this
AI can help at the edges of an ISA-95 project: an assistant grounded in the ERP can explain which routing operations and BOM components would map to which segments, and compare message payloads against posted ERP documents to find mismatches. For SyteLine, SyteRay can help draft and review the IDO-side mapping. It should not generate production interface code unreviewed, and any write-back stays behind human approval.
Frequently asked questions
Is B2MML the same as ISA-95?
No. ISA-95 is the standard (IEC 62264) defining models and terminology. B2MML is an XML schema implementation of those models published by MESA International. You can follow ISA-95 concepts using JSON or another format, but B2MML is the best-known XML encoding.
Do I need B2MML if my MES vendor has a native ERP connector?
Not necessarily. A vendor-supported connector for your ERP and version can be the lower-risk path. B2MML is most useful for multi-vendor environments, for reducing lock-in, or when no maintained connector exists for your ERP.
Is ISA-95 relevant for cloud ERPs like NetSuite?
Yes, the information model is unchanged. Only the transport and API style differ, usually REST or SOAP web services and an iPaaS rather than on-prem file drops. Mind API rate limits and concurrency governance when sending frequent performance messages.
What is the difference between ProductionSchedule and ProductionPerformance?
ProductionSchedule is the plan sent from the ERP to the MES: what to produce, when and with what. ProductionPerformance is the actuals reported back: what was made, what was consumed, who and what equipment were used, and when. Together they close the loop between planning and execution.
Related
How to Send Production and Labor Reporting from MES to ERP
Treat the ERP work order as the system of record for cost and quantity, and the MES as the system of record for what physically happened. Send one confirmation message per operation (or per shift or lot) containing work order, operation sequence, good quantity, scrap quantity with reason, and labor start/stop per employee and work center, post it through the ERP's supported transaction API, and make the message idempotent so a retry never double-posts.
AdvancedHow to Connect OPC UA Machine Data to Your ERP
Do not connect OPC UA servers straight to the ERP. Read machine tags through an edge gateway or MES, convert signals into business events (cycle complete, stop, state change, count), attach the work order context, and post summarised confirmations to the ERP through its supported API. The ERP wants quantities, times and reasons per order, not millions of raw tag values.
How-toHow to Design Scrap and Downtime Reason Codes for MES and ERP
Keep one governed list of reason codes with a small hierarchy, owned in a single system and synchronised to the other. Separate scrap reasons from downtime reasons, mark each downtime code planned or unplanned and each scrap code as process, material, design or operator related, and map codes to ERP accounts or cost categories where accounting needs them. Fewer, clearer codes beat long lists nobody uses correctly.
How-toHow to Calculate OEE from MES Data and ERP Standards
OEE equals Availability times Performance times Quality. Availability comes from MES run and stop events against planned production time, Performance compares actual output to the ideal cycle time (usually the routing standard from the ERP), and Quality is good units divided by total units. The numbers are only trustworthy if planned time, ideal cycle time and the good/scrap split are defined once and used consistently.
How-toHow to Sync an NCR From Your QMS to ERP Quarantine and MRB Disposition
The reliable pattern is two events: when the NCR opens, the ERP moves or flags the affected lot or serial into a non-nettable quarantine status; when the Material Review Board closes it, the disposition (use as is, rework, repair, scrap, return to vendor) triggers exactly one matching ERP transaction. The NCR number is the key that ties both sides together.
How-toHow to Link a CAPA to ERP Lots and Serial Numbers for Containment and Effectiveness
A CAPA is only as good as its containment scope, and the scope comes from ERP genealogy: forward trace from the suspect raw material lot or process to every job, serial and shipment that consumed it, and backward trace from the failed serial to its components. Store the CAPA number against those ERP records, then use ERP rejection and return data to verify effectiveness.
AI for ERPAI shop floor assistant for operators working inside your ERP
An on-prem AI copilot answers operator questions against your ERP work instructions, travelers, and routings in plain language, at the machine, without a screen full of menus.
AI for ERPAI for Infor SyteLine and CloudSuite Industrial
Add grounded AI to Infor SyteLine or CloudSuite Industrial: natural-language answers, agents over IDOs and ION, on-prem or CloudSuite deployment.
Stuck on ERP and MES integration?
Talk to engineers who work inside ERP and MES integration every week, and who build private AI that answers these questions from your own ERP data.