Database Migration Plan: 12-Week Template, Cutover Runbook and Example
10 min read ยท 2026-10-25
A database migration plan is the document that says what data moves, from which system to which target, with which method, in what order, who does each step, how you will prove the data is right and how you will roll back if it is not. It turns a risky technical change into a schedule with owners, test gates and a go/no-go decision.
The template below covers a typical 12-week migration of one production database, for example from on-premises SQL Server to a managed cloud service, or from Oracle to PostgreSQL. It is written for the engineering manager, DBA or project manager who has to run the project and explain it to stakeholders. It includes a filled-in example, a cutover runbook outline, validation checks and the traps that make migrations slip.
The roadmap at a glance
Goal: The production database runs on the target platform, every dependent application is pointed at it, data is validated against the source and the old system is retired after an agreed safety period. Duration: 12 weeks
Inventory and requirements (Weeks 1-2)
Know exactly what you are moving and what the business can tolerate.
- List every schema, table, view, stored procedure, trigger, job and user account, with sizes and row counts.
- Find every application, report, ETL job and integration that reads or writes the database, and name an owner for each.
- Agree on the allowed downtime window and the acceptable data loss (RPO) and recovery time (RTO) with the business owner.
- Note security and compliance needs, such as encryption, data residency and audit logging, and confirm them with your security team.
Milestone: A signed-off inventory and a requirements page with downtime window, RPO, RTO and the list of dependent systems with owners.
Strategy and target design (Weeks 2-4)
Choose how the data will move and design the target environment.
- Choose the migration method: offline dump and restore, native replication, or a full load followed by change data capture (CDC).
- Decide whether this is a lift and shift on the same engine or a change of engine that needs schema and code conversion.
- Size the target for storage, compute, connections and backup retention, using current usage plus planned growth.
- Write the rollback approach: how long the source stays live and whether changes on the target are synced back.
Milestone: A short design document with method, target sizing, network and security setup, and a rollback approach, approved by the tech lead and the business owner.
Build target and convert schema (Weeks 4-6)
Have a target environment ready with the full schema and supporting code.
- Provision the target with infrastructure as code where possible so environments match.
- Convert the schema, data types, procedures and functions, and log every manual change in a conversion register.
- Set up users, roles, backups, monitoring and alerts on the target before any data arrives.
- Set up the migration tool (for example AWS Database Migration Service, Azure Database Migration Service or native replication) in a test environment.
Milestone: Target environment built, schema deployed, monitoring live and a first trial load completed in test.
Data migration and validation in test (Weeks 6-8)
Prove the data arrives complete and correct.
- Run a full trial load from a recent production copy and time each step.
- Compare row counts per table and checksums or sampled record comparisons on key tables.
- Check data types, character encoding, time zones and null handling on fields that often break, such as dates and accented text.
- Fix issues in the conversion scripts, then rerun the load until two runs in a row pass.
Milestone: Two consecutive trial loads pass all validation checks, with measured load time that fits inside the downtime window.
Application testing and rehearsal (Weeks 8-11)
Make sure every application works on the new database and the cutover can be run on time.
- Point test copies of each dependent application at the target and run their regression suites.
- Run performance tests on the busiest queries and batch jobs and compare with the source.
- Have business users run key reports and transactions and sign off on results (user acceptance testing).
- Rehearse the full cutover runbook end to end, including rollback, with the real team and a timer.
Milestone: UAT sign-off from each application owner and a timed rehearsal, including rollback, that fits inside the window.
Cutover and hypercare (Weeks 11-12)
Switch production to the new database and stabilize it.
- Freeze schema changes and non-urgent releases from one week before cutover.
- Hold the go/no-go meeting with the agreed criteria, then run the runbook step by step with a named owner per step.
- Validate data and run smoke tests before reopening to users, and keep the rollback trigger clear.
- Watch performance, errors and job runs closely for one to two weeks, then retire the source after the agreed safety period.
Milestone: Production running on the target, all dependent applications switched, validation report signed and a decommission date set for the source.
Choose the right migration method
The method drives the whole timeline, so decide it early. Offline migration means stopping writes, copying everything and switching over. It is the simplest and the easiest to validate, but the downtime grows with data size. Online migration uses a full load plus continuous replication or change data capture, so the target stays nearly in sync and the final switch takes minutes. It is more complex to set up and to test.
A change of engine (for example Oracle to PostgreSQL) adds schema and code conversion, which is often the longest part. Stored procedures, triggers and engine-specific SQL in the applications all need review. If your applications hold a lot of database logic, plan extra weeks for conversion and testing, or consider moving to a managed version of the same engine first and changing engines later.
- Dump and restore: small databases, generous downtime window, same or similar engine.
- Native replication: same engine, low downtime, for example a replica promoted to primary.
- Full load plus CDC: large databases or near-zero downtime, often with a migration service.
- Phased by module: when the application can be split, move one domain at a time behind an API.
Example: a filled-in plan for a 500 GB order database
Picture an online retailer moving its order database from an on-premises SQL Server to a managed cloud database on the same engine. The business allows a four-hour window on a Sunday night. The order service, a warehouse integration and a finance report all depend on it.
Because the engine stays the same, the team skips most conversion work and spends the time on testing and rehearsal. Every block has an owner and a checkable result.
- Weeks 1-2 (owner: project manager with the DBA): inventory of 140 tables, 60 procedures and 12 jobs, three dependent systems mapped. Milestone: downtime window and RPO signed by the head of e-commerce.
- Weeks 2-4 (owner: cloud architect): full load plus replication chosen, target sized, private network link set up. Milestone: design approved.
- Weeks 4-8 (owners: DBA and data engineer): target built with backups and alerts, two trial loads with row counts and checksums matching. Milestone: validation report for both runs.
- Weeks 8-11 (owners: application leads and QA): order service, warehouse integration and finance report tested on the target, two rehearsals timed. Milestone: UAT sign-off and a rehearsal that finishes with time to spare.
- Weeks 11-12 (owner: engineering manager as cutover lead): go/no-go Friday, cutover Sunday night, two weeks of hypercare. Milestone: source set to read-only, decommissioned after the safety period.
What goes in the cutover runbook
The runbook is a numbered list of every action on cutover night, written so that someone other than the author could follow it. Each line has a step number, the action, the owner, the planned start time, the expected duration, how to verify it worked and what to do if it fails. Keep it in a shared document or spreadsheet that everyone on the call can see, and update the actual times as you go.
Write the rollback steps in the same format, with a clear trigger, such as validation failing or the clock passing a set point. Decide in advance who can call the rollback. On the night, nobody should have to debate it.
- Pre-checks: backups taken, replication lag near zero, team on the bridge call, stakeholders notified.
- Stop writes: maintenance page on, jobs paused, application connections closed.
- Final sync and validation: last changes applied, row counts and checksums compared.
- Switch: connection strings or DNS updated, applications restarted, smoke tests run.
- Reopen: maintenance page off, jobs resumed, monitoring watched, status message sent.
- Rollback path: steps to point applications back to the source and the latest point at which it is still safe.
Who owns what
Migrations fail in the gaps between teams: the DBA thinks the application team tested the batch jobs, and the application team thinks the DBA did. Write a simple RACI and review it at kickoff.
Name one cutover lead who runs the bridge call and makes the go/no-go recommendation. That person should not also be the one typing commands.
- Business owner: approves downtime window, RPO and RTO, signs off UAT and the go/no-go decision.
- Project manager: owns the plan, the RACI, the risk log and stakeholder updates.
- DBA or data engineer: owns schema conversion, data loads, validation and performance tuning.
- Application owners: test their systems on the target and update connection settings.
- Infrastructure or cloud team: builds the target, network, backups and monitoring.
- Security: reviews access, encryption and audit settings before go-live.
- Cutover lead: runs the rehearsal and the cutover call and calls the rollback if needed.
How to report status to leadership
Leaders want three answers: are we on track for the cutover date, what could stop us, and what do we need from them. Use one slide with the six phases as a timeline, a red, amber or green status on each, the top three risks with owners and the next decision date, such as the go/no-go meeting.
Show the go/no-go criteria early so nobody is surprised later. Typical criteria are all validation checks passed in the last rehearsal, UAT signed by each application owner, rehearsal time inside the window with a buffer, rollback tested and the support team staffed for hypercare. Leave out the table counts and tool settings unless someone asks.
Risks and dependencies
Most migration delays come from things nobody listed in week one. Keep a risk log from the start, with an owner and a fallback for each item, and review it every week.
The risks below come up in almost every database move. Add your own as you find them, especially integrations that only run monthly, which are easy to miss in testing.
- Hidden dependencies: a report or script nobody listed. Owner: project manager. Fallback: monitor connections on the source for a few weeks before cutover to find unknown clients.
- Load time longer than the window: Owner: DBA. Fallback: switch to full load plus CDC, or move historical data ahead of time.
- Performance drop on the target: Owner: DBA. Fallback: tune indexes and query plans found in performance tests, or size up the target.
- Data type and encoding issues: Owner: data engineer. Fallback: add targeted checks on dates, decimals and text fields to the validation suite.
- Key people unavailable on cutover night: Owner: engineering manager. Fallback: name a backup for every runbook step.
Common mistakes to avoid
- Skipping a full inventory leaves forgotten jobs and reports to fail after cutover, so trace every client connection to the source before you set a date.
- Validating only row counts misses corrupted values, so add checksums or sampled record comparisons on key tables.
- Testing the load but not the applications leads to broken features on day one, so have each application owner run their regression suite and UAT on the target.
- Running cutover without a rehearsal turns the night into improvisation, so rehearse the full runbook with a timer and the real team at least once.
- Leaving the rollback decision vague causes delays when things go wrong, so write a clear trigger and name who can call it before the night.
- Deleting the source right after go-live removes your safety net, so keep it read-only for an agreed period before you decommission it.
Frequently asked questions
What should a database migration plan include?
It should include the inventory of objects and dependent systems, the migration method, the target design, the validation approach, the testing plan, the cutover runbook with rollback, and owners and dates for each step. Add the downtime window, RPO and RTO agreed with the business owner.
How long does a database migration take?
It depends on data size, the number of dependent applications and whether the engine changes. A same-engine move of one database can fit in a few weeks to a few months, while a change of engine with heavy stored procedure logic often takes longer. Plan around test gates rather than a fixed date.
How do you validate data after a migration?
Compare row counts per table, then run checksums or field-by-field comparisons on samples from key tables. Check tricky fields like dates, decimals and special characters. Finally, have business users run known reports and transactions and compare the results with the source.
How do you migrate a database with minimal downtime?
Use a full load followed by continuous replication or change data capture, so the target stays nearly in sync with the source. At cutover, you only stop writes long enough to apply the last changes, validate and switch connections. Rehearse it first so you know how long that takes.
What is the difference between a database migration and a data migration?
A database migration moves a whole database, including schema, code and data, to a new platform or engine. A data migration moves data between systems, often with transformation, such as moving customer records from an old CRM to a new one. Both need validation and a cutover plan.