JustPaste.it

Who Owns the Truth? Integrating ERP, PIM, and OMS in a MACH Commerce Architecture

 

Enterprise commerce architectures are often presented as collections of independent applications connected through clean APIs.

The diagrams look straightforward.

A product information management system sends catalog data to the storefront. An ERP supplies financial and purchasing information. An order-management system coordinates fulfillment. Payments and inventory are handled by specialized services.

In production, those connections are rarely simple.

Each system has its own data structures, update schedules, and assumptions about business processes.

A product can be available in one application but unavailable in another. An order can be financially complete while fulfillment remains uncertain. A price can be correct in the ERP and outdated in the commerce application.

The central challenge of MACH adoption is therefore not connecting applications. It is determining which application has the authority to make each business decision.

MACH Changes the Integration Problem

MACH architecture emphasizes microservices, API-first design, cloud-native SaaS, and headless experiences.

These principles allow organizations to separate capabilities that were previously embedded in large platforms.

That separation can improve flexibility, but it shifts integration responsibilities onto the enterprise.

A monolithic commerce system may enforce consistency through shared application logic and databases.

A composable environment relies on explicit contracts between independently managed components.

The broader discussion of MACH architecture for enterprise ecommerce platforms addresses the advantages and operational trade-offs of this approach.

For integration teams, the practical implication is clear: independence must be designed around business ownership rather than around software product boundaries alone.

ERP: Financial and Operational Authority

ERP systems often manage purchasing, accounting, supplier records, financial transactions, and other enterprise operations.

Their role in ecommerce depends on the organization's operating model.

Some enterprises use the ERP as the authority for product costs and financial inventory balances.

Others maintain stock availability in a dedicated inventory platform while using ERP for financial valuation and procurement.

The distinction matters.

If a commerce service needs to know whether a customer can purchase an item, consulting an accounting-oriented inventory value may not provide the correct answer.

The integration should identify the precise business facts owned by ERP and the facts derived elsewhere.

It must also account for update frequency.

A financial posting process may operate on a different schedule from customer-facing availability.

Trying to make every ERP function respond synchronously during checkout can create unnecessary dependencies.

A better design often separates financial recordkeeping from the real-time decisions required to complete customer transactions.

PIM: Product Information Must Have One Editorial Authority

A PIM manages product information such as descriptions, attributes, specifications, categorization, and localized content.

The commerce platform may need copies of that information for browsing and transactions.

Search services may need another representation optimized for indexing.

Marketplaces may require channel-specific attributes.

These copies are not inherently problematic.

The risk emerges when several systems independently modify the same product information.

A category manager might update a specification in PIM while a merchandising application retains an older value.

The organization should establish which fields are authoritative in each domain.

It should also define how product changes are published, validated, and synchronized.

For example, a product's marketing description may come from PIM, while its available price comes from a pricing service.

The storefront must combine those results without implying that all information originated from one system.

Field-level ownership is often more useful than assigning blanket authority to an entire application.

OMS: The Coordinator of Fulfillment Commitments

An OMS manages the execution of customer orders.

Its responsibilities may include allocation, fulfillment routing, shipment coordination, and order-state management.

In a MACH architecture, the OMS often connects independently managed commerce and operational systems.

The challenge is establishing when an order becomes authoritative.

Consider an online purchase.

The customer submits checkout. The payment provider authorizes the transaction. An inventory service reserves the item. The OMS receives instructions to begin fulfillment.

Each step can succeed or fail independently.

The architecture must determine which system owns the order's current business state and which events can change that state.

Without a shared state model, one application may report an order as confirmed while another treats it as incomplete.

That discrepancy can affect both customer communication and operational decisions.

The OMS integration should therefore include explicit state transitions, event ownership, exception handling, and reconciliation.

Build a Data Ownership Matrix

Before designing APIs, the architecture team should establish authoritative ownership for important business entities.

A simple working model might look like this:

Business data Proposed authority Common consumers
Product descriptions PIM Storefront, search, marketplaces
Financial product costs ERP Finance, purchasing, analytics
Customer-facing selling prices Pricing capability Cart, checkout, sales channels
Inventory availability Inventory or reservation authority Storefront, OMS, POS
Order lifecycle OMS or designated order service Customer accounts, fulfillment, support
Financial transactions Payment and accounting authorities ERP, reconciliation, support

The precise assignments vary by organization.

What matters is that each critical business fact has a defined authority and an established process for correcting inconsistencies.

A data ownership matrix is useful only when teams enforce it through integration design and governance.

Avoid the Shared Database Shortcut

When independent services need the same information, direct access to a shared database may appear convenient.

It reduces the immediate effort of building APIs.

However, it also allows consumers to depend on internal data structures that may change without warning.

A service cannot evolve independently if several unrelated applications rely on its tables and undocumented relationships.

For a mature MACH environment, business capabilities should expose supported interfaces rather than requiring outside consumers to manipulate their databases.

There are exceptions during migration.

A legacy monolith may require temporary synchronization with new services while dependencies are gradually removed.

Those arrangements should have explicit owners and retirement plans.

Otherwise, temporary integration shortcuts become permanent architectural constraints.

Events, APIs, and Batch Processes Have Different Roles

Enterprises do not need to choose one integration pattern for every interaction.

Synchronous APIs are useful when a caller requires an immediate decision.

Inventory reservation during checkout is one example.

Events are useful when multiple consumers need to react to a business change independently.

An order confirmation might trigger fulfillment, customer notifications, and reporting updates.

Batch processing can remain appropriate for large historical data transfers or less time-sensitive financial reconciliation.

The architecture should select mechanisms according to business semantics.

A common mistake is using events for operations that require immediate coordination without designing a consistency mechanism.

Another is requiring synchronous API calls for information that can be distributed asynchronously.

Both choices can create unnecessary failure dependencies.

Handle the Dual-Write Problem

Distributed commerce frequently requires a service to update its database and notify other systems.

Suppose an order service creates an order record and then publishes an event.

If the database update succeeds but event publication fails, the OMS or fulfillment platform may not receive the order.

If the event is published before the database transaction commits, downstream consumers might act on information that was never successfully stored.

The transactional outbox pattern addresses this by recording the event alongside the business transaction.

A separate publisher then delivers the event to the messaging system.

AWS documents the pattern as a way to reduce inconsistencies caused by coordinating database writes and message publication.

The implementation still needs duplicate handling, retries, failure monitoring, and consumer reconciliation.

No messaging pattern removes the need to define correct business outcomes.

Version Contracts Without Disrupting Consumers

Independent services inevitably change.

A pricing API may add new discount structures.

An OMS might introduce additional fulfillment states.

A PIM may expand product attribute schemas.

The platform needs a disciplined way to evolve interfaces without disrupting downstream applications.

Contract testing can help detect incompatible changes before deployment.

Schema versioning provides consumers with a way to interpret changes.

Deprecation policies establish how long older formats remain supported.

The organization should also document who approves breaking changes and how affected teams receive notice.

For integrations with external customers or suppliers, compatibility commitments may be contractual.

In those situations, version governance becomes a commercial obligation as well as an engineering practice.

Make Reconciliation an Operational Product

A successful integration should not be evaluated exclusively by whether messages were transmitted.

The organization needs evidence that business records agree.

Order records may be compared across commerce, OMS, and accounting systems.

Inventory balances may be reconciled against movement histories.

Financial payments and refunds may require separate matching against processor and bank records.

Reconciliation should identify exceptions and assign them to accountable teams.

It should also distinguish between expected delays and actual failures.

An invoice pending legitimate approval is different from an invoice lost because an integration message failed.

Treating both as generic synchronization errors makes operations less effective.

The goal is to produce a reliable explanation for differences and a controlled procedure for resolving them.

How to Evaluate Integration Partners

An engineering partner implementing MACH integrations should be able to explain data ownership and failure handling before recommending tools.

Relevant questions include:

Who owns the order state when several platforms participate in fulfillment?

How are duplicate events detected?

What happens when an API contract changes?

How are historical data discrepancies resolved?

Which integrations require immediate consistency?

How does the team determine that a migration is complete?

Answers should be supported by specific implementation approaches and relevant production experience.

A vendor list of supported APIs is not enough.

The enterprise needs engineering accountability for the business processes those APIs support.

Conclusion

ERP, PIM, and OMS integration is one of the most consequential parts of enterprise MACH adoption.

Separating services can make commerce systems more adaptable, but it also makes assumptions about ownership and consistency impossible to ignore.

Successful integration requires explicit authoritative systems, supported contracts, appropriate communication patterns, and reliable reconciliation.

The objective is not to achieve perfect synchronization at every moment.

It is to ensure that each important business decision is made using the correct authority—and that differences between systems can be detected, explained, and resolved before they harm customers.