locked
USMT5 & MDT (8443) not saving desktop items RRS feed

  • Question

  • I've been learning MDT in prep for a Win10 OSD coming up where I work.  I feel like every time I make some headway in figuring things out, something else either doesn't work as expected, or is just complicated and requires some dense reading...

    My current connundrum is "User Data."  I had hoped that USMT being built into MDT would make things easier so that we could easily save users' data/settings and restore, all as part of MDT.  I have tried a number of configs and am just getting more and more frustrated.  I'm not sure, but I hope someone may be able to shed some light on my plight.

    Scenario #1: Offline mode/hardlink

    In what should be the easiest of User Data Migration scenarios, I am either misunderstanding, or misuing the "Move Data and Settings" option in MDT.  I [think I] understand how this method is supposed to work, but I find it frustrating because it seems to back up literally everything on the machine EXCEPT for the user data.  Every time I have tried this method, I get data moved on the root of C as well as apps, but none of the user priofiles get moved - the C:\Users\ folder is practically empty, when I know there were 2 users with data on the machine.  is there a config file I'm missing, or is this actualy the expected result of this item?

    Scenario #2: MigData network share

    Using the more commonly-used method, I've created an XML file and sligtly modified it from the original MigUser.xml.  I orginally had trouble with getting data from Downloads & Desktop to be moved.  I found a post (on here I think) that helped me add the Downloads folder, and it worked!  by my frustrations continue in that the Desktop folder does not get migrated.  I've gone so far as to use MigRecover to look at the MIG file, and I have found that there is no Desktop folder for any users that is being captured.  I've tried using both the CSIDL & FolderID versions of  the folder identifiers, but to no avail.

    I'm really lost at thins point, but the ONLY thing I need to figure out here is the Desktop piece.  If I can get that working, I think I can finally call it a win (until somone adds to the scope).  I'll post my MDT Rules & custom MigUser.xml in a comment, just to keep this (somewhat) neat & tidy.


    Thanks, -=Justin=-

    Monday, February 26, 2018 2:10 PM

Answers

  • So, it turns out that after upgrading to 8450, and using the built-in xml files, the migration is happening as I originally expected.  I'm unsure if this was working properly before & I was doing something else that caused the issue, or if there was some kind of update in 8450, but now my rules (in regards to USMT) look like this:

    UserDataLocation=\\AAK8-NAS\MigData$\%ComputerName%
    ScanStateArgs=/ue:*\* /ui:AF\*
    USMTMigFiles001=MigUser.xml
    USMTMigFiles002=MigApp.xml

    After running my ClientReplace TS, I can see that the following folders were sasved to the .MIG file:

    AppData
    Desktop
    Documents
    Favorites
    Music
    Pictures
    Videos

    I just need to get Downloads in  there and I'll be all set.

    Thank you to Dan_Vega for helping to explain how some of this works!


    Thanks, -=Justin=-

    Monday, March 5, 2018 4:31 PM

All replies

  • Rules:

    [Settings]
    Priority=Default
    Properties=MyCustomProperty
    
    [Default]
    _SMSTSOrgName=Running %TaskSequenceID% on %ComputerName%
    OSInstall=Y
    OSDComputerName=AF-%SerialNumber%
    MachineObjectOU=[ADOUTREE]
    JoinDomain=af.org
    DomainAdmin=[username]
    DomainAdminDomain=af
    DomainAdminPassword=[domainpassword]
    AdminPassword=[adminpassword]
    TimeZoneName=Eastern Standard Time
    HideShell=NO
    FinishAction=REBOOT
    UserDataLocation=\\SERVER\MigData$\%ComputerName%
    ScanStateArgs=/ue:*\* /ui:AF\*
    LoadStateArgs= /c
    USMTMigFiles001=MigUserAF.xml
    EventService=http://SERVER:9800
    USMTOfflineMigration=TRUE
    
    SkipTaskSequence=NO
    SkipComputerBackup=YES
    SkipComputerName=NO
    SkipDomainMembership=YES
    SkipProductKey=YES
    SkipUserData=NO
    SkipLocaleSelection=YES
    SkipTimeZone=YES
    SkipApplications=YES
    SkipAdminPassword=YES
    SkipCapture=NO
    SkipBitLocker=YES
    SkipRoles=YES
    SkipSummary=NO
    SkipFinalSummary=NO

    MigUser.xml (I know - it's a bit of a mess):

    <?xml version="1.0" encoding="UTF-8"?>
    <migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">
    
        <_locDefinition>
         <_locDefault _loc="locNone"/>
         <_locTag _loc="locData">displayName</_locTag>
        </_locDefinition>
    
        <!-- This component migrates My Video files -->
        <component type="Documents" context="User">
            <displayName _locID="miguser.myvideo">My Video</displayName>
            <paths>
                <path type="File">%CSIDL_MYVIDEO%</path>
            </paths>
            <role role="Data">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Shared Video files -->
        <component type="Documents" context="System">
            <displayName _locID="miguser.sharedvideo">Shared Video</displayName>
            <paths>
                <path type="File">%CSIDL_COMMON_VIDEO%</path>
            </paths>
            <role role="Data">
                <detects>
                     <detect>
                         <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_COMMON_VIDEO%")</condition>
                     </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_VIDEO% [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates My Music files -->
        <component type="Documents" context="User">
            <displayName _locID="miguser.mymusic">My Music</displayName>
            <paths>
                <path type="File">%CSIDL_MYMUSIC%</path>
            </paths>
            <role role="Data">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Shared Music files -->
        <component type="Documents" context="System">
            <displayName _locID="miguser.sharedmusic">Shared Music</displayName>
            <paths>
                <path type="File">%CSIDL_COMMON_MUSIC%</path>
            </paths>
            <role role="Data">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_COMMON_MUSIC%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_MUSIC%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_MUSIC%\ [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Desktop files -->
        <component type="Documents" context="User">
            <displayName _locID="miguser.desktop">Desktop</displayName>
            <paths>
                <path type="File">%FOLDERID_Desktop%</path>
            </paths>
            <role role="Data">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%FOLDERID_Desktop%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%FOLDERID_Desktop%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%FOLDERID_Desktop% [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Shared Desktop data -->
        <component type="Documents" context="System">
            <displayName _locID="miguser.shareddesktop">Shared Desktop</displayName>
            <paths>
                <path type="File">%FOLDERID_PublicDesktop%</path>
            </paths>
            <role role="Data">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%FOLDERID_PublicDesktop%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%FOLDERID_PublicDesktop%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%FOLDERID_PublicDesktop%\ [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Desktop Settings -->
        <component type="Documents" context="User">
            <displayName _locID="miguser.desktop">Desktop</displayName>
            <paths>
                <path type="File">%FOLDERID_Desktop%</path>
            </paths>
            <role role="Settings">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%FOLDERID_Desktop%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%FOLDERID_Desktop%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%FOLDERID_Desktop% [desktop.ini]</pattern>
                            <pattern type="File">%FOLDERID_Desktop%\* [*]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Shared Desktop settings -->
        <component type="Documents" context="System">
            <displayName _locID="miguser.shareddesktop">Shared Desktop</displayName>
            <paths>
                <path type="File">%FOLDERID_PublicDesktop%</path>
            </paths>
            <role role="Settings">
                <detects>
                     <detect>
                         <condition>MigXmlHelper.DoesObjectExist("File","%FOLDERID_PublicDesktop%")</condition>
                     </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%FOLDERID_PublicDesktop%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%FOLDERID_PublicDesktop% [desktop.ini]</pattern>
                            <pattern type="File">%FOLDERID_PublicDesktop%\* [*]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates My Downloads files -->
        <component type="Documents" context="User">
            <displayName _locID="miguser.mydownloads">My Downloads</displayName>
            <paths>
                <path type="File">%FOLDERID_DOWNLOADS%</path>
            </paths>
            <role role="Data">
                <detects>           
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%FOLDERID_DOWNLOADS%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%FOLDERID_DOWNLOADS%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%FOLDERID_DOWNLOADS% [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates My Documents files -->
        <component type="Documents" context="User">
            <displayName _locID="miguser.mydocs">My Documents</displayName>
            <paths>
                <path type="File">%CSIDL_PERSONAL%</path>
            </paths>
            <role role="Data">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_PERSONAL%")</condition>
                    </detect>
                </detects>
                <rules>
                    <exclude>
                        <objectSet>
                            <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
                            <pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
                            <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
                        </objectSet>
                    </exclude>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_PERSONAL%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_PERSONAL% [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Shared My Documents files -->
        <component type="Documents" context="System">
            <displayName _locID="miguser.shareddocs">Shared Documents</displayName>
            <paths>
                <path type="File">%CSIDL_COMMON_DOCUMENTS%</path>
            </paths>
            <role role="Data">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_COMMON_DOCUMENTS%")</condition>
                    </detect>
                    <detect>
                        <condition negation="Yes">MigXmlHelper.IsSameObject("File","%CSIDL_PERSONAL%", "%CSIDL_COMMON_DOCUMENTS%")</condition>
                    </detect>
                </detects>
                <rules>
                    <exclude>
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_PICTURES%\* [*]</pattern>
                            <pattern type="File">%CSIDL_COMMON_MUSIC%\* [*]</pattern>
                            <pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern>
                        </objectSet>
                    </exclude>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_DOCUMENTS%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_DOCUMENTS% [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates My Pictures files -->
        <component type="Documents" context="User">
            <displayName _locID="miguser.mypics">My Pictures</displayName>
            <paths>
                <path type="File">%CSIDL_MYPICTURES%</path>
            </paths>
            <role role="Data">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYPICTURES%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_MYPICTURES% [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Shared Pictures files -->
        <component type="Documents" context="System">
            <displayName _locID="miguser.sharedpics">Shared Pictures</displayName>
            <paths>
                <path type="File">%CSIDL_COMMON_PICTURES%</path>
            </paths>
            <role role="Data">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_COMMON_PICTURES%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_PICTURES%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_PICTURES% [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Favorites -->
        <component type="System" context="User">
            <displayName _locID="miguser.favs">Favorites</displayName>
            <paths>
                <path type="File">%CSIDL_FAVORITES%</path>
            </paths>
            <role role="Settings">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_FAVORITES%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_FAVORITES% [desktop.ini]</pattern>
                            <pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Shared Favorites -->
        <component type="System" context="System">
            <displayName _locID="miguser.sharedfavs">Shared Favorites</displayName>
            <paths>
                <path type="File">%CSIDL_COMMON_FAVORITES%</path>
            </paths>
            <role role="Settings">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_COMMON_FAVORITES%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_COMMON_FAVORITES% [desktop.ini]</pattern>
                            <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates Quick Launch files -->
        <component type="System" context="User">
            <displayName _locID="miguser.quicklaunch">Quick Launch</displayName>
            <paths>
                <path type="File">%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch</path>
            </paths>
            <role role="Settings">
                <detects>
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch [desktop.ini]</pattern>
                            <pattern type="File">%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch\* [*]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>
    
        <!-- This component migrates user files with known extension-->
        <component type="Documents" context="System">
            <displayName _locID="miguser.userdata">User Data</displayName>
            <role role="Data">
                <rules>
                    <include>
                        <objectSet>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.qdf]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.qsd]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.qel]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.qph]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.dot*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.rtf]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.mcw]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.wps]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.scd]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.wri]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.wpd]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.xl*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.csv]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.iqy]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.dqy]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.oqy]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.rqy]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.wk*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.wq1]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.slk]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.dif]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.ppt*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pps*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pot*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.sh3]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.ch3]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pre]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.ppa]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.txt]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pst]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.one*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.vl*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.vsd]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.mpp]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.or6]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.accdb]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.mdb]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pub]", "Fixed")</script>
                        </objectSet>
                    </include>
    <!-- Uncomment the following if you want all the files collected from the above rules to move to <systemDrive>:\data -->
    <!--            
                    <locationModify script="MigXmlHelper.Move('%SYSTEMDRIVE%\Data')">
                        <objectSet>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.qdf]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.qsd]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.qel]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.qph]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.dot*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.rtf]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.mcw]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.wps]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.scd]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.wri]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.wpd]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.xl*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.csv]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.iqy]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.dqy]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.oqy]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.rqy]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.wk*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.wq1]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.slk]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.dif]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.ppt*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pps*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pot*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.sh3]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.ch3]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pre]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.ppa]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.txt]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pst]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.one*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.vl*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.vsd]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.mpp]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.or6]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.accdb]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.mdb]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pub]", "Fixed")</script>
                        </objectSet>
                    </locationModify>
    -->
                    <exclude>
                        <objectSet>
                            <pattern type="File">%PROFILESFOLDER%\* [*]</pattern>
                            <pattern type="File">%CSIDL_WINDOWS%\* [*]</pattern>
                            <pattern type="File">%CSIDL_PROGRAM_FILES%\* [*]</pattern>
                            <!--We are trying to remove system files from other windows installation on the same machine-->
                            <!--This is the best guess we can come up with, in case of these folder name localized, we might not be
                             to do whatever we have intended here-->
                            <script>MigXmlHelper.GenerateDrivePatterns ("\Program Files\* [*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("\Winnt\* [*]", "Fixed")</script>
                            <script>MigXmlHelper.GenerateDrivePatterns ("\Windows\* [*]", "Fixed")</script>
    			<script>MigXmlHelper.GenerateDrivePatterns ("* [*.lnk]", "Fixed")</script>
                        </objectSet>
                    </exclude>
                </rules>
            </role>
        </component>
    
    </migration>


    Thanks, -=Justin=-

    Monday, February 26, 2018 2:12 PM
  • Going to try upgrading to MDT 8450 and see if anything is different.  Still hoping someone has come across this and has some kind of helpful input.  I feel like I'm doing something incorrectly and just missing something semi-obvious

    Thanks, -=Justin=-

    Thursday, March 1, 2018 9:40 PM
  • If you are going to add your own custom xml files, be sure to first specify the default ones and then your custom xml files.

    USMTMigFiles001=MigApp.xml
    USMTMigFiles002=MigUser.xml
    USMTMigFiles003=CustomUser.xml
    USMTMigFiles004=CustomApp.xml


    Personally I don't do offline migrations, mostly because all our machines are encrypted but even then there are things an offline migration can't do.


    Daniel Vega

    Friday, March 2, 2018 4:51 PM
  • 8450 did not fix the issue...  despite Desktop being define (as far as I can tell), there is still no desktop folder in  the .MIG file created by MDT.  back to the drawing board

    Thanks, -=Justin=-

    Friday, March 2, 2018 7:21 PM
  • Aha!  this is important.  I did not realize that we have to define the default files first, and THEN the custom ones...  I'll try that.

    Just to be clear - We're not interested in migrating Apps, just User Data.  So based on what I understand, I only need to have this in my rules, correct?

    USMTMigFiles001=MigUser.xml
    USMTMigFiles002=MigUserAF.xml


    Thanks, -=Justin=-

    Friday, March 2, 2018 7:24 PM
  • USMT doesn't actually migrate an application in that it is not going to be installed on the new/replacement computer, but rather it migrates the application settings.

    Your custom xmls files should not be a repeat of the default USMT files, but rather just include your changes. For example my custom application rules will grab Firefox and Chrome settings. My custom user rules exclude folders such as Box, iCloud because you don't want things like that migrated and then cause errors when they try to sign back into those cloud services.


    Daniel Vega

    Friday, March 2, 2018 7:41 PM
  • ah, that might explain why I'm getting an error code 26 now.  so you're saying that my XML file should only be

    <?xml version="1.0" encoding="UTF-8"?>
    <migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">
    
        <_locDefinition>
         <_locDefault _loc="locNone"/>
         <_locTag _loc="locData">displayName</_locTag>
        </_locDefinition>
    
    MY ADDED STUFF HERE
    
    </migration>


    Thanks, -=Justin=-

    Sunday, March 4, 2018 12:48 AM
  • Here's what my custom app xml looks like

    <?xml version="1.0" encoding="UTF-8"?>
    <migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/customapp">
    
      <library prefix="MigSysHelper">MigSys.dll</library>
    
      <_locDefinition>
        <_locDefault _loc="locNone"/>
        <_locTag _loc="locData">displayName</_locTag>
      </_locDefinition>
    
      <namedElements>
        <!-- Global -->
        <environment name="GlobalEnvX64">
          <conditions>
            <condition>MigXmlHelper.IsNative64Bit()</condition>
          </conditions>
          <variable name="HklmWowSoftware">
            <text>HKLM\SOFTWARE\Wow6432Node</text>
          </variable>
          <variable name="ProgramFiles32bit">
            <text>%ProgramFiles(x86)%</text>
          </variable>
          <variable name="CommonProgramFiles32bit">
            <text>%CommonProgramFiles(x86)%</text>
          </variable>
        </environment>
        <environment name="GlobalEnv">
          <conditions>
            <condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
          </conditions>
          <variable name="HklmWowSoftware">
            <text>HKLM\Software</text>
          </variable>
          <variable name="ProgramFiles32bit">
            <text>%ProgramFiles%</text>
          </variable>
          <variable name="CommonProgramFiles32bit">
            <text>%CommonProgramFiles%</text>
          </variable>
        </environment>
    
        <!-- Global USER -->
        <environment context="USER" name="GlobalEnvX64User">
          <conditions>
            <condition>MigXmlHelper.IsNative64Bit()</condition>
          </conditions>
          <variable name="VirtualStore_ProgramFiles32bit">
            <text>%CSIDL_VIRTUALSTORE_PROGRAMFILES(X86)%</text>
          </variable>
          <variable name="VirtualStore_CommonProgramFiles32bit">
            <text>%CSIDL_VIRTUALSTORE_COMMONPROGRAMFILES(X86)%</text>
          </variable>
        </environment>
        <environment context="USER" name="GlobalEnvUser">
          <conditions>
            <condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
          </conditions>
          <variable name="VirtualStore_ProgramFiles32bit">
            <text>%CSIDL_VIRTUALSTORE_PROGRAMFILES%</text>
          </variable>
          <variable name="VirtualStore_CommonProgramFiles32bit">
            <text>%CSIDL_VIRTUALSTORE_COMMONPROGRAMFILES%</text>
          </variable>
        </environment>
    	
      </namedElements>
    
      <!-- Mozilla Firefox -->
      <component context="UserAndSystem" type="Application">
        <displayName>Firefox</displayName>
        <environment name="GlobalEnv"/>
        <environment name="GlobalEnvX64"/>
        <paths>
          <path type="File">%CSIDL_APPDATA%\Mozilla\Firefox\</path>
        </paths>
        <role role="Settings">
          <detection>
            <conditions>
    	      <condition>MigXmlHelper.DoesObjectExist("Registry","%HklmWowSoftware%\Mozilla\Mozilla Firefox *.*\bin [PathToExe]")</condition>
              <condition>MigXmlHelper.DoesObjectExist("Registry","%HklmWowSoftware%\Mozilla\Mozilla Firefox\*.*\Main [PathToExe]")</condition>
            </conditions>
          </detection>
          <rules context="User">
            <destinationCleanup>
              <objectSet>
                <pattern type="File">%CSIDL_LOCAL_APPDATA%\Mozilla\Firefox\Profiles\*\Cache\* [*]</pattern>
              </objectSet>
            </destinationCleanup>
            <include>
              <objectSet>
                <pattern type="File">%CSIDL_APPDATA%\Mozilla\Firefox\* [*]</pattern>
                <pattern type="File">%CSIDL_LOCAL_APPDATA%\Mozilla\Firefox\Profiles\* [*]</pattern>
              </objectSet>
            </include>
            <exclude>
              <objectSet>
                <pattern type="File">%CSIDL_APPDATA%\Mozilla\Firefox\Crash Reports\* [*]</pattern>
                <pattern type="File">%CSIDL_APPDATA%\Mozilla\Firefox\Profiles\*\ [pluginreg.dat]</pattern>
                <pattern type="File">%CSIDL_LOCAL_APPDATA%\Mozilla\Firefox\Profiles\*\Cache\* [*]</pattern>
              </objectSet>
            </exclude>
            <merge script="MigXmlHelper.SourcePriority()">
              <objectSet>
                <pattern type="File">%CSIDL_APPDATA%\Mozilla\Firefox\* [*]</pattern>
                <pattern type="File">%CSIDL_LOCAL_APPDATA%\Mozilla\Firefox\Profiles\* [*]</pattern>
              </objectSet>
            </merge>
          </rules>
        </role>
      </component>
      
      <!-- Google Chrome -->
      <component context="UserAndSystem" type="Application">
        <displayName>Google Chrome</displayName>
        <environment name="GlobalEnv"/>
        <environment name="GlobalEnvX64"/>
        <role role="Settings">
          <destinationCleanup>
            <objectSet>
              <pattern type="File">%CSIDL_LOCAL_APPDATA%\Google\Chrome\User Data\*\Cache\* [*]</pattern>
            </objectSet>
          </destinationCleanup>
          <detection>
            <conditions>
              <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_LOCAL_APPDATA%\Google\Chrome")</condition>
            </conditions>
          </detection>
          <rules context="User">
            <include>
              <objectSet>
                <pattern type="File">%CSIDL_LOCAL_APPDATA%\Google\Chrome\User Data\* [*]</pattern>
              </objectSet>
            </include>
            <exclude>
              <objectSet>
                <pattern type="File">%CSIDL_LOCAL_APPDATA%\Google\Chrome\User Data\*\Cache\* [*]</pattern>
              </objectSet>
            </exclude>
            <merge script="MigXmlHelper.SourcePriority()">
              <objectSet>
                <pattern type="File">%CSIDL_LOCAL_APPDATA%\Google\Chrome\User Data\* [*]</pattern>
              </objectSet>
            </merge>
          </rules>
        </role>
      </component>
    	
    </migration>


    Daniel Vega

    Monday, March 5, 2018 2:19 PM
  • So, it turns out that after upgrading to 8450, and using the built-in xml files, the migration is happening as I originally expected.  I'm unsure if this was working properly before & I was doing something else that caused the issue, or if there was some kind of update in 8450, but now my rules (in regards to USMT) look like this:

    UserDataLocation=\\AAK8-NAS\MigData$\%ComputerName%
    ScanStateArgs=/ue:*\* /ui:AF\*
    USMTMigFiles001=MigUser.xml
    USMTMigFiles002=MigApp.xml

    After running my ClientReplace TS, I can see that the following folders were sasved to the .MIG file:

    AppData
    Desktop
    Documents
    Favorites
    Music
    Pictures
    Videos

    I just need to get Downloads in  there and I'll be all set.

    Thank you to Dan_Vega for helping to explain how some of this works!


    Thanks, -=Justin=-

    Monday, March 5, 2018 4:31 PM
  • Here's how to get Downloads

    <!-- This component migrates My Downloads files -->
        <component type="Documents" context="User">
            <displayName _locID="miguser.mydownloads">My Downloads</displayName>
            <paths>
                <path type="File">%FOLDERID_DOWNLOADS%</path>
            </paths>
            <role role="Data">
                <detects>          
                    <detect>
                        <condition>MigXmlHelper.DoesObjectExist("File","%FOLDERID_DOWNLOADS%")</condition>
                    </detect>
                </detects>
                <rules>
                    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                        <objectSet>
                            <pattern type="File">%FOLDERID_DOWNLOADS%\* [*]</pattern>
                        </objectSet>
                    </include>
                    <merge script="MigXmlHelper.DestinationPriority()">
                        <objectSet>
                            <pattern type="File">%FOLDERID_DOWNLOADS% [desktop.ini]</pattern>
                        </objectSet>
                    </merge>
                </rules>
            </role>
        </component>


    Daniel Vega

    • Proposed as answer by Dan_Vega Monday, March 5, 2018 6:07 PM
    Monday, March 5, 2018 6:07 PM