Decide which system owns client, worker, assignment and delivery state. Synchronise events without creating two truths.
Create an ownership matrix
For each entity record which system creates, changes and archives it. A care record may own client and care content, HR the worker and Routeez the route proposal. Also define where confirmed appointments or delivery status are written back. Without this matrix, loops form or old data overwrites a valid change.
Use idempotent events
Give each change a stable key, version and timestamp and ensure repeating it has the same result. Send enough context to validate the correct transition, not merely 'record updated'. Keep draft planning internal until confirmation so source systems do not react to options still under comparison.
Plan for temporary inconsistency
Networks and systems fail. Define queues, retries, dead-letter follow-up and visible synchronisation status. Decide which actions remain allowed offline or with stale data and which block. Reconciliation should show differences to an authorised user, not automatically declare the latest timestamp the truth.


