Every core banking replacement is really a data migration with a software project attached. The system is rarely the hard part. The twelve years of accumulated legacy data is.
The sequence
- Gap analysis. What the legacy system holds, what the new one needs, and where those two sets do not overlap.
- Extraction. Pull the legacy data out in full, not in samples. Samples hide the records that break the load.
- Profiling. Count the nulls, the duplicates, the accounts with no owner and the owners with no ID. This is the uncomfortable meeting.
- Cleansing. Fix what can be fixed programmatically, escalate what needs a human decision. Do not let this run in parallel with mapping.
- Mapping. Legacy fields onto the new schema, with a written rule for every transformation. If a rule cannot be written down, it is not yet understood.
- Trial load. Load into a test environment and reconcile balances against the legacy trial balance. Repeat until the difference is zero, not "close".
- Cutover. Freeze, final extract, load, reconcile, go live.
The step people skip
Profiling. It is tempting to move from extraction straight to mapping, because profiling produces bad news and no visible progress. Skipping it moves the bad news to the trial load, where it costs ten times as much to fix.




