
If you’re planning a migration, you don’t need another generic list. You need something you can actually run against.
This guide gives you:
- A 7-step, gate-based migration framework
- A decision matrix (big bang vs phased vs trickle)
- A copy-paste checklist template (Markdown + CSV + YAML)
- Validation SQL examples
- Concrete pass/fail criteria for every phase
You can use this whether you’re migrating data between systems, changing database engines, or moving infrastructure.
First — What Kind of Migration Are You Actually Doing?
Before we go further, let’s remove ambiguity.
If you mix these up, your checklist will be wrong from day one.
If your goal is… | You’re doing… | Use which checklist? |
Move data between apps (CRM → ERP) | Data migration | Use the full checklist below |
Change DB engine (SQL Server → PostgreSQL) | Database migration | Use full checklist + schema compatibility checks |
Move physical servers / racks | Data center migration | Use addendum section |
If you’re unsure, ask yourself:
- Are schemas changing?
- Are stored procedures involved?
- Are physical assets moving?
Answer those honestly. That determines the complexity tier.
The 7-Step Migration Framework
Here’s the high-level model I recommend.
Discover → Plan → Prepare → Pilot → Execute → Validate → Operate
Every step has a gate.
You don’t move forward until the gate passes.
Let’s break it down.
1. Discover & Inventory
Objective: Know exactly what exists before you touch anything.
If you skip this, everything after becomes reactive.
What to capture
Minimum required inventory fields:
1asset_id
2asset_type (database/table/file/api)
3owner
4size_gb
5row_count
6sensitivity_level (public/internal/confidential/regulatory)
7dependencies
8last_updatedYou should produce:
- inventory.csv
- Dependency map (diagram or table)
- Data profiling report
Data profiling metrics to calculate
For each critical table:
- % null values per column
- Duplicate key rate
- Orphan record rate
- Max/avg row size
- Encoding anomalies
If you don’t measure these now, you’ll discover them mid-migration.
Gate 0 PASS Criteria
- Inventory file exists
- All critical tables have row counts
- Dependency mapping completed
- Backup exists AND restore test performed (not just backup)
Yes, restore test. Backups don’t matter if they don’t restore.
2. Plan & Strategy
Now you decide how you migrate.
There are three real strategies.
Strategy Decision Matrix
Factor | Big Bang | Phased | Trickle |
Downtime tolerance | High | Medium | Low |
Data volume | Small-medium | Medium-large | Large |
Dependency complexity | Low | Medium | High |
Risk tolerance | High | Medium | Low |
Decision Rules
- If downtime tolerance < 30 minutes → avoid big bang.
- If dependencies are undocumented → use phased or trickle.
- If schema changes are heavy → pilot first, phased preferred.
Document:
- RACI
- Rollback criteria
- Acceptable data variance %
- Communication plan
Gate 1 PASS Criteria
- Strategy document approved
- Rollback defined
- Timeline with contingency buffer included
- Stakeholder signoff obtained
3. Prepare & Map
This is where migrations quietly succeed or fail.
You need a versioned mapping specification.
Example Mapping YAML
1mapping_version: "1.0.0"
2created_by: "data_team"
3created_on: "2026-02-17"
4
5tables:
6 - source: customers_v1
7 target: customers
8 primary_key: customer_id
9 transforms:
10 - field: phone
11 transform: normalize_e164
12 - field: created_at
13 transform: timezone_to_utc
14Put this in version control.
Never allow undocumented mapping changes.
Preparation Checklist
- Data cleansing rules defined
- Transformations documented
- Test dataset anonymized (if required)
- Mapping reviewed by business owner
Gate 2 PASS Criteria
- Mapping v1.0 committed to repository
- Transform logic peer reviewed
- Test dataset created
All known data anomalies documented
4. Pilot (Start With the Hardest Data)
Most teams test average data first.
That’s a mistake.
Start with:
- Largest tables
- Most complex joins
- Highest null/duplicate rates
- Most transformation logic
Pilot Metrics to Capture
- Parity % (row match rate)
- Transformation error rate
- Throughput (rows/sec)
- Retry rate
Example Acceptance Threshold
- Parity ≥ 99.9%
- Error rate ≤ 0.5%
- Rollback test successful
Gate 3 PASS Criteria
- Pilot report generated
- Variance explained
- Rollback executed successfully in test
If pilot fails, fix before scaling.
5. Execute (Automated, Never Manual)
Manual migration is how errors multiply.
You want:
- Idempotent jobs
- Versioned pipeline code
- Monitoring dashboards
- Real-time alerts
Required Logs
Every migration job must log:
1job_id
2initiated_by
3start_time
4end_time
5rows_processed
6rows_failed
7exception_summary
8checksum_value
9CI/CD Requirements
- Dry-run test on small dataset
- Schema diff validation
- Parity test automatically triggered
Gate 4 PASS Criteria
- No manual steps in execution
- Monitoring dashboard active
- Rollback script tested
6. Validate & Reconcile
This is where migrations become authoritative.
You must prove data integrity.
Row Parity Example (SQL Concept)
1SELECT
2 COUNT(*) as src_count,
3 (SELECT COUNT(*) FROM target_schema.orders) as tgt_count
4FROM source_schema.orders;
5Aggregate Check Example
1SELECT
2 SUM(amount) as src_total
3FROM source_schema.invoices;
4Compare against target.
Checksum Approach
Generate hash of primary key + critical columns.
Referential Integrity Check
1SELECT COUNT(*)
2FROM orders o
3LEFT JOIN customers c ON o.customer_id = c.id
4WHERE c.id IS NUL
5This must equal zero.
Business Validation
Run 10 business-critical workflows end-to-end.
If business logic breaks, the migration failed.
Gate 5 PASS Criteria
- All parity checks within tolerance
- No orphan records
- UAT signed by business owners
- Performance within ±20% baseline
7. Cutover, Hypercare & Decommission
The migration isn’t done at cutover.
It’s done after stability.
Hypercare Window
Minimum: 48–168 hours.
Dedicated on-call coverage.
Monitor These KPIs
Metric | Threshold |
Error rate | <0.5% |
Query latency | ±20% baseline |
Missing record alerts | 0 |
Job retries | <2% |
Decommission Checklist
- Old system backed up
- Data archived
- Secure wipe completed
- Contracts terminated
- CMDB updated
Gate 6 PASS Criteria
- Stability confirmed for defined window
- Audit log archived
- Decommission authorized
Copy-Paste Migration Checklist Template
Markdown Version
1# Data Migration Checklist v1.0
2
3## Discover
4- [ ] Inventory completed
5- [ ] Row counts captured
6- [ ] Dependencies mapped
7- [ ] Backup restore tested
8
9## Plan
10- [ ] Strategy selected
11- [ ] Rollback defined
12- [ ] Timeline approved
13- [ ] Stakeholders signed off
14
15## Prepare
16- [ ] Mapping v1.0 created
17- [ ] Transform logic reviewed
18- [ ] Test dataset prepared
19
20## Pilot
21- [ ] Pilot run executed
22- [ ] Parity >= 99.9%
23- [ ] Rollback tested
24
25## Execute
26- [ ] Automated pipeline deployed
27- [ ] Monitoring enabled
28- [ ] Logs validated
29
30## Validate
31- [ ] Row parity confirmed
32- [ ] Aggregate checks passed
33- [ ] UAT signed
34
35## Operate
36- [ ] Hypercare active
37- [ ] KPIs stable
38- [ ] Old system decommissioned
39CSV Version
1task_id,phase,task,owner,acceptance_criteria
2001,Discover,Complete inventory,DataOwner,inventory.csv exists
3002,Discover,Test restore,ITOps,Restore test successful
4003,Prepare,Create mapping v1.0,DataEngineer,mapping.yml committed
5004,Pilot,Run pilot migration,DataEngineer,Parity >= 99.9%
6YAML Version
1migration_version: "1.0"
2phases:
3 - name: Discover
4 tasks:
5 - inventory_completed: true
6 - restore_tested: true
7 - name: Pilot
8 acceptance:
9 parity_threshold: 99.9
10 rollback_tested: true
11Common Mistakes (And How This Checklist Prevents Them)
- Not testing restore → Gate 0 requires restore drill.
- Undocumented mapping → versioned YAML mapping required.
- Testing only easy data → pilot hardest dataset first.
- Manual execution → automation gate required.
- Skipping business validation → UAT required before decommission.
Final Thoughts
If you follow this gate-based model, you’ll always know:
- Where you are
- What’s missing
- Whether you’re safe to proceed
A migration isn’t complete because the data moved.
It’s complete because integrity is proven.
If you need expert help executing migrations at scale, ClonePartner specializes in structured, low-risk migrations across systems and infrastructure.
Book a free consultation to understand how ClonePartner can help you migrate
Talk to us