Modernization track · Advanced · self-paced ~40h with labs (7 days as a cohort) · prerequisite: Java and Spring Boot at CS510 level (or 1+ year Java) and SQL; mainframe background not required — the legacy core is shown, not operated, except in the optional IBM i module
Build a small but real card-issuer core in Java — parties, accounts and products, double-entry postings with a balancing sub-ledger, holds and availability, interest and fees, statements, reversals and suspense, an end-of-day cycle with restart, maker-checker and an event stream — using AWS CardDemo running on SteelFrame as the executable specification: every night your Java ledger must reproduce CardDemo’s balances, category balances, rejects and statements to the cent. Then integrate it with a packaged core (Apache Fineract) the way bank teams integrate with Temenos, Finacle or Mambu: an idempotent adapter with an outbox, and a nightly reconciliation between the two ledgers. 52 short videos (about 6h36m).
Self-paced available Cohort
Open for enrollment now. The lesson videos for this course are in production — release order across the track: CS510 → CS520 → CS530 → CS521 → CS535 → CS500 → CS550 → CS525 → CS540 → CS545 — and every session below is published as its lessons and lab now and marked Coming soon until its videos are released.
Plans: Free individual at no cost, or Paid individual at $349 per course, one-time — code review, extra exercises, grading and priority support.
Every session ends in a lab on your own environment. Labs are machine-checked against expected outputs — you and your L&D team always know exactly where you stand.
Coming soon The videos for this session are being produced; its lessons and lab are published here now.
Five videos. The replacement landscape — Temenos, Finacle, FLEXCUBE, Mambu, Vault, Finastra, Silverlake; who exposes Java, who Python, who RPG — and where your Java goes, opening on CAVW; CardDemo live — the online transactions and the nightly cycle in SDSF, and the three ledger invariants it satisfies (postings equal the balance delta per account, TCATBALF equals the category sums, interest equals rate × balance) proven by the CDTOTALS job; the domain map read off the copybooks; the target service architecture beside the cycle’s job chain.
LAB Checkpoint 0: seed your private CardDemo copies, run the cycle under your HLQ, capture goldens and CDTOTALS, clone the cardcore-java skeleton and build it green.
Coming soon The videos for this session are being produced; its lessons and lab are published here now.
Five videos. Money — BigDecimal with the currency’s minor units as scale and rounding as product configuration, read off ACCT-CURR-BAL and TRAN-AMT in hex; business dates vs system time, the EOD boundary and back-dating, with the cycle’s as-of PARM and JESMSGLG; identifiers — account and card numbers as text with leading zeros, Luhn, idempotency keys; the float that broke the ledger by one cent against the COBOL run that keeps it.
LAB Checkpoint 1: Money, BusinessDate and identifier types with property tests; the posting sums of your DALYTRAN equal to CDTOTALS.
Coming soon The videos for this session are being produced; its lessons and lab are published here now.
Five videos. Party and account models with the status state machine, an account update on 3270 and its status byte changing in hex; products as configuration — the DISCGRP rate table by group, type and category with CBACT04C’s DEFAULT fallback, TRANTYPE and TRANCATG as reference data; maker-checker on maintenance and audit columns, with CardDemo’s admin-only user maintenance and COACTUPC’s re-read-and-compare as the precedent; REST design and OpenAPI from the inquiry screen’s inventory.
LAB Checkpoint 2: the account lifecycle service with maker-checker and audit; hidden JUnit green; the account view equal to CAVW transcripts for ten accounts.
Coming soon The videos for this session are being produced; its lessons and lab are published here now.
Six videos. Journal, postings, balance kinds and holds read off the TRANSACT and ACCTDATA records in hex; the posting transaction — atomicity, input order, derived running balance, immutability — beside POSTTRAN’s running counts; sub-ledger mapping by account × type × category and the balancing invariant checked on every commit, proven by CDTOTALS; reversals and corrections with COBIL00C’s credit posting as the model, never a delete; over-limit, expiry and the availability check producing the same 38 rejects and reasons.
LAB Checkpoint 3: post CardDemo’s day — balances, category balances and rejects identical to your POSTTRAN capture and after-images; invariants green; hidden JUnit green.
Coming soon The videos for this session are being produced; its lessons and lab are published here now.
Five videos. CBACT04C’s interest rule — rate × category balance / 1200, truncated — computed by hand from the records and matched to the cent; fees and waivers as postings of fee categories; statements byte-identical to CBSTM03A’s 1212-line dataset; a declared, configurable regulatory hook that leaves the rest identical.
LAB Checkpoint 4: the month-end run — interest postings identical to INTCALC, statements identical to CREASTMT, invariants hold.
Coming soon The videos for this session are being produced; its lessons and lab are published here now.
Six videos. The EOD cycle as a Spring Batch flow beside the CardDemo chain in SDSF; restartability and the Control-M/CA-7 chain with its conditions; rejects as a suspense warehouse with owners; two days in a row and the date roll with the backup generations; performance with the ×100 input against the JESMSGLG baseline.
LAB Checkpoint 5: two consecutive EODs identical to CardDemo’s — balances, category balances, rejects, statements, backup generations — and restartable.
Coming soon The videos for this session are being produced; its lessons and lab are published here now.
Six videos, each opening on the CardDemo artefact it mirrors and closing against CardDemo’s totals. Apache Fineract — what it is (Apache-2.0, Java/Spring, multi-tenant) and what it stands in for; its API — clients, savings accounts, transactions, tenant headers; the adapter pattern banks use — idempotent posting, outbox, bounded retries — with POSTTRAN as the idempotency precedent; reconciling two ledgers nightly three ways; the retry that posted twice, caught by the reconciliation.
LAB Checkpoint 6: the day’s postings mirrored idempotently into your Fineract tenant; three-way reconciliation to CardDemo green; the outbox survives a crash test.
Coming soon The videos for this session are being produced; its lessons and lab are published here now.
Five videos. Domain events and the outbox behind a Kafka-shaped API with the MQ trigger as precedent; channel integration — the mobile balance and the cache that goes stale, invalidated by event, beside the 3270 inquiry that never was; the payments seam — a pacs.008 becomes a posting through a provider-agnostic PaymentInstruction, shown on the bill-pay record in hex; security — roles, PII masking, audit beside RACF.
LAB Checkpoint 7: a statement-notification service consuming TransactionPosted, its per-account list equal to the statement’s transaction lines.
Coming soon The videos for this session are being produced; its lessons and lab are published here now.
Five videos. Migrating balances and open items as opening postings from the export_state of ACCTDATA and TCATBALF; reconciliation to CDTOTALS on migration night with zero tolerance; cutover rehearsal — the cycle held in JES, final load, reconcile, flip, release as fallback; the optional module — the legacy core on IBM i, DSPFFD and job queues on SteelFrame X.
LAB Checkpoint 8: CardDemo’s balances migrated into your service, reconciled to CDTOTALS, the rehearsal run.
Coming soon The videos for this session are being produced; its lessons and lab are published here now.
Four videos. Reading an unseen ledger service beside CBACT04C; the hidden-day EOD capstone; portfolio and interview — the questions bank-side interviewers ask and the live frames that answer them; the certificate.
LAB Capstone: a hidden day’s DALYTRAN under your HLQ — CardDemo’s cycle run for the goldens, your EOD identical in balances, category balances, rejects and statements; the 30-question domain check (80%).
CobolStack Certificate — Core Banking Engineer (CS540) is issued from the lab harness’s own record of your runs — not from attendance. To earn it you must clear every gate below:
The certificate attests that you can build the ledger, posting and end-of-day core a bank runs on and the integration layer around a packaged core — proven to the cent against a legacy core running beside it — the Java the bank-side core-replacement postings actually hire for.
Your seat is a private, full z/OS-compatible environment with the AWS CardDemo estate (COBOL, JCL, CICS/BMS, VSAM, DB2) and the SteelFrame oracle tools (run_capture, export_state, cics_run_script), beside your own Java 21 + Maven + PostgreSQL toolchain; Spring Boot 3, Spring Batch 5, Flyway, Apache Fineract (Docker) as the packaged core you integrate with in the browser — nothing to install, snapshot and reset per exercise. By the end of the course the lab harness will have verified: eight domain checkpoints, each with hidden JUnit tests and an equivalence run against CardDemo’s cycle on SteelFrame (same inputs, same postings, the ledger invariants holding to the cent), the integration lab (your Fineract tenant reconciled to your ledger and to CardDemo), and the EOD capstone on a hidden day’s transaction file — balances, category balances, rejects and statements identical to the CardDemo run.