Citrix user layers provide a very important feature set to Citrix customers.  They allow customers to provision non-persistent pooled machine catalogs and at the same time provide a more persistent user experience where users can save files & install applications while still using a non-persistent image and all the benefits that come with that.

User layers achieve this by creating a virtual disk file on a network share that is mounted elastically right before a user logs on.  Once mounted, all of the writes that happen on the desktop are then written to the user layer rather than to the underlying virtual machine storage. I personally have a desktop with a user layer and Iove the flexibility it provides where I can install a useful application like Sharefile or a certificate from my home lab and have them persist between logons. For a more detailed explanation of how to design for User Layers please read our TechZone Reference Architecture for App Layering.

User layers have been available for a long time. When they were first introduced, there were still Windows operating systems that did not support the VHDX virtual disk format; therefore User Layers have always used the VHD virtual disk format up until the new App Layering release 2309.  Now, App Layering can support either format, and VHDX has become the default format.  (You can check out the latest App Layering updates here.)

Why change the format if VHD has worked for so long? There are some definite advantages to the VHDX format including larger capacity, a 4K block size rather then 512 bytes, built-in self protection to guard against corruption, live resizing, and better data alignment & trimming.  These are features worth having, so it’s great that VHDX is now the default format.

So what do you do if you already have hundreds of user layers that are using the VHD format?

The good news is you can convert a VHD file to a VHDX file.  There are many utilities that can perform this conversion, and you could develop a process to perform the conversion yourself.  Knowing there would be a considerable number of customers that want to upgrade their VHD files, I added this conversion functionality to my User Layer Management Utility.  This utility came to life in 2020 to provide customers with the ability to manage the user layer repair process. I then added the ability to expand and compress user layers. Now, I’ve added the ability to convert the user layer VHDs.

If you are interested in the other features of the utility feel free to review the following blogs:

New VHDX conversion feature

This new conversion feature works similarly to other features of the utility. The user interface is shown below.

The utility allows you to select an OS layer and list all the VHDs for that layer.  You can then select all or individual VHDs to convert and execute the conversion.  The utility uses Hyper-V to perform the conversion because it’s the most straightforward way to do it. I found that it was more reliable than other options even though it’s slightly harder to set up.

For most organizations the best approach will be to script the migrations to run every night, converting VHDs that are not locked until all of the VHDs have been converted.  There is a script included to facilitate this. It allows the admins to define an allowed period of hours for the script to run every night, and it will skip any mounted VHDs or previously migrated ones so it can be continuously, off hours, until all of the VHDs have been converted.

For detailed information on how to set up the utility for VHD conversion, check out this TechZone article. To download the new version of the script go to the original blog on the User Layer Repair Utility.


This software application is provided to you “as is” with no representations, warranties or conditions of any kind. You may use and distribute it at your own risk. CITRIX DISCLAIMS ALL WARRANTIES WHATSOEVER, EXPRESS, IMPLIED, WRITTEN, ORAL OR STATUTORY, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NONINFRINGEMENT. Without limiting the generality of the foregoing, you acknowledge and agree that (a) the software application may exhibit errors, design flaws or other problems, possibly resulting in loss of data or damage to property; (b) it may not be possible to make the software application fully functional; and (c) Citrix may, without notice or liability to you, cease to make available the current version and/or any future versions of the software application. In no event should the code be used to support of ultra-hazardous activities, including but not limited to life support or blasting activities. NEITHER CITRIX NOR ITS AFFILIATES OR AGENTS WILL BE LIABLE, UNDER BREACH OF CONTRACT OR ANY OTHER THEORY OF LIABILITY, FOR ANY DAMAGES WHATSOEVER ARISING FROM USE OF THE SOFTWARE APPLICATION, INCLUDING WITHOUT LIMITATION DIRECT, SPECIAL, INCIDENTAL, PUNITIVE, CONSEQUENTIAL OR OTHER DAMAGES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. You agree to indemnify and defend Citrix against any and all claims arising from your use, modification or distribution of the code.