ChallengeA Seoul-based Korean financial group's banking division (KRW 8.4T revenue, 18 million retail customers, 120,000 corporate clients, 12,000 employees, operating retail banking, corporate banking, and wealth management) needed to modernize their core banking system — an IBM z/OS mainframe running COBOL programmes that had been in continuous operation since 1985. The system had been modified through: the 1997 Asian Financial Crisis restructuring (emergency modifications for NPL management, government-mandated merger processing), the 2003 credit card crisis (additional credit risk controls and consumer protection features), multiple regulatory changes (Korean IFRS adoption, Basel III implementation, Korean-specific AML requirements), and 4 bank mergers over 20 years (each merger adding legacy data and business logic without full integration). The result: 4.8 million lines of COBOL across 12,400 programme modules, with logic from multiple predecessor banks coexisting in the same system. Core challenges: (1) Korean banking product complexity — the system administered Korean banking products with no equivalent in Western banking: jeonse deposit loans (loans secured against Korea's unique jeonse housing deposit system — where tenants deposit a large sum with the landlord in lieu of monthly rent). Jeonse loan processing required: Jeonse deposit verification with the housing registry (deunggibu deungbon), loan-to-jeonse-value calculations (Korean regulators setting maximum LTV ratios for jeonse loans), and jeonse renewal processing (when jeonse contracts renewed, loan terms automatically adjusted). Korean installment savings (jeokgeum): government-subsidised savings accounts with tax advantages — featuring: monthly deposit schedules with penalty calculations for missed deposits, government subsidy calculations (varying by programme — jeonse savings, housing savings, youth savings), and maturity processing with tax-advantaged interest calculations. Chonsei/wolsei conversion: Korean rental market instruments where tenants could convert between jeonse (large deposit, no rent) and wolsei (smaller deposit, monthly rent) — the bank providing financial products facilitating this conversion. These Korea-specific products were implemented in COBOL with Korean-language comments and Korean business terminology embedded in variable names (using romanised Korean) — making the code comprehensible only to developers who understood both COBOL and Korean banking terminology. (2) Post-merger data complexity — the bank had merged with 4 predecessor institutions over 20 years. Each merger left legacy customer data, account structures, and product codes in the mainframe. The system contained: 4 different customer identifier schemes (each predecessor bank's customer numbering — unified through a cross-reference table but original identifiers preserved for historical data), duplicate customer records (estimated 2.8 million customers having records from multiple predecessor banks — never fully deduplicated due to risk of data loss), product codes from predecessor banks (680 historical product codes — only 142 currently active, but historical products still referenced in legacy data), and branch codes from closed branches (predecessor bank branches that had been closed or merged — their codes still referenced in historical transaction data). (3) Korean character encoding — the mainframe system used EUC-KR encoding (Extended Unix Code for Korean) rather than Unicode. This created: data migration risk (converting 40 years of Korean-language data from EUC-KR to UTF-8 without corruption), mixed encoding (some newer data entered in UTF-8 through web interfaces but stored alongside EUC-KR data), Hanja handling (Chinese characters used in formal Korean legal documents — particularly in real estate registration data — requiring special encoding handling), and name encoding issues (some Korean names containing rare Hangul syllables or Hanja variants that existed in EUC-KR but mapped differently in UTF-8). (4) Real-time requirement — Korean banking had moved far beyond the mainframe's batch-processing design. Korean consumers expected: instant transfer (KRW transfers completing in seconds through the Bank of Korea's Electronic Banking System), real-time balance and transaction visibility (mobile banking showing up-to-the-second information), and 24/7 availability (Korean banks operating continuous service — no batch processing windows). The mainframe processed 14 million daily transactions but with architectural constraints: nightly batch cycles for interest calculation, balance updates, and regulatory reporting, batch-dependent processes creating delays in customer-visible data, and capacity limitations during peak periods (salary payment dates, holiday bonus periods). (5) FSC/FSS examination pressure — the FSS had noted in their IT examination that the bank's "mainframe concentration risk and limited disaster recovery capability represent material technology risks requiring management remediation." The examination finding required the bank to submit a remediation plan within 6 months — effectively mandating a modernization programme.
SolutionWe delivered a comprehensive core banking modernization over 48 weeks — replacing the 39-year-old COBOL mainframe with a modern, real-time banking platform. (1) Korean banking logic extraction. Automated COBOL analysis with Korean context: parsing 4.8 million lines of COBOL, extracting 9,600 business rules. Korean-specific extraction challenges: romanised Korean variable names decoded (mapping JEONSE_DAECHU to jeonse deposit loan, JEOKGEUM_KYESAN to installment savings calculation), Korean-language comments translated and documented (business context captured for each rule), and predecessor bank logic identified and tagged (marking which rules originated from which merged institution — enabling decisions about which to preserve and which to consolidate). Korean banking product modelling: each Korean-specific product type fully modelled: jeonse loan lifecycle (application, disbursement, jeonse renewal, partial release, full repayment), installment savings lifecycle (account opening, deposit schedule, missed deposit penalty, government subsidy, maturity), foreign currency products (Korean-specific FX regulations — Bank of Korea reporting requirements for foreign currency transactions), and Korean tax withholding (withholding tax on interest income — Korean-specific calculation based on resident/non-resident status and account type). (2) Modern Korean banking platform. Architecture: Kubernetes (AWS ap-northeast-2 — Seoul region) with: Java/Kotlin microservices for banking transaction processing, PostgreSQL with UTF-8 encoding (resolving the EUC-KR legacy), Apache Kafka for real-time event streaming (replacing batch processing), React frontend for branch, mobile, and internet banking, and API gateway for: Bank of Korea Electronic Banking System, Korea Financial Telecommunications and Clearings Institute (KFTC), credit bureau (NICE, KCB) interfaces, and Korean tax authority (NTS) reporting. Customer data unification: the 4 predecessor bank customer databases unified through: identity matching (using Korean resident registration numbers — jumin deungnok beonho — as primary matching key, with fuzzy matching for name/address variations), golden record creation (single customer view aggregating accounts from all predecessor banks), duplicate resolution (2.8 million duplicate records resolved — each verified through automated matching with manual review for ambiguous cases), and Hangul name normalisation (standardising Korean name representation across encoding variants). Real-time processing: all transactions processed in real-time (replacing batch). Interest calculations: continuous (real-time accrual replacing nightly batch). Balance visibility: immediate (no delay between transaction and visible balance). Regulatory reporting: real-time data extraction (replacing batch-dependent reporting cycles). (3) Character encoding migration. EUC-KR to UTF-8 conversion: comprehensive data migration covering: 40 years of Korean-language customer data (names, addresses, transaction descriptions), Hanja characters (preserved through Unicode CJK Unified Ideographs mapping), rare Hangul syllables (mapped through Korean Standard KS X 1001 and Unicode 15.0), and mixed encoding detection and resolution (identifying data segments in different encodings and converting each appropriately). Validation: post-conversion comparison of every customer name, address, and transaction description — 18 million customer records validated. Character encoding errors detected and corrected: 0.003 percent (540 records requiring manual intervention — primarily rare Hanja variants in real estate registration data). (4) Migration with zero service interruption. Parallel running: both mainframe and modern systems processing all banking operations simultaneously. 14 million daily transactions reconciled between systems — every transaction compared for: amount, posting date, value date, customer identification, account balance after transaction, and Korean-language transaction description matching. Initial discrepancy rate: 0.8 percent (primarily due to batch timing differences — mainframe processing at end-of-day versus modern system processing real-time). After adjusting for timing: 0.001 percent discrepancy rate. Migration sequence over weeks 16-44: new account opening (first to modern — no legacy data dependency), deposit products (jeokgeum, regular savings — simpler calculation), lending products (jeonse loans, personal loans, mortgages), corporate banking (commercial lending, trade finance), wealth management (investment accounts, trust), and payment processing (final — highest-risk, highest-volume). (5) FSS examination compliance. Remediation plan submitted to FSS within the required 6-month window — documenting the modernization programme timeline, parallel-running validation approach, and post-modernization architecture. FSS IT examination conducted 8 months post-modernization: zero findings. Examiner noting "materially improved technology risk posture and disaster recovery capability." The bank's DR RTO improving from 24 hours (mainframe tape backup) to 15 minutes (AWS multi-AZ automated failover).
OutcomeResults over 12 months post-modernization. Banking operations: 18 million customers and 120,000 corporate clients successfully migrated. Transaction processing: 14 million daily transactions processed in real-time (replacing batch). Customer data: 2.8 million duplicate records resolved — single customer view achieved for the first time. Character encoding: 18 million customer records converted from EUC-KR to UTF-8 with 99.997 percent automated accuracy. Korean product modernization: jeonse loan processing: from 3-day application to same-day (jeonse deposit verification automated through housing registry API). Installment savings: government subsidy calculations automated (previously manual verification). New product launch: from 8 months (COBOL development) to 6 weeks (configuration). Digital banking: mobile banking real-time capability — Korean consumers seeing instant balance and transaction updates. Internet banking performance: page load from 4.2 seconds to 0.8 seconds. API banking: Open Banking APIs deployed (preparing for Korea's open banking expansion). Regulatory compliance: FSS examination: zero technology risk findings (versus "material risk" finding pre-modernization). Regulatory reporting: from 3-week batch extraction to 4-hour automated generation. AML/CTF screening: real-time (replacing daily batch — meeting FSC expectations for transaction monitoring). DR capability: RTO from 24 hours to 15 minutes. Cost: mainframe elimination: KRW 8.4B annually (IBM z/OS MIPS, software licences, data centre). Modern platform: KRW 3.2B annually (AWS Korea + SaaS licences). Annual infrastructure saving: KRW 5.2B (approximately USD 4M). COBOL developer team: KRW 2.1B annually (12 senior developers, increasingly scarce). Modern development team: KRW 1.8B annually (15 developers — larger, younger team). Net talent saving: KRW 300M with larger, more sustainable team. Total modernization investment: KRW 12.8B (approximately USD 9.8M). Annual savings: KRW 5.5B (USD 4.2M). Payback period: 28 months. 5-year TCO reduction: KRW 14.7B (USD 11.3M).