The systems no one else will touch.
We do.
Forty years of business logic running on hardware older than most engineers. The risk isn't modernizing. It's pretending you don't need to.

What modernization looks like, line by line — thirty-year-old logic on the left, the same behavior on the right, in code your team can read, test, and change.
IDENTIFICATION DIVISION.
PROGRAM-ID. CALC-PREMIUM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-AGE PIC 9(03).
01 WS-BASE-RATE PIC 9(05)V99.
01 WS-PREMIUM PIC 9(07)V99.
PROCEDURE DIVISION.
IF WS-AGE > 65
COMPUTE WS-PREMIUM =
WS-BASE-RATE * 1.40
ELSE
COMPUTE WS-PREMIUM =
WS-BASE-RATE * 1.00
END-IF.
STOP RUN.// premium.ts
export function calcPremium(
age: number,
baseRate: number,
): number {
const multiplier = age > 65 ? 1.4 : 1.0;
return +(baseRate * multiplier).toFixed(2);
}
// served as a microservice
app.post("/premium", (req, res) => {
const { age, baseRate } = req.body;
res.json({
premium: calcPremium(age, baseRate),
});
});We replace the system while it keeps running.
No big-bang rewrite. We use a strangler-fig migration: carve the system into domains, rebuild them one at a time, run old and new side by side until they agree, then retire the legacy piece. The business never stops.
- 01
Assess & map
Two to three weeks reading the COBOL and the data. We document what the system actually does, including the rules that live only in the source.
- 02
Recover the rules
We pull out the business logic — pricing, eligibility, workflows — and pin each rule to a test, so nothing is lost in translation.
- 03
Rebuild by domain
One domain at a time — orders, inventory, billing — rebuilt on a modern, maintainable stack with the exact same behavior.
- 04
Dual-write & verify
Old and new run in parallel. Every transaction is written to both and compared until parity is proven to the record.
- 05
Cut over, safely
Switch traffic to the new domain behind a tested rollback path. Repeat until the mainframe is empty.
We read the system before we touch it, so the rules that took decades to write down survive the move.
- COBOL
- PL/I
- Assembler
- JCL
- Rexx
- AS400
- RPG
- DB2
- CICS
- VSAM

14 million policies migrated. Zero data loss.
Strangler-fig migration over 11 months. CICS transactions replaced one domain at a time, dual-written until parity verified, then cut over.