Resolving conflicting system updates: Compare changes against the last confirmed common value; Apply field-specific authority rules (e.g. manual review or time-based choice); Use conditional writes with HTTP If-Match to prevent silent overwrites
Image: Workflow Automation Guide

Error Handling

Part of Workflow data synchronisation

Resolving conflicting updates from two systems

Identify competing record edits, choose a field-level rule and apply the resolution without overwriting another change.

When both systems change a shared value before either receives the other's edit, compare each change against the last confirmed common value. Apply the field's authority rule. Keep both proposed values until the decision is recorded; the last event to arrive is not necessarily the business decision that should prevail.

Key Facts on Data Sync Conflicts

Last event not always correct
The last arriving update does not necessarily represent the business decision.
Need common baseline
Without a trustworthy common value, do not infer correctness from timestamp alone.
HTTP If-Match support
Use standard mechanism to prevent silent overwrites in APIs that support it.

Establish whether edits compete

Suppose a sales agent changes a customer's contact preference from email to phone, while a service agent changes it from email to none. If email was the last confirmed common value, both sides changed the same field. If only one side changed, apply the permitted direction rule instead.

Keep the common value, each system's current value and available version, and the record pair. Record the actor or process when the applications expose it. If no trustworthy common baseline exists, do not infer that one current value is correct from its timestamp alone; hold the difference for an authority decision.

Choose a rule for the field

RuleFits whenLimitation
Named authorityOne application owns the factA valid correction made elsewhere needs its own route
Manual reviewMeaning or consequences require a personThe field remains unresolved until someone decides
Merge separate fieldsEach side owns different propertiesA whole-record write can still overwrite another property
Time-based choiceTimestamps are comparable and recency is the intended ruleClock differences and delayed delivery can mislead

For a contact preference, manual review may be appropriate if either edit affects communication. For a service status owned by the service application, that authority can settle the value. Define the rule per field rather than relying on one whole-record default.

Where a product's field mappings determine which data syncs, in which direction, and how conflicts are handled, those mappings describe the product's behaviour rather than your business rule. Mappings and writable fields vary by connected app — some fields can only be mapped one way, and API limitations or read-only fields in the connected app may prevent the product from modifying them — so check the intended connection before treating a product default as the business rule.

Apply the resolution safely

Read the destination's current version before writing. Where its API supports a suitable conditional update, send the version with the write so an intervening edit causes a precondition failure. HTTP If-Match is a standard mechanism for preventing an update from silently overwriting a changed representation; the destination API must actually support and honour an appropriate validator.

If the condition fails, read both sides again and reassess. Do not resend the old value unconditionally. If there is no reliable conditional write, serialise changes for the record where possible and keep uncertain races visible for review.

Record the selected value, rule, affected field, source versions and confirmed destination result. Check that the sync's own write is not treated as a new competing business edit.

Cases with an A-only edit, B-only edit, two edits to one field and two edits to separate fields reveal different faults. Compare the resulting records with expected values before accepting the rule.

More from Error Handling