Chapter 01 · The brief
Millions of records. Decades of patches. One brittle desktop client.
Public-sector data nobody could afford to lose.
A government child-support agency ran its casework on a system originally specified in the 1990s. Each case file carried decades of structured fields, free-text history, court orders, payment records, and audit history — referenced daily and never deletable.
The desktop client was unstable. Performance had degraded year on year. The hardware it depended on was end-of-life. Caseworkers had developed manual workarounds that were starting to look like the system itself.
Chapter 02 · Approach
Strangler fig, not big bang.
A rewrite from scratch was politically untenable and operationally dangerous — there was no acceptable downtime window for a service families depended on. We carved capabilities out of the legacy monolith behind a stable façade, replacing them with modern services one at a time.
A migration harness reconciled every record movement against the source system on a rolling basis. Caseworkers continued to log in to the same front door; the back end changed underneath them, one capability at a time.
Chapter 03 · Build
A case-management platform built for the work.
The new platform put the case at the centre — every interaction, payment, court order, and caseworker note hung off the case record. A multi-user collaboration model replaced the single-locking-desktop pattern; two caseworkers could finally work the same case at the same time without overwrites.
Audit was a property of the platform, not a feature on top — every read and write was logged, immutable, and queryable.
Chapter 04 · Outcomes
A system that holds up to audit and to a Monday morning.
The platform retired the legacy client across a phased cut-over with zero loss of historical record. Caseworker productivity improved within weeks once the locking model went away. Audit response shifted from a multi-week extraction exercise to a query.
Outcomes · What changed
Outcomes.
Stack · What we shipped on
Technology stack.
- Frontend.NET / Blazor for caseworker UI, accessibility-first components
- Backend.NET 6 services, strangler-fig façade in front of the legacy DB
- DataSQL Server core + change-data-capture into a modern lakehouse
- MigrationCustom reconciliation harness with daily diff against legacy source
- AuditImmutable event log, queryable history, retention aligned to statute