Atmora Tech

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.

Alistair NkemdirimHead of Payments Engineering, Cordage Bank

Stack

What it runs on

  • Java 21
  • Spring Boot
  • Apache Kafka
  • PostgreSQL
  • IBM MQ
  • Prometheus
  • Kubernetes
  • OpenTelemetry

Start a project

Tell us what is
breaking.

We reply within one working day, and the first call is with an engineer who would actually work on it — not an account manager. If we are not the right studio for the problem, we will say so on that call.

Start a project