Verified by Garnet Grid

How to Plan a Cloud Migration: Complete Technical Playbook

Step-by-step guide to migrating workloads to Azure, AWS, or GCP. Covers assessment, dependency mapping, migration strategies (6 Rs), and cutover planning.

Every cloud migration follows the same arc: excitement, chaos, regret, stabilization. This guide compresses the chaos phase by giving you a concrete, step-by-step framework used in 30+ enterprise migrations. The organizations that succeed treat migration as a program, not a project — with clear waves, dependency tracking, and ruthless prioritization.


Step 1: Build Your Application Inventory

Before migrating anything, you need a complete inventory. Most organizations don’t actually know what they have running.

1.1 Automated Discovery

# Azure Migrate — deploy the discovery appliance
az migrate project create \
  --name "Migration-Assessment" \
  --resource-group myRG \
  --location eastus

# AWS Application Discovery Service
aws discovery start-continuous-export
aws discovery describe-configurations --configuration-ids server-1234

1.2 Manual Inventory Template

For each application, capture:

FieldExample
Application NameERP Portal
OwnerFinance Team
Technology Stack.NET 6, SQL Server 2019, IIS
Current Infrastructure2× Dell R740, SAN storage
DependenciesActive Directory, SMTP relay, File share
Data Volume2.4 TB (database) + 800 GB (files)
RPO / RTO15 min / 4 hours
Monthly Cost (Current)$3,200 (amortized hardware + licensing)
Compliance RequirementsSOC 2, HIPAA

1.3 Application Categorization

CategoryDescriptionMigration PriorityTypical Count
Critical business appsRevenue-generating, customer-facingHigh (wave 3-4, after validation)5-10
Internal productivityEmail, collaboration, HRMedium (wave 2)10-20
Development/testCI/CD, staging environmentsHigh (wave 1, low risk)5-15
Legacy/EOLOld servers, unused appsRetire candidates10-30
Shadow ITUnknown servers discovered during auditEvaluate per app5-20

Step 2: Map Dependencies

Dependency mapping is where most migrations fail. An application never exists in isolation.

2.1 Network-Level Discovery

# Use netstat to find active connections on Windows
netstat -ano | findstr ESTABLISHED | findstr :1433  # SQL connections
netstat -ano | findstr ESTABLISHED | findstr :443   # HTTPS connections

# Linux equivalent
ss -tunapl | grep ESTAB | awk '{print $5}' | sort | uniq -c | sort -rn

2.2 Build the Dependency Graph

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│   Web App    │────▶│   API Layer  │────▶│  SQL Server  │
│  (IIS/.NET)  │     │  (.NET Core) │     │  (2019 Std)  │
└──────────────┘     └──────────────┘     └──────────────┘
       │                    │                     │
       ▼                    ▼                     ▼
┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│    Redis     │     │ File Share   │     │    SSRS      │
│   (Cache)    │     │  (SMB/NFS)   │     │ (Reporting)  │
└──────────────┘     └──────────────┘     └──────────────┘

2.3 Dependency Types

TypeDescriptionMigration Impact
Hard dependencyApp won’t start without this serviceMust migrate together or maintain connectivity
Soft dependencyApp works without it but degradedCan migrate separately with temporary workaround
Network dependencyLatency-sensitive connectionMust be in same region/VPC
Auth dependencyAD, LDAP, SAMLRequires hybrid identity solution during transition
Data dependencyShared database, file shareMust resolve ownership before migration

:::tip[Migration Rule] Components connected by hard dependencies must migrate together. If you migrate the Web App but leave SQL Server on-prem, you’re adding latency to every query. Group tightly coupled components into migration waves. :::


Step 3: Choose Your Migration Strategy (6 Rs)

For each application, choose one of the 6 R strategies:

StrategyDescriptionWhen to UseEffortRisk
Rehost (Lift & Shift)Move as-is to cloud VMsLegacy apps, quick migrationLowLow
ReplatformMinor modifications (e.g., managed DB)Apps with modular componentsMediumLow-Med
RefactorRewrite for cloud-nativeStrategic apps worth investing inHighMedium
RepurchaseReplace with SaaSOff-the-shelf functionalityMediumMedium
RetainKeep on-premisesCompliance, low ROI to migrateNoneNone
RetireDecommissionUnused or redundant applicationsNoneNone

Decision Framework

Is the application actively used? ──NO──▶ RETIRE

        YES

Does it have a SaaS equivalent? ──YES──▶ REPURCHASE (if cost-effective)

        NO

Is it strategic and worth investing in? ──YES──▶ REFACTOR

        NO

Can you use managed services (DB, cache)? ──YES──▶ REPLATFORM

        NO

▶ REHOST (lift and shift)

Cost Comparison by Strategy (per application)

StrategyImplementation CostTimelineOngoing Cost Impact
Rehost$5K-$20K1-4 weeksSimilar to on-prem
Replatform$10K-$50K2-8 weeks20-40% lower (managed services)
Refactor$50K-$500K2-12 months40-70% lower (cloud-native)
RepurchaseLicense cost1-3 monthsVaries by SaaS vendor
Retain$0N/ASame (but aging hardware)

Step 4: Size Your Landing Zone

4.1 Compute Sizing

# Collect performance data for sizing
# Windows Performance Monitor — capture 2 weeks of data
typeperf "\Processor(_Total)\% Processor Time" \
  "\Memory\Available MBytes" \
  "\PhysicalDisk(_Total)\% Disk Time" \
  -si 60 -o perf_data.csv -f CSV

# Map to cloud VM sizes
# Rule of thumb:
# 4 vCPU on-prem ≈ 2-4 vCPU in cloud (modern chips are faster)
# Match peak memory, not average

4.2 Sizing Rules of Thumb

On-Prem ResourceCloud EquivalentNotes
4 vCPU server2-4 vCPU VMModern cloud CPUs are faster
32 GB RAMMatch exactlyMemory is cheap, don’t undersize
500 GB SAN (IOPS: 5K)Premium SSD (P30: 5K IOPS)Match IOPS, not just capacity
SQL Server 2019Azure SQL / RDSStart with general purpose, scale up
File share 1 TBAzure Files / EFSMatch throughput, not just capacity

4.3 Network Requirements

Current BandwidthAzure ExpressRouteAWS Direct Connect
< 200 Mbps200 Mbps circuit ($55/mo)1 Gbps hosted ($220/mo)
200 Mbps - 1 Gbps1 Gbps circuit ($290/mo)1 Gbps dedicated ($220/mo)
> 1 Gbps10 Gbps circuit ($4,750/mo)10 Gbps dedicated ($1,650/mo)

Step 5: Execute the Migration Wave

5.1 Wave Planning

WaveApplicationsStrategyTimelineRisk
0Landing zone, networking, identityFoundationMonth 1-2Low
1Dev/test environmentsRehostMonth 2-3Low
2Internal tools (wiki, monitoring)Rehost/ReplatformMonth 3-4Low
3Non-critical business appsRehost/ReplatformMonth 4-5Medium
4Critical business appsReplatform/RefactorMonth 5-8High
5Remaining apps + decommissionMixedMonth 8-10Medium

5.2 Pre-Migration Checklist

  • Backup all source systems
  • Document current DNS, IP, and firewall configurations
  • Prepare rollback runbook
  • Notify stakeholders of maintenance window
  • Pre-stage data replication (for large datasets)
  • Test connectivity from cloud to on-prem dependencies

5.3 Cutover Procedure

  1. T-4 hours: Final data sync / replication flush
  2. T-2 hours: Stop source application (maintenance mode)
  3. T-1 hour: Verify replication is 100% complete
  4. T-0: Switch DNS to cloud endpoints
  5. T+1 hour: Smoke test all critical paths
  6. T+4 hours: Monitor for issues, prepare rollback
  7. T+24 hours: Declare migration complete or rollback

:::caution[DNS TTL] Reduce DNS TTL to 300 seconds (5 minutes) at least 48 hours before cutover. This ensures that when you flip DNS, the propagation happens quickly. Reset to normal TTL (3600+) after 48 hours of stable operation. :::


Step 6: Post-Migration Optimization

The migration isn’t complete when the workload is running in the cloud — it’s complete when it’s optimized.

OptimizationTimelineExpected Savings
Right-size VMs (based on actual metrics)Day 3020-40%
Enable auto-scaling for variable workloadsDay 30-6015-30%
Convert to reserved instances (stable workloads)Day 9030-50%
Implement tagging for cost allocationDay 1Visibility
Set up monitoring with alertingDay 1Incident response
Review security groupsDay 7Risk reduction
Decommission source infrastructureDay 90100% of on-prem cost

Migration Checklist

  • Complete application inventory (automated + manual)
  • Categorize all applications (critical, internal, dev, legacy, shadow)
  • Map all dependencies (hard, soft, network, auth, data)
  • Assign migration strategy (6 Rs) to each application
  • Size landing zone (compute, storage, network)
  • Build and test landing zone (networking, identity, security)
  • Plan migration waves (low-risk first, critical in later waves)
  • Execute migration waves (grouped by dependency)
  • Cutover with rollback plan and DNS TTL reduction
  • Post-migration right-sizing and optimization
  • Convert to reserved instances for stable workloads
  • Decommission source systems (don’t pay for both!)

:::note[Source] This guide is derived from operational intelligence at Garnet Grid Consulting. For a premium cloud migration assessment, visit garnetgrid.com. :::

Jakub Dimitri Rezayev
Jakub Dimitri Rezayev
Founder & Chief Architect • Garnet Grid Consulting

Jakub holds an M.S. in Customer Intelligence & Analytics and a B.S. in Finance & Computer Science from Pace University. With deep expertise spanning D365 F&O, Azure, Power BI, and AI/ML systems, he architects enterprise solutions that bridge legacy systems and modern technology — and has led multi-million dollar ERP implementations for Fortune 500 supply chains.

View Full Profile →