Engineering and commercial decisions

Why Business Systems Fail at the Integration Layer

Identify record ownership, conflicting updates and recovery gaps before connecting operational systems through APIs.

Agree which system owns each field

Two systems can both have a valid customer record and still disagree. A CRM may own contact preferences while an accounting platform owns invoice details. Before we connect them, we need to agree which system staff should use to change each piece of information—and what the other system should do with that change.

A field-ownership matrix can be a simple list of fields, the system allowed to update each one, and any exceptions that need a person’s review. For example, if the CRM holds a customer’s contact email and accounting holds their billing email, decide whether these are separate fields. Treating them as interchangeable could overwrite the address the accounts team needs. Also state what happens when someone edits the same field in both systems before the next synchronisation: which value should survive, and who should review a conflict?

Separate transport success from business success

An HTTP success response may mean only that a vendor accepted a job. For an order integration, track acceptance, validation, invoice creation and reconciliation separately. Staff need to know whether an invoice exists, whether its details match the order and whether anything still needs attention.

Consider an order sent to accounting to create an invoice. Accounting writes the invoice, but the request times out before the sending system receives confirmation. The order now looks unfinished even though an invoice exists. Retrying without checking could create a second invoice. Keep a stable source reference with the request, and define how recovery will use that reference to find the existing invoice or establish that another attempt is needed.

An operator’s exception queue should explain the problem in those terms. Show the source order reference, the last confirmed step and the action that needs review. “Request failed” alone does not tell someone whether it is safe to try again.

Practise failure before launch

Test a timeout after the remote system has already written the record, an expired credential, an out-of-order update and an unknown tax code. For each case, check what staff can see, when automatic retries stop and how someone can recover the record manually.

For the invoice example, rehearse finding the invoice after the timeout and completing reconciliation without creating another one. For an unknown tax code, agree who corrects the mapping and how the affected order returns to processing. A retry cannot resolve a business decision that nobody has made.

Write these decisions into the integration contract: who owns each field, what counts as completion, which failures can be retried and who handles the exceptions. We want a reader of that document to understand how work resumes after a failure, as well as which endpoints the integration calls.

Apply this to your brief

Bring the current workflow, a representative example and the decision you need to make. An order that needs an invoice is a useful starting point: show the fields in each system, where staff make changes and what they do when the records disagree. That gives us something concrete to work through before discussing implementation.

Explore Willan’s consulting approach, review development services or discuss your project.

Planning guidance from Webvelopment Editorial. Confirm platform requirements and project assumptions before committing budget.

Let’s move things forward

Start a conversation

Tell us what you are working towards. We’ll help you find a practical next step.

Discuss your project