Cut a 40-year-old core banking system over to a modern distributed ledger — without a single minute of downtime.
A 28-month engagement with the 14th-largest retail bank in its region. Two parallel ledgers, a dual-write bridge, and a staged migration of 8.2 million customer accounts across 54 weekends.
A 40-year-old core in a new regulatory climate.
Northmark's core banking platform — a mainframe-era COBOL ledger with a complex mesh of middleware accreted over four decades — was approaching a regulatory inflection point. New open-banking mandates required sub-second settlement visibility that the existing system could not provide without fundamental re-architecture.
The bank had attempted two prior modernization programs. Both stalled on the same problem: the core could not be taken offline, not even for a single batch window, without cascading effects across branch operations, partner integrations, and real-time payment rails.
When we joined, the initial directive was narrow: design a migration strategy. Three months in, the engagement expanded to end-to-end delivery.
Two ledgers. One truth. A bridge between them.
Rather than a flag-day cutover, we proposed a dual-ledger architecture: the legacy COBOL core and a new event-sourced ledger running side-by-side, mediated by a dual-write bridge that treated both as authoritative, reconciled per-transaction, and allowed reads to be progressively routed to the new system as confidence accrued.
The bridge itself became the engineering centerpiece. Written in Rust for its latency budget, it maintained a per-account vector clock, detected divergence within 50ms, and could roll back or replay either side with an operator-level audit trail. We ran it in shadow mode for four months before a single customer byte touched the new ledger.
The boring parts are the case study.
No hero deployments. No late-night cowboy runs. We instrumented divergence, ran property-based tests against production traffic shadows, and held a weekly migration review where any of the 42 engineers on the squad could veto the next weekend's cutover slice.
Seven slices were vetoed. Three were rolled back mid-weekend. All without customer impact. That's the system working.
The bridge, end-to-end.
Simplified. Omits the reconciliation sidecar, the shadow-read replay harness, and the seven-stage data-validation pipeline that gated each cutover slice.
Five phases.
Discovery
8-week strategy sprint. Regulatory mapping, data model archaeology, decision to pursue dual-ledger architecture.
Bridge build
Rust bridge written, chaos-tested, shadow-deployed against production traffic. Zero writes yet.
Shadow period
Four months of read-only shadow mode. Divergence tracking, replay harness, property-based test suite hardened.
Rolling cutover
54 weekends. 8.2M accounts. Vetoes used seven times. Three mid-weekend rollbacks. No customer impact.
Legacy retirement
COBOL core decommissioned. Bridge retained as long-term reconciliation audit. Handover complete.
"They didn't just deliver the migration. They delivered the discipline that made the migration possible — and that discipline is still how our platform team operates today."