Services / Mainframe

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.

AS/400 mainframe machine room

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.

From: calc-premium.cob · 1987
To: premium.ts · 2026
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),
  });
});
How we modernize

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.

  1. 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.

  2. 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.

  3. 03

    Rebuild by domain

    One domain at a time — orders, inventory, billing — rebuilt on a modern, maintainable stack with the exact same behavior.

  4. 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.

  5. 05

    Cut over, safely

    Switch traffic to the new domain behind a tested rollback path. Repeat until the mainframe is empty.

Languages we read fluently

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
Legacy mainframe systems running in production
Recent migration · insurance carrier · 2025

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.

14M
Policies migrated
100%
Parity verified
0
Hours downtime

If your stack predates Git, we should talk.