top of page
Search

You Can't Use Azure Migrate to Move Between Tenants (Even if you Try to Run it in Azure)

  • Writer: Shannon
    Shannon
  • Dec 4, 2025
  • 4 min read

Tis the season! Customers always ask the most interesting questions about cloud capabilities. This one isn't documented well and you have to sort of piece it together by "reading the tea leaves" (my least favorite).


A customer asked me a question that sounded simple enough:

“Can we stand up Azure Migrate in our brownfield tenant, run dependency mapping there, and then use Azure Migrate to migrate workloads into our new greenfield tenant?”

If you’ve ever led a large-scale migration, that probably sounds logical. Dependency mapping is essential. You want to know which workloads talk to each other before you start moving anything. Azure Migrate has “dependency mapping” built into its product, so it feels like the right choice.


Except it’s not.


Azure Migrate can’t perform dependency mapping inside Azure. It’s built for external discovery, not in-cloud visibility. Once your workloads already live in Azure, you need a different approach.


Why Azure Migrate Won’t Work Inside Azure

Azure Migrate is designed for moving workloads into Azure, not for inspecting what’s already there. The tool relies on a small appliance you deploy in the source environment. That appliance gathers performance data, network flow information, and metadata, then reports back to the Azure Migrate project for analysis.


Even if you install that appliance on an Azure virtual machine, it still treats that VM as if it were an external server. It doesn’t connect through the Azure control plane, it doesn’t query Azure Resource Graph, and it doesn’t have access to platform telemetry.

In short, Azure Migrate lives in Azure but doesn’t operate like other Azure-native services. It’s hosted there, but it doesn’t see what Azure itself can see.


So when a team tries to use it for dependency mapping inside a brownfield tenant, it won’t return anything meaningful. The appliance can’t inventory or map connections between Azure resources that already exist in the platform.


The Right Way to Map Dependencies in Azure

If your workloads are already in Azure and you need dependency visibility, you have two native options that work well: Azure Monitor Agents and Azure Resource Graph.


Azure Monitor and the Dependency Agent

Azure Monitor, combined with the Azure Monitor Agent (AMA) and the Dependency Agent, provides the same kind of visibility that many people assume Azure Migrate will give them. When you enable VM Insights, Azure Monitor can collect process and connection data directly from each virtual machine.


The Dependency Agent records inbound and outbound connections, shows which ports are used, and identifies interdependencies between systems. This information is then visualized through Service Map in the Azure portal or surfaced through Log Analytics queries.


Unlike Azure Migrate, this approach runs natively inside Azure. It’s fully tenant-aware, secured through Azure RBAC, and integrated with other monitoring and governance features.



Azure Resource Graph

For higher-level relationships, Azure Resource Graph is your friend. It lets you query your entire Azure environment to see how resources connect and depend on each other. You can ask questions like which subnets your VMs are using, which public IPs are attached, or which resources share a virtual network.


These queries can be run directly in Resource Graph Explorer, through Azure CLI or PowerShell, or integrated into custom dashboards. I love these queries...they're fast, accurate, and fully cloud-native.



The Tenant Boundary Problem

The second issue my customer faced was moving workloads to a new tenant. Microsoft Entra ID (formerly Azure AD) creates a hard separation between tenants. Each has its own identity boundary, its own role assignments, and its own service principals.

Microsoft’s documentation states:

“The move operation doesn’t support moving resources to new Microsoft Entra tenant. If the tenant IDs for the source and destination subscriptions aren’t the same…”— Move Azure resources to a new resource group or subscription

That means you can’t “move” Azure resources directly between tenants. Azure Migrate can’t cross that line either, because its authentication model is tenant-scoped.

If you’re trying to migrate to a greenfield tenant, you have two real choices:


  1. Transfer the subscription to the new tenant, which moves everything under a single directory.

  2. Rebuild the environment in the new tenant using ARM, Bicep, or Terraform templates and then migrate data separately with tools like AzCopy, Data Factory, or Database Migration Service.



Why This Matters

Azure Migrate is often misunderstood because it looks like an Azure-native service in the portal. It’s easy to assume it works like Log Analytics, Policy, or Monitor. The difference is that those services live inside the Azure control plane, while Azure Migrate orchestrates migration activities from the outside.


If your workloads are already running in Azure, rely on Azure-native observability and governance tools instead. They understand the platform’s structure, respect tenant boundaries, and give you richer, real-time insight.


Wrapping Up

If you’re planning a move from a brownfield tenant to a greenfield one, don’t reach for Azure Migrate to map your dependencies. It won’t see what’s inside Azure. Use Azure Monitor Agents and Service Map for connection-level visibility, and Azure Resource Graph for relationship-level insight. Those tools were built for exactly this scenario and work natively across your Azure subscriptions.


Azure Migrate still has its place for moving workloads into Azure. Once you’re already there, the platform gives you MUCH better ways to understand how everything connects.


Sources

2 Comments


nortonja_2000
Dec 17, 2025

Full subscriptions Levels It will move RG and Most resources or have to be recreated Managed ID's and Key Vaults Objects But can back these up and recreate and restore. Have you looked at the Adopt a multi-directory architecture and leave the subscription in the source directory. Use Azure Lighthouse to delegate resources so that users in the target directory can access the subscription in the source directory. For more information, see Azure Lighthouse in enterprise scenarios. Not sure it work if you have to depend on the Tenants still but is a option I did see in the Article Also did you try the Physical (Agent on VMs type of Appliance deployment My (have not had a needed o…

Edited
Like
Shannon
Shannon
Jan 18
Replying to

Right, just to clarify, I’m not talking about subscription moves here. This is specifically about understanding interdependencies before a migration, not how to move resources once you’ve decided to migrate.

The challenge I ran into was around dependency mapping inside Azure. Azure Migrate, even when installed on Azure VMs, does not give you a complete, Azure-native view of in-cloud dependencies because it treats the environment as external. That’s where expectations tend to diverge.

For pre-migration dependency visibility inside Azure, Azure Monitor Agents with Service Map and Azure Resource Graph are the tools that actually surface those relationships. Azure Migrate is still useful later for certain migration scenarios, but it’s not the right tool for in-Azure dependency discovery.

That distinction between…

Like

© 2020 Shannon B. Eldridge-Kuehn

  • LinkedIn
  • Twitter
bottom of page