Cordage Bank · 2023
Migrating Cordage Bank to ISO 20022 while MT stayed live on the same rails
Moving 500,000 daily payments to ISO 20022 with MT still live on the same rails, without losing data on round trips or settling anything twice. We shadow-ran the new path for 11 weeks across 3.2 million payments, found 41 mismatches, then cut over and took p99 authorisation from 610 ms to 180 ms.
- Banking & Financial Services
- 18 months
- 12 engineers, 2 payments analysts, 1 delivery lead
- 41 mismatches
- From 3.2m payments shadow-compared over 11 weeks
- 180 ms
- p99 authorisation latency, down from 610 ms
- 0 duplicates
- Duplicate settlements in 14 months post-cutover
The challenge
What was wrong
Cordage had to move 500,000 payments a day from MT messages to ISO 20022 while both formats stayed in production. MT truncates names and addresses that ISO carries in full, so a round trip silently loses data that a correspondent then queries. Mainframe cutoff windows meant a failed batch could not simply be rerun before the deadline. Payments also arrived over an at-least-once queue, with duplicate detection sitting in a nightly reconciliation report.
The approach
What we did
We defined a canonical internal model as a superset of both formats, carrying untranslatable elements in a supplementary block so a round trip stays lossless even when the wire format is not. Deduplication moved into the payment path itself, with idempotency keys checked against a ledger table rather than found the next morning. The mainframe remained the book of record for the whole migration, costing about 40 ms per payment on the dual write. We took the latency over two sources of truth.
“Eleven weeks of shadow running felt slow at the time. Forty-one mismatches out of 3.2 million payments is why the switch itself was a non-event.”
Stack
What it runs on
- Java 21
- Spring Boot
- Apache Kafka
- PostgreSQL
- IBM MQ
- Prometheus
- Kubernetes
- OpenTelemetry
Services
Practices involved
Engineering
Enterprise Integration
Contracts, idempotency and replay — the unglamorous parts that keep 40 systems in step.
Engineering
Microservices
Service boundaries drawn around team ownership and failure domains, not fashion.
Quality & Support
Cybersecurity
Threat modelling, identity hardening and detection engineering that finds real paths in.
Quality & Support
QA & Testing
A test suite you trust enough to deploy on, and small enough to run in eleven minutes.
More work
Other engagements
Meridian Exchange · 2024
Bidding engine rebuild
Meridian was losing bids to lock contention in the closing seconds of every auction, and disputes over bid order had to be settled manually. We rebuilt the engine around per-lot single-writer partitions and an append-only log, trading cross-lot transactions for provable ordering at 1,800 bids per second.
Kestrel Industrial · 2023
Shop-floor system modernisation
Four plants, 300 machines and a VB6 application nobody could test safely. We replaced it one production cell at a time behind a routing gateway, keeping Oracle as the book of record until the final cell was live. Total unplanned stoppage across the entire programme came to 11 minutes.
Northwind Commodities · 2025
Incremental end-of-day valuation
A seven-hour overnight batch left Northwind's traders working from yesterday's P&L whenever a curve was corrected. We replaced it with an incremental graph over versioned inputs, cutting the full run to 34 minutes and a curve correction to 90 seconds, with 12 months of valuations replayable to the input.

