Cloud Migration Risk Assessment: How to Spot the 6 Dependencies That Kill Most Projects Before Week 12
80+% of large cloud migrations either blow the budget, miss the date, or quietly repatriate workloads. The difference between the 20% that succeed and the rest is a brutal dependency map done before a single VM is rehosted. Here’s the exact assessment framework that has survived 30+ angry board reviews.
The Usual Lies We Tell Ourselves
Every cloud migration that goes off the rails starts with a set of convenient but completely false assumptions. These are the stories we tell ourselves in planning meetings to make an overwhelmingly complex reality seem simple. But they are the direct cause of budget overruns, security breaches, and failed projects.
Before you can even begin an assessment, you have to dismantle these myths.

“It’s just lift-and-shift”
“Lift-and-shift” is probably the most dangerous phrase in all of IT. It creates the illusion of a simple copy-paste job from your on-prem data center to a cloud environment. It’s never that simple.
A virtual machine humming along on VMware is not the same as an EC2 instance. The underlying networking, the storage I/O, and the hypervisor all behave differently. I’ve seen applications optimized for the consistent, low-latency performance of an on-prem SAN completely fall apart from crippling I/O contention when dumped onto cloud block storage without any re-platforming.
This assumption willfully ignores:
- Latency: The milliseconds of latency between your app server and database on-prem can balloon into tens of milliseconds across cloud availability zones, breaking everything.
- Dependencies: Hard-coded IP addresses, a reliance on a specific hardware load balancer, and implicit network trust models all shatter the moment you “lift” the application.
- Cost: You’re moving from a predictable capital expenditure (CapEx) model to an operational expenditure (OpEx) model that can spiral out of control.
“The app is stateless” (spoiler: nothing is)
No production application is truly stateless. When a team claims their app is stateless, it usually just means they haven’t mapped out where the state is actually being managed.
Even apps built on “stateless” principles are littered with hidden stateful dependencies. We’re talking about in-memory caches that need to be repopulated after a restart, session data quietly stored on a local file system, or a deep reliance on a logging aggregator that assumes a persistent local agent. Move the app without accounting for this, and you get broken user sessions and silent data loss.
The most common failure point is assuming that because the application tier itself doesn’t store persistent data, it has no state. State is hidden in logging configurations, session affinity settings on load balancers, and temporary file writes that were never meant to be permanent.
“Networking will figure itself out”
This is a classic symptom of organizational silos. The application teams just assume the network team will magically replicate a decade’s worth of complex on-prem firewall rules, routing tables, and VLAN segments in the cloud. This assumption fails. Every. Single. Time.
Your legacy firewall ruleset likely has thousands of lines accumulated over years, with zero clear ownership or documentation. Trying to translate that mess directly into cloud security groups isn’t just a technical nightmare; it’s a massive security risk. The process forces a long-overdue review of traffic flows that almost always uncovers critical dependencies nobody knew existed.
With the cloud migration market projected to explode from USD 232.51 billion in 2024 to USD 806.41 billion by 2029, many organizations are prioritizing speed over security. And with 89% of organizations now operating in multi-cloud environments, this sprawling digital estate becomes a governance nightmare. You can find more details about these cloud migration risks and the challenges they present in this comprehensive analysis.
“We’ll fix technical debt after we’re in the cloud”
Putting off cleaning up technical debt is the single most expensive decision you can make in a cloud migration. Moving a poorly architected, bug-riddled application to the cloud doesn’t solve its problems—it just makes them more expensive to run and harder to fix.
An inefficient on-prem application might chew up extra CPU cycles on hardware you’ve already paid for. In the cloud, that same inefficiency translates directly into a higher monthly bill. A monolithic application with tangled dependencies becomes impossible to scale or update, completely negating the agility you were promised.
Addressing technical debt isn’t a post-migration task. It’s a non-negotiable part of the risk assessment itself.
The Week-Zero Dependency Crawl (Tools and Outputs)
Before you sign a single cloud contract, you have to build a high-fidelity dependency map. The quality of this week-zero discovery dictates the success or failure of the entire migration. This isn’t about generating reports; it’s about digging up the raw data you need for a defensible, evidence-based cloud migration risk assessment.
This is where you stop guessing and start verifying. You need to expose every hard-coded IP address, forgotten cron job, and chatty database connection that will otherwise break spectacularly at 3 a.m. during your cutover.

A map like this is your goal—a clear picture of how every component talks to every other component, showing exactly where the data flows.
Automated discovery: Cloudscape, Kartograph, or a $200 Python script that beats both
You’ve got options, each with trade-offs in cost, accuracy, and engineering skill. Most teams reach for automated discovery tools first, which can be a good starting point but rarely tell the whole story.
| Method | Typical Cost | Key Advantage | Primary Limitation |
|---|---|---|---|
| Enterprise Tools (Cloudscape, etc.) | ”Free” (baked into cloud spend) | Good for a quick VM inventory and TCO modeling. | Produces noisy data that needs significant manual cleanup. |
| Specialized Platforms (Kartograph) | $50,000 to $150,000+ | Deep application-level analysis; much more accurate than native tools. | Expensive licensing fees and can still require significant configuration. |
| Custom Scripting (Python) | ~$200 in engineering time | Delivers a precise, context-aware map with exactly the data you need. | Requires skilled engineers who know what to look for and where. |
Commercial tools are great for cataloging what you have, but a smart engineer with a good script can often build a more useful map by querying CMDBs, parsing netstat logs, and digging through config files.
A word of warning: don’t mistake a tool’s flashy dashboard for a real assessment. Automated discovery is just step one. The real work is in translating that raw data into the two non-negotiable metrics that will guide every decision.
Coupling score per bounded context (0–1 scale)
This metric tells you how tangled an application is with other systems. A score of 0 is a completely decoupled service. A 1 represents a monolithic nightmare where everything depends on everything else.
To get this number, you count every unique inbound and outbound dependency—API calls, database connections, message queue topics, shared file systems.
- An application with five or fewer well-defined dependencies might score a 0.2, a perfect candidate for an early migration wave.
- An application with 50+ dependencies, including undocumented database links, could easily score a 0.9. This is a red flag telling you to refactor or retire it, not lift-and-shift.
Data gravity calculation in TB×ms (the only number that matters)
This is the single most important number in a migration risk assessment. It measures the invisible force holding an application and its data together. The calculation is simple but ruthless: multiply the volume of data transferred (in terabytes) by the network latency incurred (in milliseconds).
For instance, an application that reads 2 TB of data from a database with 30ms of latency has a data gravity score of 60,000 TB×ms. If you move that application to the cloud and latency to its on-prem database jumps to 80ms, the performance penalty will be catastrophic. This calculation brutally exposes which components must move together. Getting an honest read on these factors is exactly what a good cloud readiness assessment for your systems is all about.
These two metrics—coupling score and data gravity—form the bedrock of your entire migration plan.
The Six Torpedoes, Ranked by How Often They Sink Ships
Your week-zero dependency crawl is the sonar system you’ll use to detect the six torpedoes that sink most cloud migrations. These are the predictable, high-impact dependencies lurking just below the surface. A proper cloud migration risk assessment is designed specifically to find these before they find you.
Ignoring them is the single biggest reason why projects go sideways.

#1 Hidden database fan-out and read replicas across VPCs
This is the classic technical torpedo. You think you’re migrating a single application with one tidy database. Your discovery map, however, tells a different story: that “single” database is the secret backbone for ten undocumented apps and five read replicas scattered across network segments.
Move the primary database without its entourage, and latency spikes as dependent services now crawl across the new cloud network boundary, grinding performance to a halt. The fan-out creates a data gravity so immense you can’t move one piece without ripping everything else apart.
How to spot it: Look for a suspiciously high number of distinct IP addresses hitting your database ports. Your data gravity calculation (TB × ms) will be off the charts for this one component.
#2 Active Directory / LDAP trusts that don’t exist in cloud IdP
Legacy identity management is a minefield. Many on-prem apps, especially older .NET and Java systems, were built assuming they could lean on complex, multi-domain Active Directory (AD) trusts for authentication.
These brittle trust relationships often have no clean equivalent in cloud-native Identity Providers (IdPs) like Azure AD (now Entra ID) or Okta. The migration team naively says, “we’ll just use SAML,” only to find the app doesn’t speak it. Even worse, you discover the app depends on Kerberos delegation—a feature notoriously painful to replicate in a hybrid cloud setup. This single dependency can halt the migration of an entire application portfolio.
#3 License-bound Windows/SQL servers with no viable SaaS path
This torpedo isn’t technical; it’s financial toxicity. You might have a perpetual license for Windows Server or SQL Server that’s perfectly happy in your data center. But that license might not be portable to a public cloud without triggering a massive new bill.
Cloud providers have their own licensing rules, and bringing your own license (BYOL) isn’t always an option. Suddenly, your migration’s Total Cost of Ownership (TCO) triples because you’re forced to pay for new, consumption-based licenses. We’ve seen projects where the new SQL Server license cost more than the entire infrastructure bill.
An effective risk assessment doesn’t just evaluate technical feasibility; it models financial toxicity. If the license costs are more than 3x the infrastructure costs, rehosting is almost certainly the wrong move.
#4 Mainframe batch schedules that assume 4 a.m. EST downtime windows
Mainframe apps operate on a rigid schedule of batch jobs optimized over decades. These jobs often assume they have exclusive, bare-metal access to system resources during a specific window, like 4 a.m. EST.
When you move the surrounding applications to the cloud, you shatter this assumption. The new, distributed architecture introduces network latency and timing jitter that cause batch windows to be missed, leading to data corruption and business process failures. You can’t just lift-and-shift a component that relies on a monolithic processing schedule. For a deeper look, check out these best practices for data migration that tackle these kinds of hairy dependencies.
#5 Compliance carve-outs (PCI, FedRAMP, DORA) that quietly ignored
Your company might be fully compliant with PCI, FedRAMP, or DORA on-premises, but that compliance certificate doesn’t automatically transfer to the cloud. These frameworks have specific requirements for data residency, encryption, and network segmentation that are implemented completely differently in AWS, Azure, or GCP.
Misconfiguration is the single most critical threat, causing 68-70% of all cloud security incidents. This usually happens because teams fail to map old compliance boundaries to new cloud-native controls before they start migrating, leading to accidental data exposure.
#6 Change-averse business owners who weren’t in the room when the plan was sold
The final torpedo is 100% political, and it’s the most dangerous of all. The migration plan got the green light from the CIO and the board. But the person who actually owns the application—the one whose bonus depends on its stability—was never truly bought in.
At the first hiccup during user acceptance testing, this stakeholder will pull the emergency brake. They’ll use any disruption as “proof” that the migration is too risky and demand a full rollback. If they weren’t in the room and sold on the “why” from day one, they will become your single biggest obstacle. Full stop.
The Non-Negotiable Pre-Flight Checklist (87 questions, printable)
A slick project plan is just theory. A successful migration is built on something far more tangible: verifiable, brutally honest readiness. This is the final exam before you push the button. Answering ‘no’ to any of these is a full-stop signal to halt the launch.
Can you roll back the entire wave in <4 hours?
The very first gate is your escape plan. If you can’t retreat cleanly, you have no business advancing.
- A four-hour rollback window is the industry standard. This can’t be a theoretical “yes”—you need to have rehearsed it, timed it, and proven it.
- A 300-step Word document is not a rollback plan; it’s a recipe for human error at 2 a.m. Your rollback should be as automated as your deployment.
- You must prove you can reverse the data flow without corrupting the on-premise source of truth. Most rollbacks fail here.
A migration without a rehearsed, timed, and automated rollback capability is just an outage with a project plan.
Is every external dependency dual-homed (DNS, certs, API keys)?
Your application doesn’t live in a vacuum. The second it comes online in the cloud, it needs to talk to the outside world. Tiny oversights here cause total application failure.
| Category | Go/No-Go Question | Why It Sinks Migrations |
|---|---|---|
| DNS & Certificates | Is every external dependency (APIs, load balancers) dual-homed and tested? | A single forgotten DNS entry or an SSL certificate that’s off by one day can make your entire application unreachable. |
| Secrets Management | Are all API keys, service accounts, and database credentials centrally managed and tested? | Hard-coded credentials in config files are the classic “it worked in staging” landmine. They break the instant they hit production. |
| Configuration Drift | Do you have a reconciled “golden source of truth” for configuration? | Without a Git repo or similar system, your new cloud environment will become an untrusted black box within weeks. |
| Monitoring & Alerting | Is every critical health check and alert configured and tested before cutover? | Flying blind is not a strategy. You must have confirmed alerts for CPU, memory, and error rates before a single real user hits the system. |
Do you have a reconciled golden source of truth for config drift?
This checklist forces a level of discipline that feels painful during planning but is liberating during execution. It systematically stamps out the most common sources of Day 1 failure. This isn’t just one part of a good cloud migration risk assessment; it’s the final exam that proves your assessment worked.
When to abort, repatriate, or rewrite instead
Not every application belongs in the cloud. A successful cloud migration risk assessment isn’t just about finding problems to fix; it’s about knowing which fights you can’t win. Sometimes, the smartest move is to pull the plug, bring a workload back on-prem, or scrap the whole thing for a rewrite. The goal is to make these tough calls early, based on facts, not hope.
This decision tree shows the key go/no-go gates in the process, zeroing in on critical checks for rollback plans, configuration readiness, and dependency mapping.

A “no” at any of these checkpoints isn’t a small hiccup. It’s a full-stop signal that demands a serious re-evaluation before you spend another dollar.
Coupling entropy >0.75 and no domain experts left → don’t migrate, retire
Your dependency map should generate a coupling score for each application. Once that score climbs above 0.75, you’re looking at a highly entangled system. But the real kill switch is when that high score is paired with a total lack of original domain experts. If the engineers who built this beast are long gone, your team is flying blind. They will never untangle the dependencies without breaking critical, undocumented business logic.
The Verdict: Retire the application. The risk of a catastrophic failure is too high. Decommission it and replace its functionality.
License costs >3× infrastructure → SaaS repurchase beats rehosting
This one is pure math. A simple lift-and-shift can trigger staggering new licensing costs. You have to model these with brutal accuracy. If the projected annual licensing fees are dramatically higher than the cost of the underlying cloud servers, the migration is dead on arrival financially.
The Verdict: Repurchase as SaaS. Stop the rehosting plan. The Total Cost of Ownership (TCO) is completely upside down. A modern SaaS alternative will almost always deliver better value.
Business tolerates zero downtime but app has single-threaded file locks → rebuild
This is where a non-negotiable business requirement crashes into an immovable technical wall. The business demands zero downtime during the cutover. But your technical assessment uncovers that the application has a core process that depends on single-threaded file locks or an in-memory state that can’t be replicated. This makes a seamless migration impossible.
The Verdict: Rewrite. The current architecture cannot meet the business’s resilience requirements in a cloud model. A full rewrite is the only path forward. For a deeper look at what that entails, you can explore what goes into a solid cloud architecture in our detailed guide.
Closing
Great migrations don’t start with blueprints. They start with a complete map of everything that can bite you—and the moment you touch it. Draw that map first, or don’t bother packing.
At Modernization Intel, we deliver the unvarnished data you need to make these kinds of defensible decisions. Our platform provides real failure rates, hard cost benchmarks, and unbiased intelligence on over 200 implementation partners, ensuring your cloud migration is built on a foundation of facts, not just vendor promises. Get Your Vendor Shortlist.
Need help with your modernization project?
Get matched with vetted specialists who can help you modernize your APIs, migrate to Kubernetes, or transform legacy systems.
Browse Services