T Techclick ← All lessons
Cloud · On-prem → Azure / AWS · Lesson 7 of 8

Cutover: the transaction works, or you roll back

Freeze writes, confirm the replica, flip DNS or the route, then soak. Success is a business transaction on pay-api — not “the VM is running.” Keep on-prem read-only until soak ends. Rollback is IP/DNS back to 10.20.30.40, not a rebuild from memory.

Updated 2026-08-18·20 min read·L2 primary·Quiz at end

After this page you can

The ticket

They cut over at 02:00. Azure portal showed the VM running. Health probe 200. Finance’s batch posted to the on-prem name that still had a cached A record in one resolver, and to the new IP in another. Two writers. On-prem was already deleted “to prevent split-brain.” There is no rollback.

Quick interview answer

Cutover is a window: freeze writes, confirm Azure Migrate / MGN replica lag is zero, planned failover / cutover, flip DNS (or the route), soak with a real transaction, then release the freeze. On-prem stays read-only (or powered off but disks kept) until soak ends. Rollback = point pay-api.techclick-lab.in back to 10.20.30.40 and thaw on-prem. Success is the business POST, not the compute blade.

Hero · one writer
DNS flip from on-prem pay-api to cloud with rollback still possible
Two writers is not a cutover. It is corruption.
Lab data · dummy only

On-prem DC dc01 10.20.30.10 · FortiGate fgt-hq 203.0.113.10 · same Azure landing as the Azure series and same AWS landing as the AWS series. Wave-1 app pay-api today on VM 10.20.30.40.

Mental model

StepWhat movesThis lab
FreezeWrites stop on on-premApp maintenance flag / DB read-only
ReplicaFinal syncMigrate / MGN lag PT0S
FlipName or routeA record 10.20.30.40 → 10.41.1.40 or 10.51.1.40
SoakReal traffic, one writerPOST /v1/pay from a known client
RollbackName or route backA record back, thaw on-prem, cloud NIC isolated
One writer at a time
Freeze Replica Flip DNS Soak Keep RO Rollback

Delete on-prem only after soak, not as a step in the flip.

https://portal.azure.com
Training mock · not live
HomeManagement groupsVirtual networksAzure MigrateMicrosoft Entra
Azure Migrate → Migrations → pay-api

Planned failover

10.20.30.40 · freeze flag ON
10.41.1.40 · spoke 10.41.0.0/16
pay-api.techclick-lab.in TTL 60 · flip after failover
POST /v1/pay · not just /health
A record → 10.20.30.40 · on-prem disks intact
Azure Migrate planned failover. Training mock.

How to choose

Flip DNS when clients already use pay-api.techclick-lab.in (this lab). Flip a route only if you kept the same IP — we did not. Do not do both. Lower TTL at least a day before the window. If the app is IP-literal in a config, that is a pre-req, not a surprise at 02:00.

Runbook

  1. Side A — freeze + final sync

    Maintenance page / DB read-only on on-prem. Azure Migrate planned failover or MGN cutover. Confirm no writers. Snapshot on-prem disks.

  2. Side B — flip one thing

    Change the A record on dc01 (and Private DNS / Route 53 if they also answer). Flush a known resolver. Do not also change the cert CN or leave the domain in this window.

  3. Side C — soak then decide

    Known client runs POST /v1/pay. Sentinel / Security Hub shows the hit on the cloud IP. Watch for leftover hits on 10.20.30.40 — that is a resolver you missed. Only then lift read-only. If soak fails: A record back, thaw on-prem, isolate the cloud NIC.

cutover proof · dummy
# before
nslookup pay-api.techclick-lab.in 10.20.30.10
# 10.20.30.40

# after flip
nslookup pay-api.techclick-lab.in 10.20.30.10
# 10.41.1.40

curl -sk -X POST https://pay-api.techclick-lab.in/v1/pay -d '{"ref":"lab-soak-1"}'
# 200  ·  id=…   ← this is success, not `az vm get-instance-view`

# leftover writer?
# FAZ / Sentinel still seeing 10.20.30.40:443 POSTs → you missed a cache / a literal IP

Four failures

1 · VM running = done

Compute health is not a payment. Close on the transaction.

2 · Two writers

DNS split-brain or on-prem still accepting posts. Corruption. Freeze first.

3 · Delete on-prem in the flip

You removed the rollback. Read-only until soak ends — hours to days, not five minutes of /health.

4 · Flip plus rebuild

New OS, new cert, new IdP, new IP. You cannot tell which change failed. That was lesson 5.

How to prove it

Close only when

1) One writer. 2) POST /v1/pay succeeds against the name. 3) Logs show the cloud IP. 4) On-prem still exists and is read-only. 5) Rollback command is tested (or written so a tired human can run it).

Traps

Looks greenStill broken
/health 200POST /v1/pay still talks to on-prem SQL the wrong way — or not at all
Your laptop resolves newBatch server TTL is 86400
Cloud VM runningOn-prem still writable

Knowledge check

Judgment items. One best answer. Reasons send you back to the matching section.

Q1

Cutover success in this lab is…

Correct: b. Transaction, not compute.
Q2

On-prem pay-api during soak should be…

Correct: b. Rollback.
Q3

This lab flips…

Correct: a. Choose.
Q4

Rollback is…

Correct: b. Concept.
Q5

Two resolvers, two IPs during soak means…

Correct: b. Ticket.
Q6

Final sync happens…

Correct: b. Runbook.

On-prem to cloud migration class series: 6 Rs · Landing zone first · Identity first · VPN / ER / DX · Lift vs rebuild · Map controls · Cutover + rollback · Hybrid interview

Sources

Related: Azure landing zone · AWS Org / OU.