IT Consulting

Data migration checklist for software projects

A practical data migration checklist for software projects: ownership, mapping, validation, dry runs, rollback, and handover.

Syntanea
Data migration checklist for software projects

Data migration checklist work starts long before anyone exports a CSV. The risky part is not moving rows from one place to another. The risky part is discovering too late that two systems disagree about customers, invoices, statuses, permissions, or dates.

I have seen migrations fail for boring reasons: one field meant different things in sales and finance, test data was cleaner than production, old records had manual fixes nobody documented, and rollback meant restoring a backup from Friday night. None of that shows up in a polished demo.

This guide is for software projects where data has to move between systems: ERP replacement, CRM cleanup, SaaS rebuilds, legacy modernization, vendor handover, reporting replicas, or a new internal tool. Use it before the first import script touches production.

Data migration checklist before scope is agreed

Start by writing down what is moving, what is not moving, and who gets to decide. Migration scope gets messy when every team assumes its edge case is included.

Capture these items early:

  • source systems and target systems
  • business objects such as customers, suppliers, invoices, contracts, tickets, products, users, roles, and permissions
  • data owners for each object
  • fields that are required for go-live
  • fields that can be archived instead of migrated
  • legal retention rules, deletion rules, and GDPR export needs
  • reporting periods that must still reconcile after the move
  • The useful question is not "can we migrate everything?" It is "what data must be trusted on day one?" That keeps the project out of archaeology mode.

    If the migration is part of replacing old software, read our legacy system integration strategy first. Sometimes the safer move is to integrate around the old system for a while instead of forcing a rushed cutover.

    Map data ownership before field mapping

    Field mapping looks technical, but the first problem is ownership. A CRM may have the billing email. Finance may have the legal company name. Support may have the current account status. The target system needs one rule for each conflict.

    Create a simple ownership table:

  • field name in the target system
  • source of truth
  • fallback source if the main source is empty
  • transformation rule
  • validation rule
  • person who can approve exceptions
  • For example, the customer name might come from finance, not the CRM, because invoices already use the legal name. The sales display name can still migrate, but it should not overwrite billing data.

    This is where many teams save weeks. They stop debating during import week because the business rule already exists.

    Clean data with rules, not vibes

    Do not ask a developer to "clean the data" without rules. That turns engineering work into guesswork.

    Write cleanup rules as if a tired person has to apply them at 6pm:

  • trim whitespace and normalize casing where it has no legal meaning
  • merge duplicates only when two or more identifiers match
  • keep both records when identifiers conflict
  • mark missing VAT IDs for review instead of inventing values
  • convert dates with an explicit timezone rule
  • preserve original source IDs for traceability
  • Keep a reject file for records that fail validation. A clean failure is better than a silent bad import.

    Run migration dry runs with real production copies

    A dry run with ten handpicked rows proves almost nothing. Use a recent production copy, mask personal data where needed, and run the same import path you plan to use for go-live.

    A serious dry run should produce:

  • imported record counts by object
  • rejected record counts with reasons
  • sample records checked by business owners
  • reconciliation totals for money, quantities, and status counts
  • import duration and bottlenecks
  • a list of rules changed after the run
  • Do at least two dry runs. The first one finds ugly data. The second one tests whether your fixes work. For complex ERP or finance migrations, three or four runs are normal.

    Validate migrated data in business language

    Technical validation says the import completed. Business validation says the imported data can be used.

    Ask each owner to check scenarios they actually care about:

  • Can finance reconcile open invoices against the old system?
  • Can sales see active customers with the right owner and status?
  • Can support find ticket history for a disputed case?
  • Can admins see the correct roles and permissions?
  • Can reporting reproduce last month's management numbers?
  • Give reviewers a checklist, not just database access. People miss problems when validation is framed as "look around and tell us if it seems fine."

    For acquisition or vendor handover work, pair this with a software due diligence checklist. Data problems often explain why a product looked easier to take over than it really was.

    Plan cutover, freeze, and rollback before go-live

    The cutover plan should be written before the final migration weekend. If the plan exists only in someone's head, you do not have a plan.

    Define:

  • when users stop changing data in the old system
  • who announces the freeze and who can approve emergency changes
  • the exact export time
  • import sequence and dependencies
  • smoke tests after import
  • go/no-go criteria
  • rollback trigger and rollback owner
  • what happens to records created during the freeze
  • Rollback is not failure. It is a safety mechanism. The failure is pretending rollback exists when nobody has tested it.

    Keep an audit trail after migration

    For at least the first month, keep the old IDs, source timestamps, import batch IDs, rejected files, and transformation logs. When someone asks why a customer balance changed, you need an answer faster than "we will ask the developer."

    A good handover package includes:

  • mapping document
  • migration scripts or workflow description
  • dry run reports
  • validation sign-offs
  • reject files and exception decisions
  • known issues left for the next release
  • support instructions for common post-migration questions
  • This is also where a software requirements document helps. Migration rules belong in the same decision trail as product scope, integrations, and acceptance criteria.

    FAQ: data migration checklist

    What should a data migration checklist include?

    A data migration checklist should include source and target systems, data ownership, field mapping, cleanup rules, validation rules, dry runs, reconciliation, cutover timing, rollback, audit trail, and post-migration support.

    How do you validate data after migration?

    Validate migrated data with record counts, rejected-record reports, reconciliation totals, sampled business records, permission checks, reporting comparisons, and sign-off from the teams that own the data.

    How many migration dry runs are needed?

    Most software projects need at least two dry runs. The first run exposes data quality problems. The second checks whether the cleanup rules, mapping, validation, and import timing are good enough for go-live.

    Who owns data migration in a software project?

    Ownership is shared. Engineering builds the migration path, but business owners must define source-of-truth rules, approve exceptions, validate records, and decide what can be archived instead of moved.

    What is the biggest data migration risk?

    The biggest risk is not usually the import script. It is unclear ownership: fields with no source of truth, conflicts between systems, weak validation, and no tested rollback when production data does not match assumptions.

    Need help planning a migration?

    Syntanea helps European teams migrate data during software rebuilds, system integrations, vendor handovers, and legacy modernization projects. We map ownership, write migration rules, build the import path, and test it before production data is at risk.

    If a migration is blocking a product launch or system replacement, talk to Syntanea. We can run a focused discovery, find the risky data, and turn the migration into a plan your business owners can actually review.

    Related reading

  • Legacy system integration strategy - when data movement should be part of a safer integration plan
  • Software due diligence checklist - how to inspect data risk before inheriting a product
  • Software requirements document template - where migration rules and acceptance criteria should be recorded