Case study · Regulatory & standards intelligence

Cloning a Live Azure Environment into a New Tenant in Under a Week

Citation needed an exact copy of its Azure environment in a brand-new tenant, which Microsoft has no tool for. We rebuilt the foundation as ARM templates, moved every server by disk snapshot, and had the application running in under a week.

Citation Compliance
Under 1 weekto finish the migration
2 tenantsone identical environment
Nonenative Microsoft tooling
9 serverscopied disk for disk

The client

Citation Compliance has worked in regulatory intelligence since 1999. It started by putting complex environmental, health and safety regulations online, and has since grown into standards content and source-grounded AI. Its products include Insight for compliance operations, RegView for regulatory research, RegStream for delivering regulatory content through APIs, and SDO Assistant for standards organizations, all sharing its NavLexa AI layer.

The challenge

Citation ran its application in Microsoft Azure and wanted an exact clone of that environment in a new, separate Azure tenant: the same servers, the same configuration and the same domain, running the same application.

Microsoft doesn’t support that. Azure can move resources between resource groups, subscriptions and regions inside a tenant, and a subscription can be handed to a different directory, but that moves it rather than copying it. There is no wizard or migration service that makes a working copy of an environment in another tenant, so there was no native tooling to lean on.

The environment itself raised the stakes:

  • Nine servers in total, with the application running on Windows Server 2019.
  • Every server joined to Active Directory Domain Services, running on Azure virtual machines, not Microsoft Entra ID (Azure AD). Identity lived inside the VMs, not in the tenant.
  • Servers that depend on each other. They rely on the domain controller for DNS and sign-in, so a copy that merely boots isn’t a copy that works.

Diagram: the original Azure tenant holds a virtual network, an Active Directory domain controller VM, and Windows Server 2019 application servers that use it for DNS and sign-in. ARM templates carry the network and supporting resources, and managed-disk snapshots carry every server, to an identical layout in the new Azure tenant. The goal: the same environment, Active Directory included, standing in a second tenant.

Our approach

We split the work into four stages, so that each one could be checked before the next began.

Diagram of four stages: 1, Discover: inventory every resource, then map dependencies such as DNS, sign-in, addressing and start order. 2, Rebuild as code: generate ARM templates and deploy the foundation in the new tenant. 3, Move the servers: snapshot each managed disk, copy the snapshots to the new tenant, and create VMs from the copies. 4, Prove it: the application running in the new tenant. Discover, rebuild as code, move the servers, prove it.

1. Inventory everything

We catalogued every asset in the original tenant: virtual machines and their disks, virtual networks and subnets, network security groups, and the supporting resources around them. A tenant-to-tenant copy has no “undo”, so anything missed at this stage would only turn up later as something broken.

Blurred photo of a whiteboard sketch: a source tenant box holding a domain controller and application servers, a dashed target tenant box, arrows labelled ARM templates and disk snapshots between them, and a numbered checklist from inventory to testing the application. Illustration, blurred to protect our client’s privacy: sketching the source and target tenants and the order of work.

2. Map the dependencies

Next we traced how the pieces depend on each other: which servers rely on the domain controller for DNS and authentication, which addresses and names are built into the configuration, and what has to be running before something else can start. That map set the build order for everything that followed.

Blurred network diagram of two tenants side by side, each with the same virtual network, an identity subnet with one server, an application subnet with eight servers, and a panel for network security groups, with arrows from the source to the target. Illustration, blurred to protect our client’s privacy: mapping the source network so the target could match it.

3. Rebuild the foundation as code

For most resources we generated Azure Resource Manager (ARM) templates, adapted them for the new tenant and subscription, and deployed them. With infrastructure as code the build is repeatable: if something isn’t right, we fix the template and deploy again instead of clicking back through the portal. The templates also leave a precise, written definition of the environment.

4. Move the servers by snapshot

A template can describe a server, but a server’s value is on its disks. So for each virtual machine we took snapshots of its managed disks, copied them to the new tenant, and created new VMs from the copies, attached to the network the templates had already built.

Diagram: in the original tenant, a server VM’s managed disk is snapshotted and shared through a time-limited read link (SAS); the disk data is copied across tenants into a new managed disk, which becomes a new VM on the rebuilt virtual network. Start-up order: first the domain controller, so DNS and sign-in come up; then the application servers, which find the domain unchanged; then sign-in and the application are tested. One server’s path from the old tenant to the new one, and the order the servers came back up.

Because Active Directory lived on the domain controller’s own disk, the domain came across exactly as it was: the same users, computer accounts and group policies, with no servers to rejoin and no passwords to reset. The start-up order mattered too. Domain-joined servers expect to find their domain controller as soon as they boot, so the domain controller came up first and the application servers followed.

Blurred cloud console listing a resource group’s contents: virtual machines marked Running, followed by disks, snapshots, a virtual network and a network security group. Illustration, blurred to protect our client’s privacy: the copied servers, disks and snapshots in the new tenant.

The result

In less than a week, the work was complete and Citation’s application was running successfully in the new Azure tenant.

  • An exact clone, not a rebuild. All nine servers are the originals, copied disk for disk.
  • Active Directory intact. No new domain, no re-joining and no account clean-up.
  • The foundation is defined in ARM templates, ready to redeploy or review.

Planning a tenant-to-tenant move?

Moving or copying workloads between Azure tenants comes up with acquisitions, divestitures and fresh starts, and Microsoft’s own tools stop at the tenant boundary. If you’re facing one, we’ll look at your environment and tell you plainly what it will take.

Citation Compliance, Inc.’s name and logo are trademarks of Citation Compliance, Inc., shown with permission. Microsoft, Azure, Active Directory, Microsoft Entra and Windows Server are trademarks of the Microsoft group of companies.

Your next project starts here

Let’s build something that works.

A new building, a camera system for the back forty, or a network that needs a fresh start. Tell us what you’re working with — the first conversation is free.

Or email hello@emeraldsecurity.net