Dec 222020

I was recently tasked with moving some PVS target/vDisk to a new PVS environment. There are many ways to achieve this. However, this is how I migrate devices from one PVS Farm to another. I am sure there are better ways to automate this as my blog is just a simple way to get it done. Migrating PVS targets to a new PVS Server. Another way I have done it in the past was add new PVS servers into an existing Farm, then go through the actions to make them the main servers, and of course decom the old ones. This is a very simple task, and most people know this. But if not, they will help.

Open your PVS Console, and select the PVS vDisk, then click export.

Select the lowest version to grab the vDisk Chain

You will see a Filename.xml get created. This is a manifest file that will instruct the new destination PVS server to inject the version in.

For me I like to create Stores for all my different vDisk.

Give it a name

Check all the PVS Server that will contain the vDisk

Create the folder in the given location that you are storing the vDisk and Validate the paths.

I leave the default write cache location in the area it selects, as we do use the old legacy ways of the Write cache to server.

Now I just copy the Connects form the original Server to the destination

At this point I open of the PVS console and go to vDisk pool

Right click and Import

Select the store you create earlier, and Select a PVS server that you copied it to, and click search

Or you can import it from the Store, so you don’t have to select anything and take the change of getting something wrong.

Click Add and close

Click ok, after vDisk was added

Now you can see the Vdisk

For me I use a dedicated VMware device for updating my master images and such. I am going to move the VMware device over to the new PVS server and update the subnet and MAC as well to reflect a new subnet we just added.


Change the Port group and note the MAC

Now at this point I manually create the Device in the new PVS Server.

Add the new MAC, Update the vDIsks area to the vDisk you imported in.

Change the Type to Maintenance

Now because I use the ISO BDM method, I need to update it to the new BDM to the new PVS Boot path.

If you have more than one new PVS server, make sure you copy the vDisk files to the second server as well, or when it boots up based on the default load balancing, it will hit the second server and tell you no vDisk found.

Check and make sure the replication status is green on both servers

On the device, you will need to reset the Machine account from PVS, to recreate the Domain trust password

Now, boot the Maintenance Machine up and it should stream to the new location. Found the vDISK

Typically for moving all the targets I would do something like this, then I would edit the MAC addresses so they would align with the new subnet that I change from. 

How to Migrate PVS Target Devices | | Apps, Desktops, and Virtualization (

For this situation, I can now create all new devices that will have the same vDisk. I will create a new Machine Catalog/Deliver Group. You can also use the same one if needed. I use FSlogix, so the profile data will be intact for the user, the user will not even notice anything has changed as far as the devices name or its moved to a different PVS server.

Mar 072020

UDP over Audio for Citrix

Many people use Audio in Citrix VAD. It works well, but at times it can be choppy, jittery, and lagging.

I wouldn’t say it’s hard, but Citrix is kind of all over the place with the docs. The Tech Zone does a nice job on the material. One of the reasons I started blogging is I see all kinds of blogs, but I want to do something different. I want to share my settings and get feedback on your experience. Then update my blog with your professional experience. Of course with your approval and your credit for the work. This will allow each one to share different configurations and what works. My intention isn’t to redo blogs or Techzone but to show ALL configurations around a specific topic, like this one. I want more than. Just links, I want detailed setups from start to finish. So, let’s start.

  1. Studio default Citrix policies
  2. So, as you can see 3 policies are set by default within Citrix Studio. The reason I am showing this is that I just wanted to ensure people that no Studio Policies need to be configured.

  1. Another thing I found is that if the Audio is set to medium, the quality is better, and it helps for MICS that us Optimized USB ICA virtual channel.

  1. Once these are set, they are by default. Then you need to tell the Workspace Clients how to use this policy. If these are not set, UDP will not work over audio.
  • Enable audio
  • Sound quality medium
  • Enable Real-Time transport (16500 – 16509)
  • Allow Real-Time transport through Gateway

2. Client settings for UDP

Workspace GPO, setting that reflects the bullet points above.

  1. The next question will be, how does this work for non-domain, BYOD devices?
  2. For this to take effect, you must update the Default.ICA on your storefront servers.
  3. On the StoreFront machine, open C:\inetpub\wwwroot\Citrix\<Store Name>\App_Data\default.ica with an editor such as notepad ++
  4. Some people may not like editing the default.ica file. I understand and get it. But after all, that is what really makes up the ica packet from launching resources. It would be nice for Citrix to add a GUI option. Such as In storefront for this, some drop down the says enable UDP for all workspace clients. Checkbox =enable. 
  5. Anyways let continue. So, for me, it’s this…. C:\inetpub\wwwroot\Citrix\MFA\App_Data
  1. Make the entries below under the [Application] section.

  1. Firewall requirements
  2. The Audio UDP port range specifies the range of port numbers that the Virtual Delivery Agent (VDA) uses to exchange audio packet data with the user device.
  1. By default, the range is 16500 – 16509
  2. Base Citrix Layout. I took this from the EDT CTX Article.
  3. Some people think that these ports need external as well. But in fact, it is from SNIP to the VDA Network. Then it’s wrapped up in the ICA packet.

  1. I have seen some documentation stating you need these ports open, however that is from the NSG gateway to the VDA backend. This isn’t what they mean.
  1. This is what it will look like in terms of an ICA packet.
  2. Internet Firewall: Additional rules must be added to your firewall(s) to allow the following UDP traffic.
  • Client/Citrix Receiver > NetScaler Gateway – UDP/443
  • NetScaler Gateway > XenDesktop VDA – UDP/16500-16509  

h. Ideally, if you could blow up the ICA packet, and analyze the data inside it, It would look like this

  1. NetScaler Settings needed
  • Enable the DTLS flag on the NetScaler Gateway Virtual Server.


            I didn’t have to do this But based on my research people have done this and then it would work.

  • Unbind the SSL certificate pair from the NetScaler Gateway Virtual Server.
  • (Re)bind the SSL certificate pair to the Netscaler Virtual Server.  (Note: when rebinding the SSL certificate 
  • I didn’t get any message saying, “No usable ciphers configured on the SSL vServer/service.” This is a known issue and can be ignored). Some say they have, but I didn’t.
  1. Go to the Gateway settings, then click the desired Gateway and edit
  2. Go to the Gateway, and Edit the vServer

  1. After this select DTLS (checkbox), under Basic settings. This is right at the top after you are in the Gateway settings.
  1. Now go down to the SSL local and unbind the SSL cert. After you unbind it, go down and press done to the NetScaler will commit the changes.
  1. Go back into the Gateway, and now Bind again. After you bind it, go down and press done to the NetScaler will commit the changes.

  1. Now at this point, you will see this in the DTLS setting 
  1. As you can see here, once the user starts connecting in, you will see the Client port and XenApp/XenDesktop port show the UDP audio port.

  1. Finally results
  1. 2016 Windows Server/Windows 10 1608 LTSC
  2. VDA 19122016 Windows Server /VDA1909 Windows 10 LTSC
  3. Logitech h570 headset (Optimized USB support)/ SONY PS3 Mic
  4. Citrix Workspace 1911
  5. FSLogix profiles (Just in case anyone asks)





*Update* For XenDesktop 3/7/2020

I needed to show Xendesktop Settings based on a Slack conversation I had. My settings are the same, nothing changed other than ( I had to enable USB support for this VDA) Even though Citrix is picking it up as optimized. It’s not integrated, and it’s still a USB device. (Which Reminds me I need to update My USB Blog…. Also make sure “Client USB Plug in Play device redirection is enabled, or nothing will not happen.

My only headset laying around was my old PS3 Mic. Dang Citrix picked it right up, and optimized it  but restricted it. I must be blocking it.

I am 🙂

Allowed now.

I have to restart my session, for the restriction to go away. The sound would go through to the mic.

Then check and see if optimized is right for this mic

Ok so it’s open now.

Still no Audio through Mic, as I am talking into it here.

Toggle it to Generic

Windows 10 will install a drive for me. 🙂

Generic it is… ( This is also how I test optimized and Generic) 

See more here

My testing was around XenApp (Virtual Apps) XenDesktop (VD), and this is for Avaya OneXcommunicator without VDI equinox communicator on the client.

Here are some blogs I picked through to get my information.

  • This was on Windows 8 and Citrix Receiver 4.2

As you can see, UDP is far more valuable and is a must. Seems like Citrix nailed this and did a wonderful Job from a bandwidth perspective. But is the audio really better?  

Some discussions around this.

This article states to use High

Avaya states UDP and medium

UDP with the multi-stream set, interesting Article talks about multi-stream and how it can help


References and data, I collected for this blog



But as you can see, the data is scattered and it’s tough to get it all. Well, in my opinion. If you have a different configuration and did something different please share and with your permission, I’ll update this with you steps outlined for your setup In your environment. I feel that a master blog would benefit everyone.

Dec 202017

In my environment I have nearly 100 persistent MCS VDAs. Our developers, contractors, and even us IT people need the ability to change things on our VDI desktops (install/uninstall/set registry/create local IIS sites/etc.) and have them persist reboots. Luckily, the only software I have to maintain on these desktops is the VDA itself. That still means when Citrix releases a new version that I want to move to, I have to upgrade almost 100 individual desktops. The last time I had to do this I wanted to rip my hair out, and decided to write a script to automate the task. It has saved me TONS of time, so I want to share it in hopes that it can save someone else some time (and hair).

I wrote the script specifically for my MCS environment, which runs on XenServer, but with a little tweaking it can be modified for any environment.

How it works (the short version):

  1. Gets the computer(s) you set – can be manual input or a delivery controller query
  2. On each computer it will create 2 scripts, and 2 scheduled tasks
    1. The first script loads auto logon info into the registry
    2. The second script handles the vda removal and install
  3. One scheduled task runs once to run the first script and reboot
  4. The second scheduled task runs the second script at logon (first script sets up a user – in my case the local administrator – to logon automatically)

Most things are explained in the script, and this time I’ve also created a youtube video to go through it all/show it in action.