Abdelrahman Mahmoud
hello@abdelrahmanmahmoud.com

Legal Case Sync

Bidirectional Laravel middleware syncing law-firm case systems (Litify/Salesforce, Filevine) with Zendesk.

Type
Integration
Stack
PHP 8.2, Laravel 12, MySQL, OAuth 2.0, Docker
Status
Delivered

Architecture at a glance

data flows left to right
  1. Litify / Filevine
  2. Webhook intake
  3. Laravel queue
  4. Sync engine
  5. 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.

Open to conversations

Building something that needs a solid backend? Let's talk.