An Azure personalized recommendation engine that helps users follow best practices to optimize Azure deployments.
Hi ,
Thanks for reaching out to Microsoft Q&A.
What Azure Migrate is Actually Doing:
Azure Migrate does not always assume the full 1000 TB is charged at the $2/GB/month rate. It often makes optimistic assumptions, such as:
A blended cost per GB/month based on real-world on-prem averages (usually far less than $2).
Deduplicated, compressed, or low-cost storage tiers (like file/NAS/archive).
- Only includes attached storage volumes, ignoring spare or non-utilized disks.
Takes into account hardware amortization and bulk storage depreciation, not just retail storage pricing.
So, if you got $2.4M/year, that suggests Azure Migrate is estimating:
$2.4M / 12 months = $200K/month
$200K/month ÷ 1000 TB = $0.20/GB/month
That is much closer to industry average onprem storage TCO, which ranges from $0.10 to $0.25/GB/month, depending on:
Equipment age
Tier (SAS, SATA, SSD)
Utilization
RAID/NAS/SAN overheads
So what are you missing here?
You are using list/retail pricing for storage. Azure Migrate uses blended real-world TCO estimates, not inflated pricing, for on-prem infra. This is intentional, to prevent biased comparisons.=
What You Can Do:
Edit the Business Case assumptions:
In Azure Migrate’s “Business Case” tab, go to "View/Edit Assumptions".
Override the on-prem storage cost per GB/month with your actual number.
Export the calculation sheet (or JSON/CSV) and validate all cost inputs, especially:
Storage cost
Compute sizing (many machines get rightsized)
Network and labor
If your internal storage cost is genuinely $2/GB/month, you should update the model accordingly. That will show a much higher on-prem TCO and may flip the Azure ROI back to positive.
Bottom Line:
Azure Migrate is not wrong, but it is making conservative real-world assumptions to avoid overestimating on-prem costs. You can and should customize the input values if your reality is different.
Please feel free to click the 'Upvote' (Thumbs-up) button and 'Accept as Answer'. This helps the community by allowing others with similar queries to easily find the solution.