CRM–ERP integration: what to sync, who owns it, and how to test it
Define CRM–ERP field ownership, data contracts, failure recovery, and acceptance tests before connecting customer and operational records.
Qonnex Editorial · Business operations and AI consulting

CRM–ERP integration connects customer-facing work with the systems that record orders, inventory, billing, and other operations. The difficult part is deciding which records should move, which system is allowed to change them, and how the team will know when a transfer fails.
Start with a business handoff. A salesperson needs an accepted order number. Finance needs a billing identity it can trust. A service team needs the current delivery status. Each need calls for a specific data contract, not a promise to synchronize everything.
This guide shows how to write that contract and test one workflow before widening it. The ownership map and order example are hypothetical. They are not a client case, a packaged Qonnex connector, or a statement that every CRM and ERP supports the same interfaces.
Give your CRM–ERP integration one measurable job
Choose a handoff with a clear trigger and endpoint. For example: an authorized sales order request in the CRM becomes an accepted order in the ERP, and the ERP’s order identifier returns to the CRM. That is a more useful first scope than “make the two systems agree.”
Name the people responsible for the business outcome. Sales operations might own the request quality. Operations might own order acceptance. Finance might own billing controls. IT owns the implementation’s technical operation, but it cannot decide those business responsibilities alone.
Write down what should improve and how it will be measured. Possible measures include manual re-entry time, rejected requests, unresolved transfer age, and differences found during reconciliation. Define where each measure comes from before building the connection.
For broader context, Qonnex’s article on manual-work costs describes the cost of repeated entry and handoffs. This implementation task begins where that diagnosis ends: one named workflow, one owner, and one inspectable result.
Avoid promising real-time updates before deciding what the business actually needs. An overnight account-balance view and a stock check before confirming an order have different timing requirements. State the maximum acceptable age of each value and how stale information will be presented.
Map the records that serve that job
CRM systems and ERP systems can share customer, product, order, and financial information, but their concepts do not necessarily line up. A prospect is not automatically a billable customer. A sales opportunity is not an accepted order. A pipeline amount is not recognized revenue.
IBM’s integration overview identifies common categories of shared information, including customer, product, pricing, and sales data. Treat that as a candidate inventory, not an instruction to copy every field into both systems.
For each record in your first workflow, identify:
- Its stable identifier in the source and destination.
- The fields required to create it and the fields allowed to change later.
- Related records that must exist first.
- The business event that authorizes creation or an update.
- The destination response that confirms acceptance.
Build a dependency sequence. An order request might depend on an approved customer identity and a valid product identifier. Define what happens when either is missing. Creating placeholder records to keep a transfer moving can spread uncertainty into billing and reporting.
Keep business keys and display names separate. Two companies may have similar names. A company may change its name without becoming a different account. Document how the two systems’ identifiers are mapped and who can approve a correction to that mapping.
Assign authority at the field level
“The CRM owns the customer” is often too broad. Sales operations may own the account relationship and contact preferences, while finance controls billing terms and the approved legal billing identity. Specify authority for the fields that matter to the handoff.
The map below is one possible design for a hypothetical business. It is not a universal division of responsibility.
| Data in scope | Example authority | Movement | What the receiving side may do |
|---|---|---|---|
| Sales contact | CRM, managed by sales operations | CRM to ERP if needed for the workflow | Read for authorized operational use |
| Billing identity and terms | ERP, managed by finance | ERP to CRM | Display approved values |
| Product SKU and unit | ERP, managed by operations | ERP to CRM | Select supported products and units |
| Order request | CRM after business authorization | CRM to ERP | ERP validates and accepts or rejects |
| Accepted order status | ERP, managed by operations | ERP to CRM | Display status and returned order ID |
| Invoice status | ERP, managed by finance | ERP to CRM if justified | Display the permitted status fields |
Define conflicts before they occur. If someone edits an ERP-owned billing field in the CRM, should the application block it, discard the attempted update with a warning, or raise a request to finance? Pick an explicit behavior. A silent overwrite makes users distrust both systems.
Avoid using “last update wins” as a substitute for ownership. A newer timestamp does not prove the editor had authority or the value was correct. If concurrent edits are allowed, specify version handling and the human decision required when the systems cannot resolve the conflict safely.
Write the data contract in business language
A data contract is the agreement about what a transfer means. It should be readable by the process owner and precise enough for the implementation team to test.
For an order request, include the source identifier, approved customer mapping, line items, quantities, units, currency, required dates, and applicable validation rules. Decide how discounts, taxes, shipping details, and optional fields are handled in the actual business. Do not assume a blank value and a zero mean the same thing.
Set the rules for precision, time zones, and dates. A quantity may be measured in cases in one system and individual units in another. A requested delivery date is not interchangeable with the event timestamp. A total without its currency is incomplete information.
Here is a fictional request to use in a planning workshop:
| Contract item | Synthetic example | Required decision |
|---|---|---|
| Request ID | DEMO-ORD-104 | Preserve this ID through retries and reconciliation |
| Customer mapping | CRM-C042 to ERP-C118 | Finance approves the billing identity |
| Line | SKU-27, 4 units | Validate SKU and unit in the ERP |
| Currency | USD | Reject unsupported currency instead of guessing |
| Acceptance | ERP returns an order ID | Keep the CRM request pending until confirmed |
These are invented identifiers, not a screenshot or a live system record. No amount or timing in this example is a measured result.
Document the return path as thoroughly as the outgoing request. Sales users need to distinguish submitted, accepted, rejected, and awaiting confirmation. A successful transmission message should not be presented as proof that the ERP accepted the order.
Choose sync direction and timing deliberately
One-way movement can be appropriate when a receiving system only needs to display an authoritative value. A two-way exchange may be appropriate when each system owns different parts of a workflow. Neither choice means every shared field should be editable everywhere.
Microsoft’s dual-write overview describes a specific integration between Dynamics finance and operations applications and Dataverse, including bidirectional behavior and operational controls. That is a concrete platform example, not a general guarantee for other products or a recommendation to use bidirectional updates for every record.
Keep the architecture decision separate from the business contract. Direct API connections, integration platforms, and supported native capabilities have different constraints. First establish the data, timing, ownership, and recovery requirements. Then assess which supported approach can meet them at an acceptable operating cost.
Ask for the limits that affect this workflow: supported objects, update methods, rate limits, batch sizes, ordering, available event notifications, and error information. Verify them in the current documentation for the actual systems. A connector appearing in a catalog does not prove it supports your required transaction.
Specify behavior during planned maintenance. If the ERP is unavailable, can requests queue safely? Should users stop confirming availability? Who decides when the connection resumes? The answers should be part of the operating design before the first outage.
Make failed updates recoverable
Some failures are clear. A request is rejected because a required customer record is missing. Others are ambiguous: the ERP accepts an order, but the response never reaches the integration. The CRM still shows pending, although the order already exists.
Use the fictional request DEMO-ORD-104 to walk through that second case. The recovery process should retain its identity, check what the destination actually accepted, and recover the returned order identifier if the interface supports that lookup. If safe confirmation is unavailable, route the item for investigation before creating another order.
Ask the implementation team to explain what makes replay safe. An idempotent operation is designed so repeating the same request does not repeat its business effect. Whether the actual interface provides that behavior, and how long its protection lasts, must be verified for the chosen system.
Not every failure can be repaired by repeating a request or restoring an old value. An accepted order may already have triggered work. Microsoft’s compensating-transaction guidance explains why recovery can require business-specific actions and sometimes human intervention. For this workflow, define who can cancel, amend, or otherwise resolve an accepted transaction.
Keep enough evidence to investigate: request identity, event time, source and destination IDs, processing state, retry history, and the error category. Avoid placing full customer records or secrets in operational logs. Give business users an actionable status rather than a raw technical error.
Reconcile business records, not just successful jobs
A dashboard can show successful jobs while records remain wrong. A job may complete with the wrong customer mapping, an incorrect unit conversion, or an omitted line. Reconcile the business result separately from the transfer’s technical status.
For the pilot population, compare source requests with accepted destination records using the preserved identifiers. Check important fields and line counts. Explain every unmatched item as rejected, pending, excluded, or requiring investigation. Assign an owner and review interval to the unresolved set.
Define what “current” means in the CRM. A value with an old refresh timestamp should not look indistinguishable from a fresh one. Decide when to show a stale-data warning and whether a user may act on that information.
Bring the reconciliation workload into the measurement. If the connection removes re-entry but creates extensive manual checking, that work belongs in the comparison. Qonnex’s guide to measuring automation returns explains why the full operating cost matters.
Test the contract before broadening the connection
Use a controlled test environment and synthetic or properly permissioned records. The test cases should follow the business contract, not merely confirm that credentials work and an API returns success.
| Test | Expected business result |
|---|---|
| Valid customer, product, and order request | One accepted ERP order and its ID in CRM |
| Customer mapping missing | Request held with a named owner |
| Unsupported unit or currency | Rejection or correction path defined by policy |
| Same request delivered again | No second business transaction under the agreed replay design |
| Response lost after acceptance | Existing destination result recovered or investigation opened |
| ERP unavailable | Pending work retained and visible under the agreed outage procedure |
| Unauthorized field update | Blocked or routed according to field authority |
| Source and destination disagree | Reconciliation identifies the record and responsible owner |
Record actual results, evidence, and reviewer sign-off. Agree which failures prevent release and how corrected cases will be retested. Avoid accepting a test solely because a developer can manually repair it afterward.
Include the staff who operate the handoff. Ask a sales user to explain a pending order, an operations user to investigate a rejection, and finance to verify the fields it controls. Their ability to work the exceptions is part of acceptance.
Name the people who will keep it running
Give the connection a technical owner and a business owner. Document who monitors failures, who maintains mappings, who approves field changes, and who covers absences. Establish a review process for application upgrades and interface changes.
Use access limited to the records and actions the integration needs. Separate test and production credentials, define how credentials are renewed, and ensure an integration account is not dependent on an individual employee’s continued access. The actual controls should be reviewed by the organization’s security owner.
Set a pause and recovery procedure before rollout. It should preserve queued work and identify what has already been accepted. Restarting a connection must not mean blindly replaying every event since the outage began.
The first operating review should examine unresolved records, stale data, repair effort, and evidence of the intended improvement. Expand to another record type only when its dependencies and controls have been specified. An invoice-status display and a new billing-record write are different permissions and risks.
Bring a contract to the implementation discussion
Qonnex’s current operational-efficiency offering includes connecting existing CRM, accounting, and operations tools. The appropriate scope depends on the interfaces and operating rules the business already has. Integration does not require replacing those systems by default, and it does not establish the availability of a named Qonnex connector.
Before selecting an implementation approach, prepare four artifacts: the record-ownership map, the data contract, the failure/reconciliation procedure, and the acceptance matrix. They turn an integration discussion into a set of decisions that can be reviewed.
Keep the commercial context separate from the technical test. Qonnex’s explanation of performance-based consulting describes its results-based approach. A working connection still needs demonstrated acceptance and an agreed way to measure the business outcome.
To assess a specific handoff, describe its trigger, systems, owner, and current exceptions in the Business Analysis. Start with the record that keeps getting retyped, and the decision that waits for it.