How to customize USMT in Horizon Mirage

When doing a Windows 7 migration using Horizon Mirage the User State Migration Tool from Microsoft is used to migrate user settings and data as well as operating system settings.

USMT by itself already supports a lot of settings and additionally Mirage adds support for even more settings which are automatically migrated. Have a look at my previous article to get to know about the settings which are migrated out of the box.

Still in most cases USMT inside Mirage needs to be modified as additional application, user or operating system settings and data need to be transferred during the migration. For example you may want to migrate Google Chrome, Mozilla Firefox or SAP GUI settings.

Extending USMT is just a matter of creating additional XML files which contain the information on what additional settings should be migrated. This can be done manually by following the USMT user guide custom XML examples or using a nice tool called USMT XML Builder GUI.

After the XML file with the needed settings is created (in my example it is called ThinApp.xml) it needs to be copied into the USMT x86 and x64 folder. To get these folders you have to download USMT and update it. I covered how this can be done in my prevoius article on how to import USMT into Mirage.


When the USMT folder is prepared an the custom XML files are added we need to customize the USMT script inside Mirage. During the USMT stage Mirage launches a script called “Launch_USMT.cmd” which is located in the Mirage Client folder under ” C:Program FilesWanovaMirage Service”. This file needs to be copied to the root of the USMT folder.


After this is done the script needs to be adjusted to include the newly created custom XML file. For this just open the “Launch_USMT.cmd” in a text editor of your choice and modify the variable USMT_MIG_XML to include the custom XML file.


For each new XML file the following parameter needs to be appended to the variable:


Of course you have to change the name of the XML to the appropriate one. After you changed the variable it should be look similar to following example:


set USMT_MIG_XML=/i:%USMT_LOCATION%MigApp.xml /i:%USMT_LOCATION%MigDocs.xml /i:%WallpaperFile_XML_PATH% /i:%KeyboardLayout_XML_PATH% /i:%MigRegionalSettings_XML_PATH% /i:%DefaultPrinter_XML_PATH% /i:%Win7CustomSettings_XML_PATH%


set USMT_MIG_XML=/i:%USMT_LOCATION%MigApp.xml /i:%USMT_LOCATION%MigDocs.xml /i:%WallpaperFile_XML_PATH% /i:%KeyboardLayout_XML_PATH% /i:%MigRegionalSettings_XML_PATH% /i:%DefaultPrinter_XML_PATH% /i:%Win7CustomSettings_XML_PATH% /i:%USMT_LOCATION%ThinApp.xml

After the variable is changed and the updated script is saved the USMT folder needs to be imported to Mirage again.


From now on the customized USMT is used for any migration task.

2 thoughts on “How to customize USMT in Horizon Mirage

  1. Great post Tim – thank you for sharing this information. As someone who is completely new and therefore unfamiliar to Mirage, this got me going pretty quickly!

    I have two, likely trivial, questions though:

    1) I’m not seeing “Launch_USMT.cmd” on the server but it exists on my test workstations.
    Do workstations pull that file from a central location, meaning I just have to update the file in that location and it gets out there?
    Or does this mean I have to update that file on one of the workstations then deploy it [somehow] to the rest of the organization? (e.g.: login script, GPO etc.)

    2) I also have a config.xml I’m using to exclude a few but very specific things. Am I free to add the /config:config.xml argument to the scanstate/loadstate execution command?

    Again, I apologize if these are basic questions. I’m a new employee, am not a Mirage admin and am the ‘USMT guy’ tasked with ensuring its capturing/excluding what we want/don’t want.



    1. Hi Julius,

      sorry for the late answer. The Launch_USMT.cmd is part of the Mirage client installation. But as I wrote in the article you can copy this file and import it as part of your USMT package. Then it is centrally managed.

      You can add additional configuration file for USMT as you like. Have a look at this article as an example:



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s