How to install and configure Citrix XenDesktop 7.12 with Windows Server 2016 hosts running on Microsoft Azure

It’s almost a year ago, that I wrote an installation guide / step-by-step guide about Citrix XenDesktop. XenDesktop releases arrived at a rapid pace in the past year. At this moment, the current release is version 7.12 which was released in December 2016. So, it’s time for an up-to-data step-by-step blog about the latest XenDesktop release. This time I want to do something different, till now I always used Citrix Provisioning Services (PVS) for the XenDesktop Hosts. Since version 7.11 it’s also possible to use the Microsoft Azure Resource Manager for the XenDesktop Hosts, lets take a closer look on how to configure that.

In this blog, I will show you how to install and configure the Citrix XenDesktop 7.12 controller and how to create a Windows Server 2016 master image that can be hosted in Microsoft Azure.

My Environment

First let me tell you something about my environment, it is important to do some preparations before starting with the XenDesktop 7.12 installation. For example, you must have a configured Citrix License Server with the proper licenses available and a Microsoft SQL server up and running (or install SQL Express during XenDesktop installation).  If using Microsoft Azure, make sure you have your Azure tenant up and running, configured with a network and a storage account.

This is the complete overview of my environment with components that will be used during this XenDesktop 7.12 implementation;

  • Microsoft Azure Tenant with network and storage account configured
  • DC01 : Windows Server 2016 with Domain Controller role and Citrix License Server (running in Azure)
  • SQL01 : Windows Server 2016 with Microsoft SQL Server 2016 up and running (running in Azure)
  • XDC01 : Windows Server 2016, the Citrix XenDesktop 7.12 Delivery Controller software will be installed on this server (running in Azure)
  • SF01 : Windows Server 2016 with Citrix StoreFront 3.8 up and running (running in Azure)
  • On-premise Windows Server 2016 running the Hyper-V role.

System Requirements

Make sure you check the system requirements for each XenDesktop component before you start with the implementation. You can find the Citrix XenDesktop 7.12 requirements here

Preparing the Windows Server 2016 Master Image

There are two ways to prepare your Windows Server 2016 XenDesktop Host master image. The first one is the easiest one, just go the Azure Marketplace and select the [HUB] (Hybrid Use Benefit) version of the Windows Server 2016 Datacenter image/template. Deploy a new Virtual Machine with this template, install the XenDesktop VDA agent and all the applications you want to publish with XenDesktop.

After installing all the applications and the XenDesktop VDA Agent, shut down the VM. Within the Azure Portal Stop (deallocate) the server. For these steps you need an Azure portal with an EA (Enterprise Subscription) otherwise you are not able to deploy a [HUB] template image.

Unfortunately, I don’t have an Azure tenant with an Enterprise Agreement, what brings us to option two. With option two we must create our own Windows Server 2016 Datacenter image with a Windows Server 2016 Datacenter license that include software assurance. In my case I will install this server in my on-premise Microsoft Hyper-V environment.

Because I cannot create a new Virtual Machine with a new hard disk image that has the .vhd extension (by default it has the .avhdx file extension), I first create a new virtual hard disk manually (.vhd is needed for Microsoft Azure in combination with Citrix XenDesktop).

In the Windows Server 2016 Hyper-V Manager, right click the server name, go to New > Hard Disk.. in the Before You Begin dialog, click Next

Select VHD and click Next

Select Dynamically expanding and click Next

Fill in the Virtual Hard Disk name and the location and click Next

Fill in the desired Virtual Hard Disk size (default is 127 GB) and click Next

Click Finish


The next step is to create a new Virtual Machine (VM) and attache the just created Virtual Hard Disk.

In the Windows Server 2016 Hyper-V Manager, right click the server name, go to New > Virtual Machine.. in the Before You Begin dialog, click Next

Give the new Virtual Machine a name, in my case XD-Master. Select a location and click Next

Select Generation 1, otherwise you cannot attache the just created Virtual Hard Disk with the .vhd file extension

Assign the desired Memory and click Next

Select the correct network and click Next

Select Use an existing virtual hard disk, select the just created Virtual Hard Disk and click Next

Click Finish

Start the Virtual Machine and install Microsoft Windows Server 2016 and the application baseline you want to publish with Citrix XenDesktop 7.12

After the Microsoft Windows Server 2016 installation and the application baseline, start Windows PowerShell as Administrator. You need to install the Azure PowerShell modules. To install this run the following command;

Install-Module AzureRM

When asked to install Untrusted repository enter Y

After the installation, run the following command;

Install-Module Azure

We also need to install the Windows Azure VM Agent, you can download this agent here

Start the installation and click Next

Select I accept the terms in the License Agreement (if you do 🙂 ) and click Next

Click Finish

Install the Citrix XenDesktop 7.12 Virtual Delivery Agent for Windows Server OS

The next step is to install the Citrix XenDesktop 7.12 Virtual Delivery Agent for Windows Server OS. Mount the XenDesktop 7.12 ISO file and start the installation.

Next to XenDesktop, click Start

Click Virtual Delivery Agent for Windows Server OS

Select Create a Master Image, and click Next

Optionally you can install the Citrix Receiver. Click Next

Fill in the FQDN of your Citrix XenDesktop Controller (we are going to install this server later, but that is not a problem, just fill in the FQDN of your future XenDesktop Controller) and click Test connection

The test is always successful, even if the server does not exist.  Click Add

Click Next

Select the features you want to use and click Next

Select Automatically and click Next

Click Install

For this PoC installation I select I do not want to participate in Call Home, click Next

Select Restart machine and click Finish

After the restart, shut down the server.

Upload the custom Windows Server 2016 image to Azure

 Now it’s time to upload the custom Windows Server 2016 image file to your Microsoft Azure Storage Account. Make sure you have installed Azure PowerShell on your computer/server from where you can upload the Virtual Hard Disk file (.vhd file). You can install Azure PowerShell with the “Install-Module AzureRM” and “Install-Module Azure” commands.

Login to your Azure tenant and go to Storage accounts. Open the Storage Account you want to upload the Virual Hard Disk to, and select Containers. At the right you see the Storage Account URL. This URL is needed in the next step.

As an Administrator, open PowerShell and run the following commands;

Login-AzureRmAccount (and login with your Global Azure Administrator Account)

After that, run: Add-AzureRmVhd -ResourceGroupName “(Resource Groupname)” -LocalFilePath “(full path to Virtual Hard Disk)” -Destination “(Storage Accont URL + container name + Image name)”

In my case the command is: Add-AzureRmVhd -ResourceGroupName “RobinHoboLAN” -LocalFilePath “D:\HyperV\HardDisks\XD-Master.vhd” -Destination “”

After that the Virtual Hard Disk file will be uploaded to Microsoft Azure.

Installing and Configuring the Citrix XenDesktop 7.12 Delivery Controller

Now it’s time to install and configure the Citrix XenDesktop 7.12 Delivery Controller itself. Login to the server and mount the Citrix XenDesktop 7.12 ISO File.

Next to XenDesktop, click Start

On the left side of the screen click on Delivery Controller

Select I have read, understand, and accept the terms of the license agreement and click Next

I have already setup a Citrix License Server and a StoreFront server in my environment. Therefore I only select the Delivery Controller, Studio and the Director. Click Next


A Microsoft SQL Server is already up and running in my environment, so I only select Install Windows Remote Assistance. Click Next.

Select Automatically and click Next

Click Install

This is for a test lab only, so I select I do not want to participate in Call Home. Click Next

Select Launch Studio and click Finish

Click Deliver applications and desktops to your users


Select A fully configured, production-ready Site (recommended for new users). Fill in a Site name and click Next

Select Create and set up databases from Studio, fill in the desired database names fill in the SQL Server. Click Next

Make a connection to your Citrix License server and select your XenDesktop License. click Next

This is the part were we going to make a connection to Microsoft Azure. You can make a connection to the Classic Azure portal, or the Azure Resource Manager. I have all my Azure resources created within the Azure Resource Manager, so I select Microsoft Azure. As Azure environment I select Azure Global. The virtual machines will be created using the Studio tools (Machine Creation Services). Click Next

Fill in your Azure Subscription ID and give the connection a name. Click Create new..

Login with your Azure Global Administrator account

Click Next

Select your Azure Region and click Next

Fill in the resource name for your Network connection and select the correct Subnet. Click Next

Select the Additional Features you are going to use in your environment and click Next

Click Finish

Now it’s time for the second step, click on Set up machines for desktops and applications or remote PC access


Click Next

Select Server OS and click Next

Select This Machine Catalog will use: Machines that are power managed (for example, virtual machines or blade PCs). We are going to deploy machines using Citrix Machine Creation Services. Click Next

Select the uploaded master virtual hard disk from the previous step and click Next

Click Close

Select the desired storage type and select Yes to use an existing on-premises Windows Server license. Click Next

Enter the number of virtual machines you want to create. For this blog I will create three VM’s. Select the machine size you want to use for your host servers and click Next

This is a tricky one. By default both settings are enabled. In my case, when both option where selected, the deployment of the host servers failed. I found this Citrix article ( CTX220026 ) that described my problem and tells me to disable these two settings. Click Next

Select your network cards and click Next

Select the Microsoft Active Directory OU you want to create the Computer Accounts in. Fill in a Account naming scheme, in my case I will use XDHOSTS##. Click Next


Fill in a machine Catalog Name and a Machine Catalog description for administrators. In my case I will use Windows Server 2016 Desktop. Click Finish.

The deployment of the host servers will now begin. It will take a long time, in my case over 30 minutes!

Step 3, the final one. Click on Set up Delivery Groups to assign desktops and applications to your users

Click Next

Add all of the available servers (in my case three) and click Next

I will restrict access for this Delivery Group for the SharedDesktop Active Directory security group, configure your desired configuration and click Next

I will not publish any applications at this moment, I you want to publish applications from the host servers click Add otherwise click Next

I will publish the Desktop only, click Add

Fill in a Display name and a Description, I select Allow everyone with access to this Delivery Group to use a desktop, and off course, make sure that Enable desktop is enabled. Click OK

Click Next

Fill in a Delivery Group name and optionally a Delivery Group description. In my case, this will be Windows Server 2016 Shared Desktop.

Click Finish

Final step : See if it works

The final step is to see if it all works. First lets take a look at the Machine Catalog within Citrix Studio.

As you can see, all three servers are created, they are up and running and have a Registered state

In the Microsoft Azure Resource Manager you can see that the three servers are created in there own Resource Group

Let’s open a user session to one of the new host servers running in Azure. Login to your StoreFront site.

As you can see the Windows Server 2016 Shared Desktop is visible

And after starting the user session, you can see that I have a session to the XDHOSTS03 server.


Your email address will not be published. Required fields are marked *

  • Have you tested publishing applications? If so, do you notice a quick black screen upon launching? I’ve tested this in over 4 different builds and are experiencing this consistently.

  • Hi Robin!

    I don’t understand the installation “Azure VM agent”, if it not necessary for working the VM.

    I mounted a NetScaler into Azure and not necessary the Azure Agent installation.

    For another hand, you can try use Azure AD (non AzureVM- ActiveDirectory), for authentication.

    Best Regards!

  • Hi Robin,

    Great article, but wondering why don’t you deploy windows servers directly in Azure using their images?

    I am using powershell scripts to deploy my VDAs (master image) in Azure, it is much easier and faster if you need to redeploy the base image. Have you considered using powershell? Is there any specific reason why you are using Hyper-V to build your master image?


  • I am testing out windows 2016 servers. I have a test environment with two windows 2012 delivery controllers. I added a windows 2016 to my test environment and its failing when I run a site test and the studio doesn’t open when I shutdown the Windows 2012 delivery controllers? Is there a certain procedure for adding Windows 2016 Delivery controller to an existing XA 7.12 site? Can this be done or should I just create a new site? My end goal is to remove the Windows 2012 Delivery controllers and just use Windows 2016 for delivery controllers. I eventually need to do this for a client so I am just prepping now.

  • Quick question is the netscaler required for hybrid deployments? Do i need a netscaler in the Azure cloud? I am guessing yes to allow authentication, right?

  • Hi, Can i have the whole setup in Azure, but MCS doesnt seem to work. The VDA registration fails in ARM. Does it need hypervisor tools or something else.

  • It’s great to learn about Microsoft Azure, its components and step-by-step guide to configure XenDesktop. I successfully implemented your instructions and it’s really worked well.

About Robin Hobo

I am a Technology Specialist Cloud Endpoint working for Microsoft. I am specialized in Microsoft Intune, Azure Virtual Desktop (AVD), Windows 365, Windows 11 and Azure AD. Also interested in mental health, NLP and personal development.

For more information, see my LinkedIn profile.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.