Data migration when moving to new software: why we count records three times
Summary
Data migration is the transfer of an organisation's records from one system to another. It looks like a simple copy, but two systems do not hold data in the same way. Fields have to be mapped, formats converted and broken records weeded out. At the end, it has to be proven that no record has been lost.
Author
Tarık İsmet ALKAN →Organisation
Kulular Bilişim Teknolojileri Limited Şirketi
When an organisation moves to a new system, it mostly talks about the new system's features. Screens, reports, the mobile app. How the data in the old system will be moved usually gets left until last and is waved through with "we'll do a transfer".
That is where projects really get stuck. The code works and the screens are ready, but some of the customer records come through missing, and nobody knows how many or why.
In this post I explain what we check before, during and after a migration.
Inventory first
We do not start a migration with the first line of code. We start with a list. Which tables are in the old system, how many records each one holds, what each field means and which ones are no longer used.
The most common surprise on this list is the same information being held in two places. The customer's address sits in both the customer table and the invoice table, and the two do not match. Which one counts as correct is not a technical decision. It is a decision for the organisation. It has to be asked before the migration.
The second surprise is that the old system is an Excel file. In Excel, every field without a rule is a field where someone, one day, typed something different "temporarily". You find rows with "none" in the date column and cells with two numbers in the phone column.
Field mapping
Two systems do not hold data in the same way. The old system may have a single "full name" field while the new one has two separate fields. A city that was free text in the old system may be picked from a list in the new one.
For each field we write a mapping rule: the old field, the new field and the conversion between them. Records that do not fit the rule are not quietly corrected. They go onto a separate list. We review that list one by one together with the organisation.
Silent correction looks tempting, but it is the worst thing you can do in a migration. A faulty record was faulty in the old system. If it is corrected by guesswork during the migration, it becomes a record in the new system that looks right but is wrong. Nobody will ever notice it again.
Counting three times
When the migration is finished, we count records at three points before we say it is complete.
The first is the source. The number of records in the old system that need to be migrated, table by table.
The second is the transfer. The number of records the migration script read, converted and set aside on the separate list.
The third is the target. The number of records actually created in the new system.
The source must equal the records transferred plus the records set aside. The records transferred must equal the target. If these two equations do not hold, the migration is not finished, however small the difference. A difference of a few hundred records means a few hundred customers' histories have been lost.
The numbers matching is not enough on its own. The numbers can match while the content is corrupted. So we open randomly selected records side by side in both systems and compare them field by field. For critical fields such as amounts and dates, we also calculate totals and summary values separately on both sides.
Trial migrations and a rollback plan
We do not do the real migration for the first time on the real day. First we do at least two trial migrations with a copy of the data. In each trial we measure the time, review the records set aside and fix the mapping rules.
Before the real migration, a rollback plan is put in writing. What happens if the migration stops halfway or the numbers do not match, up to what point you can go back to the old system, and who makes that decision. If these questions are asked on migration day, the answers are given in a hurry.
Two systems together for a short time
Where possible, after the new system goes live, the old system also stays open in read-only mode for a short time. If a record looks missing or wrong, you can check the old system and compare.
The end of this period is set from the start. If it is not, the two systems live side by side for months, and the debate about which one is correct starts all over again.
Not migrating is also a decision
Not every old record has to be moved to the new system. Migrating data whose retention period has expired keeps the organisation holding that data for no reason. For personal data, this can also turn into a breach of obligations under KVKK, Turkey's data protection law.
A migration is a good moment for this clean-up. We identify the records whose retention period has expired, leave them out of the migration with the organisation's approval and record the deletion. That way the new system starts clean.
In short
Data migration is not a transfer. It is a small project. A migration done without an inventory, mapping, three-stage counts, trial runs and a rollback plan loses trust on the new system's first day.
Frequently asked
- 01How long does a data migration take?
- Most of the time goes not on the migration itself but on preparation. The data can be transferred in a few hours, but mapping fields, finding broken records and repeating trial migrations can take weeks. A sound project does not move to the real migration without at least two trial runs.
- 02Can the two systems run together before the old one is switched off?
- They can, and they often should. Doing the same operations in both systems for a short time is the most reliable way to see that the new system produces the same result. The end of this period needs to be set from the start. Otherwise the two systems live side by side for months.
- 03Can we delete old data during the migration?
- Not migrating data whose retention period has expired is often the right decision. But that decision has to be based on the retention obligations in the legislation, and the deletion has to be recorded. A migration is a good opportunity for this clean-up.
Sources
- 01Law No. 6698 on the Protection of Personal Data (KVKK), Art. 7Erasure, destruction or anonymisation of personal data
- 02Regulation on the Erasure, Destruction or Anonymisation of Personal DataRecording erasure and destruction operations
Suggested citation
Tarık İsmet Alkan. “Data migration when moving to new software: why we count records three times”. Kulular Teknoloji, version 1.0, 4 September 2026. https://kulular.com.tr/en/writing/migrating-data-from-legacy-systems
Kulular Teknoloji
We build this for organisations
Kulular Teknoloji is a software company based in Ankara. We build bespoke software, AI and data systems for organisations. If you have a similar need, tell us briefly about your project and we will plan a first meeting together.
- Data migration
- Databases
- Project management
- Retention periods