Legal Case Sync
Bidirectional Laravel middleware syncing law-firm case systems (Litify/Salesforce, Filevine) with Zendesk.
Architecture at a glance
data flows left to right- Litify / Filevine
- Webhook intake
- Laravel queue
- Sync engine
- Zendesk
connectedOAuth 2.0MySQLDocker
The problem
Law firms track cases in Litify (on Salesforce) or Filevine. The operations team works in Zendesk. When the two drift apart, a missed update is more than an annoyance. It is a compliance gap.
What I built
A backend-only Laravel 12 middleware that keeps both sides in sync, in both directions. Changes in a case system show up in Zendesk, and updates made in Zendesk flow back to the case system.
Engineering decisions
- Trust nothing at the door. Every inbound webhook is HMAC-verified and handled idempotently, so replays and retries never create duplicates.
- Queued, containerized processing. Sync work runs on queues inside Docker, so a slow third-party API does not lose events.
- Tokens are managed, not pasted. OAuth 2.0 tokens for each connected system are stored and refreshed by the middleware.
- Tests as the safety net. 290+ PHPUnit tests cover the mapping and sync rules, so changes ship without guessing.