Skip to main content

August 27, 2025

Prerequisites for Migrating a First-Gen Horizon Cloud Pod

This page describes the areas you should assess, prepare, and update as needed prior to starting your first pod migration.

Introduction

Most of these assessments and preparation steps can be done at any time prior to logging into your new Horizon Cloud environment and seeing the Migration UI.

Some of these assessments and preparation steps involve the Microsoft Azure subscription environment and network in which the first-gen pod is deployed. For those, you might need assistance from your IT team who handles that environment.

Remember: As of this writing, eligibility for migrating a first-gen pod is a progressive rollout to first-gen tenants. When eligible, you'll receive a direct communication from Horizon Migration Communications.

Terminology

The Horizon Cloud service has new concepts and terminology. In the Horizon Cloud service, the deployment is called a Horizon Edge (instead of the term pod).

The self-service migration is designed to deploy a Microsoft Azure Horizon Edge into the same Microsoft Azure subscription that is used for the migrating first-gen pod, and using the same subscription information, VNets, and subnets.

As each pod is migrated, the process reuses the following items by default from that pod:

  • Microsoft Azure subscription ID, directory ID, service principal application ID and secret key.

  • VNet

  • Management subnet, tenant subnet, DMZ subnet

  • Active Directory domain information and domain bind and domain join service accounts that are registered in the first-gen tenant (domain bind and domain join users, auxiliary domain bind and domain join users).

    When your first pod's migration is scheduled, the system copies all of the first-gen tenant's registered Active Directory domain information and service account information and registers the same in the Horizon Cloud environment.

Some items from the first-gen pod are not reused. For a few of those, you must set up new, additional resources.

Therefore, you must assess the following areas and prepare as necessary to accommodate the Horizon Cloud requirements.

Note: For pods having some special characteristics, the migration process might require use of a new VNet and management subnet different from the first-gen pod. This special case is described in this page's section.

Table of Prerequisites

The sections following this table provide the details of each of these prerequisites. This table is included as a convenient outline.

Obtain new FQDN and certificate for Horizon Cloud Unified Access Gateway.
Assess first-gen pod and agent versions and update as needed.
Ensure all images that need to be migrated are valid.
Determine whether the pod's VNet or connected networks contain AKS-restricted IP addresses.
Decide on your deployment type and fulfill its requirements.
In first-gen, if the name of your Microsoft Azure subscription includes Non-English characters, rename the subscription to use English characters only before migrating to Horizon Cloud.
Determine if the pod's Microsoft Azure subscription has policies around resource group tags. If yes, make a plan for how to handle the migration requirement.
Networking - assess existing settings for your network traffic and update as needed.
Verify the pod's associated application secret key is still valid.
VNet - assess the current routing you're using for internal access to desktops.
Assess Microsoft Azure vCPU family quotas and increase as needed.
Assess the Azure Policies on the pod's subscription and resource group and ensure the policies allow provisioning of the Horizon Edge Gateway's storage accounts and fileshares.
When the pod has App Volumes applications, adhere to the guidance in ensure the policies allow toggling of network access on the storage accounts.
When you have a public IP for the Unified Access Gateway load balancer, follow the guidance in when a public IP for this load balancer.
When you have a private IP for the Unified Access Gateway load balancer, follow the guidance in when a private IP for this load balancer.
Assess ability to log in to your new Horizon Cloud environment and see the Horizon Universal Console.
Decide on your identity provider and sync AD users and groups to it.
Assess your use of Active Directory built-in users or built-in groups and update as needed.
Assess your use of App Volumes application assignments.
Special case - if your first-gen pod's app registration is using a custom role, update the permissions required for a Horizon Cloud deployment by following the guidance in If Your First-Gen Pod's App Registration Is Using a Custom Role.

Obtain New FQDN and Certificate for Horizon Cloud Unified Access Gateway

Note: The FQDN for the Horizon Cloud Unified Access Gateway deployment must be different than the FQDN already in use for the to-be-migrated first-gen deployment. To support rollback to the first-gen deployment in the rare case of post-migration issues, the first-gen deployment's gateway's FQDN and its SSL certificate must remain as configured for the first gen deployment. Only after you finalize the migration can you update the Horizon Cloud gateway deployment's FQDN and SSL certificate if you want to at that time.

The scheduling wizard UI requires you to specify this FQDN in the wizard and provide the SSL certificate based on that FQDN.

For the Horizon Cloud environment, the SSL certificate can be in either PEM or PFX format.

The common name or FQDN set in the certificate must match the FQDN that you plan to enter in the scheduling wizard. The wizard validates that the data in the certificate matches the FQDN entered into the wizard.

Note: If your first-gen pod has both an external Unified Access Gateway configuration and internal Unified Access Gateway configuration, the post-migration Edge's Unified Access Gateway will have its access type set to Internal and external access with both the external FQDN and internal FQDN set to the same FQDN by default (the FQDN that you enter into the scheduling wizard). If post-migration you want to use a different FQDN for internal access, then at that time edit the Edge's Unified Access Gateway details to change its internal FQDN to the one you want used and configure the network ranges for internal users appropriately. Please note that the uploaded certificate must include both the external FQDN and the internal FQDN in the certificate's information (such as having the internal FQDN in the Subject Alternative Name data).

Assess First-Gen Pod and Agent Versions and Update as Needed

Before a pod can be migrated, the pod and agent versions must meet these criteria:

  • Horizon Cloud Azure pods must run pod manifest 5041.0 or later. If running an earlier manifest, initiate a service request to upgrade the pod.
  • The dedicated VDI desktops of the pod must run Horizon Agents Installer version 24.2.0 or later.

Ensure All Images to be Migrated are Valid

To avoid issues during the migration's pre-build phase, ensure that all of the first-gen images that need to be migrated are in a Published state and their VMs and snapshots are intact in Microsoft Azure.

Determine Whether the Pod's VNet or Connected Networks Contain AKS-Restricted IP Addresses

Important: The outcome of your determination will provide guidance about which type of Horizon Edge Gateway deployment you choose to use for the migration. The types are described in the next section titled Decide on Your Edge Gateway Deployment Type.

Determine whether the first-gen pod's management subnet or VNet or networks that the VNet is connected to (such as your on-premises network connected through ExpressRoute), contain IP addresses from the AKS-restricted ranges listed here:

  • 169.254.0.0/16
  • 172.30.0.0./16
  • 172.31.0.0/16
  • 192.0.2.0/24

If yes, then to migrate that pod requires that you next assess whether your needs can be fulfilled by the Single VM deployment type or whether you have requirements that only the AKS deployment type can fulfill.

  • Either you use the Single VM deployment type to migrate that pod, or

  • If your requirements dictate that you use the AKS deployment type, you must set up a new VNet and management subnet of a minimum CIDR /26 in that VNet within the pod's subscription and peer that new VNet with the pod's existing VNet. The minimum /26 CIDR is a strong recommendation for the AKS deployment type.

    Ensure that nothing in the new VNet contains or uses IP addresses from the restricted ranges. With the new VNet and management subnet, then you can use the AKS deployment type that provides for HA.

See the next section about deciding on your Edge Gateway deployment type for detailed guidance.

The reason why those specific ranges are AKS-restricted ranges is because Microsoft imposes this rule regarding its Azure Kubernetes Service (AKS) clusters that are used for the AKS type of Horizon Edge Gateway deployment.

If these restricted IPs are contained in the pod's management subnet or VNet, or contained in the on-premises network connected to the VNet, the migration process using the AKS type cannot re-use the pod's existing VNet.

Decide on Your Deployment Type and Fulfill Its Requirements

In the migration of a first-gen pod to the Horizon Cloud environment, the system deploys what is called a Horizon Edge Gateway into the pod's Microsoft Azure subscription.

The deployment comes in two types - either the Single Virtual Machine (Single VM) type or the Azure Kubernetes Service (AKS) type.

The system allows you to specify the type to use for each pod's migration.

Therefore, you must decide which type to use, based on the qualities you need, according to the following table.

Edge Gateway DeploymentKey QualitiesDetails
Single VM
  • Supports up to 5K (5000) sessions.
  • Less pre-requisites involved in the Microsoft Azure subscription than for the AKS type
  • Accommodates migrations of pods that cannot easily meet the AKS requirements.
  • If at some future time the deployed is unavailable, the resulting behavior is:
    • End users will have to log in without single sign-on (SSO).
    • Monitoring data for the desktops will not recorded during the period the VM is unavailable.
The Single VM type provides for more simplicity when migrating a first-gen pod over the AKS type. The reason why this choice can provide for more simplicity is because the Single VM type involves less new requirements in the pod's Azure subscription than the AKS type requires. As a result, it accommodates first-gen pod deployments that cannot easily meet the requirements of the AKS type. In addition to the simplicity, the Single VM type differs from the AKS type in its behavior if the deployed VM becomes unavailable. When unavailable:
  • The end users will see the login flow without the SSO login experience. For example, before seeing their desktop, they'll have to sign in using their Active Directory credentials.
  • The desktops' monitoring data that is sent to the Edge Gateway VM is not recorded during the period the VM is unavailable.
AKS
  • Supports more than 5K (5000) sessions.
  • Azure Kubernetes Service has Microsoft-related requirements that must be met
  • Accommodates pod migrations that can meet the AKS requirements.
  • SSO login experience and monitoring data collection are handled through replicated services that enable a highly available delivery of these functions
AKS is a Microsoft Azure standard for enterprise cloud-native apps in Microsoft Azure data centers. The AKS type provides an Edge Gateway of a clustered architecture, which provides for replicated services supporting the SSO login experience and monitoring data collection.
  • Two questions for the following decision table:
    1. Do you have requirements for >5K sessions or to have the SSO login experience and collection of monitoring data supported through services with full failover capability in the case of failure?
    2. Do you have any of the AKS-restricted IP ranges contained in the pod's management subnet, the pod's VNet, or in use by machines known to that VNet connected to your on-premises network?
Your answersApproach to usePrerequisites to fulfill
  1. Yes
  2. No
Yes to the first question requires AKS type. When you need >5K sessions and need to meet requirements on the SSO login experience and monitoring data collection, the AKS type is required to provide those.AKS type prerequisites
  1. Yes
  2. Yes
Yes to the first question requires AKS type. In this case, you need the AKS type to provide >5K sessions and meet requirements on the SSO login experience and monitoring data collection, but the pod's VNet is contrary to the AKS type's IP address restrictions. To support the AKS type's requirements, you must:
  1. Set up another VNet and management subnet in that VNet in the pod's subscription, which don't contain the restricted IP addresses.
  2. Ensure the new VNet and management subnet meet the AKS Edge Gateway's requirements.
  3. Peer that new VNet with the pod's existing VNet
Then when running the migration wizard, you'll select that new VNet and management subnet and the Azure Kubernetes Service option.
AKS-type prerequisites
  1. No
  2. No
No to the first question means the Single VM type meets your needs. At the same time, because the pod's VNet satisfies the AKS-type's IP restrictions, you can alternatively decide to go with the AKS type for the migration.The Single VM type hasn't any specific requirements beyond the ones detailed in the page 'Prerequisites for Migrating a First-Gen Horizon Cloud Pod' and all of its subsections.
  1. No
  2. Yes
No to the first question means the Single VM type meets your needs. Your choice of either:
  • Simplest option is to go with the Single VM type.
  • More complex option is to work around the AKS-restricted IPs by:
    1. Setting up another VNet and management subnet in that VNet in the pod's subscription which don't contain the restricted IP addresses.
    2. Ensuring the new VNet and management subnet meet the AKS Edge Gateway's requirements.
    3. Peering that new VNet with the pod's existing VNet
    By fulfilling the above items, then you can alternatively go with the AKS type, if you want to.
The Single VM type hasn't any specific requirements beyond the ones detailed in the page 'Prerequisites for Migrating a First-Gen Horizon Cloud Pod' and all of its subsections.

Determine If the Pod's Microsoft Azure Subscription Has Policies Around Resource Group Tags

As of this writing, the deployment process for the Horizon Edge requires that the Microsoft Azure subscription allows creation of resource groups that do not have tags on them.

Immediately after you schedule the migration maintenance window's day and time, the system creates resource groups for the Horizon Edge Gateway and Unified Access Gateway instances.

Therefore, if the pod's subscription has Microsoft Azure Policies that block creation of untagged resource groups, or if the subscription has any type of resource tag requirement, the migration process will fail shortly after that scheduling step.

If the subscription has such policy, you can manage this requirement by making a plan to have that Azure Policy turned off just prior to the time that you complete the migration scheduling wizard and leave the policy off until the Horizon Edge Gateway and Unified Access Gateway instances are deployed in the subscription. When you see that the Horizon Edge Gateway and Unified Access Gateway instances are successfully deployed, then the Azure Policy for requiring tags when creating resource groups can be re-enabled without affecting migration activities.

Networking - Assess Existing Settings for Your Network Traffic and Update as Needed

Assess whether your current firewall settings allow connectivity to the endpoints and ports and protocols required by the Horizon Edge.

The end point URLs and ports required by the Horizon Cloud service are likely different from the ones your network team has already allowed for the first-gen pod.

For the list of required end points, ports, and protocols, see the following pages in the guide Using Horizon Cloud and determine the changes to make in the first-gen pod's environment.

For situations where using URLs is not possible, see KB 6000374 - IP Addresses for Service Components.

When a first-gen pod is configured with a proxy, migrated pools inherit the proxy configuration. During migration, dedicated desktop pools must connect directly to specific URLs through the internet, bypassing the proxy. If a firewall is in place for outbound connectivity from the desktop VDI subnet, these URLs must be permitted during the migration process. After the migration is finished, you can remove these URLs from the allow list.

URLs to Allow for Dedicated VMs During Migration
US:
cloud-sg-us-r-westus2.horizon.omnissa.com
cloud-sg-us-r-eastus2.horizon.omnissa.com

EU:
cloud-sg-eu-r-northeurope.horizon.omnissa.com
cloud-sg-eu-r-germanywestcentral.horizon.omnissa.com
cloud-sg-eu-r-uksouth.horizon.omnissa.com

JP:
cloud-sg-jp-r-japaneast.horizon.omnissa.com
cloud-sg-jp-r-australiaeast.horizon.omnissa.com
cloud-sg-jp-r-centralindia.horizon.omnissa.com

Verify the Pod's Associated Application Secret Key Is Still Valid

Log in to the Azure Portal for your pod deployment and check that the application key used by the pod hasn't expired.

The Azure Portal uses the term client secret key, in the App Registration area. Look for the app registration associated with the pod.

VNet - Assess Routing for Internal Access to Desktops

Depending on the routing you have in place for the first-gen pod and internal access to desktops, you might need to adjust that routing to continue to work for internal access to desktops in the Horizon Edge.

Assess Microsoft Azure vCPU Family Quotas and Increase as Needed

Depending on the current vCPU family quotas in your first-gen pod's Microsoft Azure subscription, you might need to increase the quota for specific vCPU families to support the migration process.

The migration process deploys a Horizon Edge that consists of a minimum of one Horizon Edge Gateway and two Unified Access Gateway instances.

A Horizon Edge deployed in Microsoft Azure has a Horizon Edge Gateway of either Single VM deployment type or AKS deployment type.

You decide which type to use for the pod migration, as described in Decide on Your Edge Gateway Deployment Type.

PurposeAdditional vCPU/Quota Needs
Unified Access Gateway instancesAdditional quota to accommodate two (2) Standard_F8s_v2
Horizon Edge Gateway - Single VM deployment type, if you opt for this typeAdditional quota to accommodate 1 VM of the following VM SKU sizes:
  • Standard_D4s_v3 - 4 vCPU
  • Standard_D4s_v4 - 4 vCPU
  • Standard_D4s_v5 - 4 vCPU
Horizon Edge Gateway - AKS deployment type, if you opt for this type Additional quota to accommodate 5 of the following VM SKU sizes:
  • Standard_D2s_v3 - 2 vCPU
  • Standard_D2ds_v5 - 2 vCPU
  • Standard_D2a_v4 - 2 vCPU
If the pod's subscription has capacity to accommodate five (5) of least one of the above listed VM SKU sizes, the migration requirement of the 4-node Edge Gateway (AKS) is fulfilled and the one-node requirement for future upgrades of the AKS is also fulfilled. The background of these VM SKU requirements is that an Edge Gateway (AKS) deployment makes use of an Azure Kubernetes Service (AKS) cluster, which requires four VM nodes of one of the following listed VM sizes for capacity. Then one (1) additional node is required and used during the upgrade process. That makes a total of 5 needed of those VM SKUs.
Images Each image is duplicated and migrated to Horizon Cloud.

As a result, you must have twice the amount of vCPUs per image in the family.

For example, to migrate an image with Standard_DS2_v2 with 2 vCPU cores, two additional vCPU cores are required during migration, Hence, the Azure subscription must have at least 4 vCPU cores of the Standard DSv2 family on the corresponding region.

However, since the images are migrated in batches of 20, this excess quota need not exceed 20 times the number of vCPU cores per image. In other words, you need your existing quota plus an excess quota of 20 times the image vCPU, not just a quota of 20 times the image vCPU.

Ensure Your Azure Policies Allow Provisioning of Storage Accounts and Fileshares

Before scheduling the migration, verify with the pod's Azure subscription owner that the Microsoft Azure policies at the subscription level or on the pod's resource group do not block, deny, or restrict provisioning of storage accounts and fileshares in the first-gen pod's resource group.

If you are migrating a pod to an existing Horizon Edge, ensure that the Microsoft Azure policies on the existing Horizon Edge's subscription and resource group do not block, deny, or restrict provisioning of storage accounts and fileshares.

Successful Horizon Edge Gateway deployment requires provisioning of the App Volumes storage account and fileshares.

When the First-Gen Pod Has App Volumes Applications, Ensure Your Azure Policies Allow Toggling of Network Access on the Storage Accounts

If the first-gen pod has App Volumes applications, verify with the pod's Azure subscription owner that the Microsoft Azure policies at the subscription level or on the pod's resource group don't block, deny, or restrict the ability to toggle on public network access.

The system's migration of App Volumes applications involves copying those resources from the pod's Azure storage account to the Horizon Edge Gateway's storage account.

To facilitate this copying, the migration process needs access to both storage accounts. During migration, the system temporarily turns on public network access on the storage accounts and then turns it off after the copying has completed.

If an Azure policy prevents the migration process from turning on public network access on the storage accounts before it begins copying the App Volumes applications, the migration will fail. The system needs the ability to toggle on and off the network access during the migration's build-out phase and during the maintenance window.

When You Have a Public IP for the Unified Access Gateway Load Balancer

When your first-gen pod is using a public IP for its external Unified Access Gateway configuration's load balancer, the system will stand up the Horizon Edge to use a public IP for the Horizon Edge's Unified Access Gateway configuration.

The pod's subscription will need an additional public IP in this case. Therefore, before scheduling the migration, ensure that the subscription has capacity to provide for this additional public IP.

When You Have a Private IP for the Unified Access Gateway Load Balancer

When your first-gen external Unified Access Gateway deployment's load balancer is using a private IP, obtain the public IP address you want routed to the Horizon Cloud deployment's load balancer.

If your to-be migrated first-gen external gateway configuration is using a private IP for its load balancer, with a public IP routed to that private IP, the system detects this configuration when you start to schedule the migration.

This scenario was used in first-gen deployments when you have a firewall or NAT configured in front of the external gateway configuration's Azure load balancer for the purpose of controlling Internet-based traffic prior to allowing access to the external gateway configuration's Unified Access Gateway appliances.

The system detects the first-gen configuration during the scanning process, when it determines the Ready to migrate state.

When the system detects that configuration, the Schedule Migration wizard UI displays a Manual Public IP field. In that field, you will enter the public IP address you want used for the Horizon Cloud Unified Access Gateway deployment.

Note: This public IP must be different from the public IP already in use for the to-be-migrated pod's gateway, to support rollback to the first-gen deployment state if rollback is needed.

Therefore, if you have this configuration, obtain a new public IP address to use, an address different from the one currently used for the first-gen pod's external gateway.

Assess Ability to Log In to Your New Horizon Cloud Environment and See the Horizon Universal Console

Try logging into connect.omnissa.com and after login, check if you see a card labeled Workspace ONE Cloud in the Services UI. The following screenshot is an example.

  1. First check if you see a card labeled Workspace ONE Cloud in the Services UI. The following screenshot is an example.

    Screenshot of the Workspace ONE Cloud card in the Services UI

  2. If you see that card, click its Launch Service link and then check if you see a card labeled Horizon Cloud. This screenshot illustrates that card within the services. Your specific set of cards might differ.

    Screenshot of the Horizon Cloud card with a green arrow pointing to it.

    Clicking on that Horizon Cloud card will begin opening the Horizon Universal Console.

    • If you previously onboarded to your Horizon Cloud environment, you'll see the Horizon Universal Console with the Migration screen available.
    • If you haven't previously completed onboarding to your Horizon Cloud environment, the system presents the region selection UI, as described in the section Cloud Region Selection and you can perform the steps described there to complete onboarding and see the console with the Migration screen available.

If performing the above steps doesn't result in displaying the Horizon Universal Console and you're already engaged with the Horizon Migration team, please contact the person from that team that you're working with. If you aren't already engaged with the Horizon Migration team, please contact Global Support and request Horizon Cloud migration assistance.

The following screenshot illustrates what the top of the Horizon Cloud console's navigation side looks like at the end of Step 2 above. The main area might or might not display the Welcome contents that's shown in this screenshot. The main area might automatically display the Migration screen. Seeing this type of navigation means you're in the Horizon Cloud console.

Screenshot of the top of the navigation for the Horizon Cloud console.

Decide on Your Identity Provider and Sync AD Users and Groups To It

In the Horizon Cloud environment, the service relies on use of both an external identity provider and an Active Directory domain.

Background

In your first-gen tenant, your registered Active Directory domains were used for both machine identity and user identity, to authenticate the end-user access to desktops and published apps.

In the Horizon Cloud environment, you bring to the service an external identity provider to fulfill the user identity part.

Using an external identity provider allows for integration with third-party solutions to provide capabilities such as multi-factor authentication.

In the migration of a first-gen pod to a Horizon Edge, that post-migration Horizon Edge will use your Active Directory domain for machine identity, same as in the first-gen environment. The migrated virtual desktops and those virtual machines that provide published (remote) applications are joined to the Active Directory domain.

Note: The identity provider that you choose for your Horizon Cloud environment should be connected to the first-gen pods' Active Directory domains, the ones registered in your first-gen tenant.

Decide on the Identity Provider You'll Use

The identity provider you decide to register with the Horizon Cloud service must fulfill the requirements of Horizon Cloud.

As of this writing:

  • Only one identity provider can be used with the Horizon Cloud environment.
  • Supported types are:
    • Microsoft Entra ID Commercial (for Azure Commercial environments) and Microsoft Entra ID Government (for Azure US Government environments). When your first-gen pod is deployed in Azure US Government environments, you'll use Microsoft Entra ID Government.
    • Omnissa Access (cloud or on-premises)

For additional background, see Connecting Your Identity Provider in the Horizon Cloud documentation.

Prerequisites - Microsoft Entra ID Commercial or Microsoft Entra ID Government

You'll run a wizard in the Horizon Universal Console to configure the Horizon Cloud settings to use Microsoft Entra ID.

You'll need the following items to complete that wizard.

Required itemDetails
User that has Global Administrator privilegesThis user in the Microsoft Entra ID is needed to:
  • Approve the requested permissions
  • Provide consent for the entire organization
As part of the wizard UI, you generate a link to give to that user to log into Microsoft Entra ID and approve the permissions and provide consent for the Horizon Cloud service to access the user information in Microsoft Entra ID. If you are a Global Administrator in your Microsoft Entra ID, the wizard will prompt you to log in to Microsoft Entra ID and approve the permissions and provide the consent. Follow the on-screen guidance.
Tenant subdomainThe wizard will ask you to enter a string into a field labeled Tenant subdomain. It must start and end with a letter [a-Z] or number [0-9], and contain only letters, numbers, and dashes [-]. This string is your own creation, a string that you and your team make up to use. Most people enter a string that is related to their company or organization name or company domain.

However, keep in mind that later when your end users log in to their desktops and apps using the migrated Horizon Cloud environment, they will enter this string in the Use Company Domain field. This field is presented as part of the end-user login flow.

Prerequisites - Omnissa Access Cloud or On Premises

You'll run a wizard in the Horizon Universal Console to configure the Horizon Cloud settings to use Access.

You'll need the following items to complete that wizard.

Required itemDetails
User that has admin privilegesThis user in your Omnissa Access is needed to:
  • Approve the requested permissions
  • Provide consent for the entire organization
Tenant subdomainThe wizard will ask you to enter a string into a field labeled Tenant subdomain. It must start and end with a letter [a-Z] or number [0-9], and contain only letters, numbers, and dashes [-]. This string is your own creation, a string that you and your team make up to use. Most people enter a string that is related to their company or organization name or company domain. However, keep in mind that later when your end users log in to their desktops and apps using the migrated Horizon Cloud environment, they will enter this string in the Use Company Domain field. This field is presented as part of the end-user login flow.
Access tenant FQDNIn the wizard, you enter your Access tenant FQDN. This FQDN is typically in the format yourcompany.workspaceoneaccess.com. You can obtain this FQDN from your Access console.
Access tenant client ID and client secret (if using Access On-Premises)When using Access On-Premises, the wizard asks for the OAuth client ID and OAuth client secret that you configured for the purpose of integrating with your Horizon Cloud environment.

Synchronize the Active Directory (AD) Users and Groups with that Identity Provider

Before you select the pods to migrate, verify that all the AD users and AD groups that are entitled to desktops and applications from the to-be-migrated pods are synchronized with your chosen identity provider.

During the system's pre-validation checks, the system obtains the set of AD users and groups from the first-gen pod's desktop and application assignments and checks the identity provider registered in the Horizon Cloud environment for those AD users and groups. If the system does not locate one of those AD users or groups in the registered identity provider, the pre-validation step will fail. The failure report you get from the UI will report the missing AD user or group.

Assess Your Use of Active Directory Built-In Users or Built-in Groups and Update as Needed

If your first-gen Horizon Cloud on Microsoft Azure deployment is configured to use Azure Active Directory (Azure AD), you have to update wherever you have specified built-in users or built-in groups prior to migrating and change to non-built-in groups and users.

The system scans the first-gen pods to determine if they meet the migration criteria, then collects the information about the users and groups that are specified in each assignment and attempts to create the equivalent configuration in the Horizon Cloud environment's configured identity provider. If you have Microsoft Azure AD as your identity provider in your Horizon Cloud environment, Microsoft Azure AD Connect synchronizes your Active Directory domain to Microsoft Azure AD.

However, as stated in the Microsoft documentation, the Microsoft Azure AD Connect sync that handles synchronizing an Active Directory group to Azure AD excludes built-in security groups from its directory synchronization. As a result, when the system attempts to create in that identity provider the equivalent first-gen configuration in which you used built-in groups and built-in users, the system finds no equivalent entity in Azure AD because those built-ins are never synchronized. The system will report that the pods where the built-in users and built-in groups are involved cannot be migrated.

In this scenario, create regular Active Directory groups which have the same memberships as the built-in groups and built-in users, and wherever you specified the built-in groups and built-in users to receive desktops or remote apps, update those settings to use the regular Active Directory groups.

Assess Your Use of App Volumes Application Assignments

If your first-gen tenant has App Volumes application assignments, verify that your Horizon Cloud environment has a valid App Volumes license subscription.

During the system's pre-validation checks, the system checks your Horizon Cloud environment for the presence of a valid App Volumes license subscription.

If not found, the system prevents scheduling the pod's migration with an error.

In the Horizon Cloud console, you can verify presence of licenses in your Horizon Cloud environment by using the steps described in Use the Horizon Universal Console to Track Your Horizon Licenses.

Special Case - If Your First-Gen Pod's App Registration Is Using a Custom Role

If your first-gen pod is configured to use a custom role for its subscription's Horizon Cloud app registration, then a migration prerequisite is to update that custom role with the permissions required in a Horizon Cloud environment.

Use of a custom role is atypical. Most first-gen pod deployments are using the Contributor role for their Horizon Cloud service principal's app registration.

Back when your first-gen pod was deployed, it might have used a custom role as described in the first-gen documentation page When Your Organization Prefers to Use a Custom Role.

If your pod falls into this scenario, that existing custom role must be updated to include the permissions required by the Horizon Cloud environment to make its required API calls.

In the first-gen pod's subscription, confirm that the following operations are permitted in the Horizon Cloud app registration's custom role, the app registration used by the pod.

Some of these are the same as were required for a first-gen pod deployment. The table notes which ones are additionally required for the Horizon Cloud environment.

Important: Don't remove operations already allowed in the custom role.

Horizon Cloud Mandatory Permissions

Microsoft Azure Resource Operations that Must Be Permitted in the Custom Role When Assigning Permissions at the Subscription Level
 Operations
Additional new ones to allow for Horizon Cloud

Microsoft.ContainerService/managedClusters/delete
Microsoft.ContainerService/managedClusters/read
Microsoft.ContainerService/managedClusters/write
Microsoft.ContainerService/managedClusters/commandResults/read
Microsoft.ContainerService/managedClusters/runcommand/action
Microsoft.ContainerService/managedClusters/upgradeProfiles/read

Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action
Microsoft.ManagedIdentity/userAssignedIdentities/*/read

Microsoft.ResourceGraph/*

Microsoft.Resources/subscriptions/read

Microsoft.Network/privateEndpoints/read
Microsoft.Network/privateEndpoints/write
Microsoft.Network/privateEndpoints/delete
Microsoft.Network/locations/availablePrivateEndpointTypes/read
Needed by Horizon Cloud which should be already allowed in your first-gen pod's custom roleIf any of these aren't already allowed in the custom role, include the missing ones when you update the role for the preceding operations.
  • Microsoft.Authorization/*/read
  • Microsoft.Compute/*/read
  • Microsoft.Compute/availabilitySets/*
  • Microsoft.Compute/disks/*
  • Microsoft.Compute/galleries/read
  • Microsoft.Compute/galleries/write
  • Microsoft.Compute/galleries/delete
  • Microsoft.Compute/galleries/images/*
  • Microsoft.Compute/galleries/images/versions/*
  • Microsoft.Compute/images/*
  • Microsoft.Compute/locations/*
  • Microsoft.Compute/snapshots/*
  • Microsoft.Compute/virtualMachines/*
  • Microsoft.Compute/virtualMachineScaleSets/*
  • Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read
  • Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write
  • Microsoft.Network/loadBalancers/*
  • Microsoft.Network/networkInterfaces/*
  • Microsoft.Network/networkSecurityGroups/*
  • Microsoft.Network/virtualNetworks/read
  • Microsoft.Network/virtualNetworks/write
  • Microsoft.Network/virtualNetworks/checkIpAddressAvailability/read
  • Microsoft.Network/virtualNetworks/subnets/*
  • Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read
  • Microsoft.Resources/deployments/*
  • Microsoft.Resources/subscriptions/resourceGroups/*
  • Microsoft.ResourceHealth/availabilityStatuses/read
  • Microsoft.Storage/*/read
  • Microsoft.Storage/storageAccounts/*

Optional Permissions

Although the following permissions are not mandatory for the deployment of the Horizon Edge in Microsoft Azure, the service's features that depend on these optional permissions won't work if you don't include them.

To Support Horizon Cloud Features, Microsoft Azure Resource Operations that Are Required for Custom Role When Assigning Permissions at the Subscription Level
 OperationsPurpose
Additional new ones to allow for Horizon Cloud

Microsoft.Network/natGateways/join/action
Microsoft.Network/natGateways/read

Microsoft.Network/privateEndpoints/write 
Microsoft.Network/privateEndpoints/read

Microsoft.Network/routeTables/join/action
Microsoft.Network/routeTables/read

Microsoft.Network/natGateways/join/action and Microsoft.Network/natGateways/read are required operations when you will be using the AKS deployment type for the migration and have chosen to use a NAT gateway on the management subnet in your 'AKS type prerequisites'.

Microsoft.Network/privateEndpoints/write and Microsoft.Network/privateEndpoints/read are required when you will be using the AKS deployment type for your migration and the pod is deployed in an Azure Commercial environment. These permissions are needed to create the private endpoint resources and to validate that the management subnet's NAT gateway is correctly configured. These private endpoint permissions related to the migration's use of the Horizon Edge (AKS) with Azure Private Link. Note: When the first-gen pod is deployed in an Azure US Government environment and you are using the AKS deployment type for the migration, the Horizon Edge (AKS) is set to use internet connectivity by default instead of Azure Private Link. Use of Azure Private Link in Azure US Government environments is unsupported.

Microsoft.Network/routeTables/join/action and Microsoft.Network/routeTables/read permissions are required when you will be using the AKS deployment type and have chosen to use a route table on the management subnet in your 'AKS type prerequisites'. The service requires these permissions to create the private endpoint resources and to validate the route table associated with the management subnet to ensure that the default route is configured correctly.

Needed by Horizon Cloud which could be already allowed in your first-gen pod's custom roleIf any of these aren't already allowed in the custom role, include the missing ones when you update the role for the preceding operations.
  • Microsoft.KeyVault/*/read
  • Microsoft.KeyVault/vaults/*
  • Microsoft.KeyVault/vaults/secrets/*
  • Microsoft.Network/publicIPAddresses/*

Key vault permissions are required for disk encryption of pool VMs.

Public IP addresses permission is required to deploy a Horizon Edge instance with Unified Access Gateway instances behind a load balancer with a public IP address. Also, this public IP addresses permission is required to deploy and to add a public IP address to an image.

Note: This information here is added for convenience, looking ahead to the post-migration Horizon Cloud environment. When you are updating permissions in advance of the pod migration, you might consider including this permission at the same time.

This scenario is when your identity provider for your Horizon Cloud environment is Microsoft Entra ID, and you want to use it for machine identity.

For details, see the Note about Microsoft Entra ID on the Horizon Cloud documentation page.

Was this page helpful?

Provide feedback for this topic

Was this topic helpful?

Please do not include any personal or confidential information.

Generating link…