Migrating from Windows XP to Windows 8.1 using MDT 2013


Most people using MDT at this point have made the migration to Windows 7 and are looking at MDT 2013 to help with getting to Windows 8.1.  But there are a number of stragglers who are looking to go directly from Windows XP to Windows 8.1 (and hopefully finishing that by April 2014 when Windows XP support expires).

The challenge with this scenario is that some of the tools released as part of the ADK for Windows 8.1 don’t support Windows XP.  That includes the User State Migration Tool (version 6.3) and BOOTSECT.EXE, one of the core deployment tools used to put a new boot sector onto an existing Windows XP device so that it can boot a modern OS.

Fortunately, there are workarounds for these two challenges.  In the case of USMT, you can use the previous version from the ADK for Windows 8 to capture the user state and the new version from the ADK for Windows 8.1 to restore it.  And for BOOTSECT.EXE, you can just use the older version from the ADK for Windows 8 as it still runs on Windows XP.

So the real question then is “how do you get MDT to use these older versions,” since it only supports the ADK for Windows 8.1 and the tools included in it.  That requires a little work.  Let’s review the steps.

  1. Replace ZTIUserState.wsf in your MDT 2013 deployment share “Scripts” folder with the one from the attached zip file.  (Don’t try to put this script in any other version of MDT, older or newer.  It’s only designed for MDT 2013.  Feel free to compare the file with the original version to see the changes that I made.)
  2. Install the ADK for Windows 8 on a Windows 7 or Windows 8 system.  You only need to select two components, Deployment Tools and User State Migration tool (which will make the download much faster):
    image
  3. Copy the USMT files from the system with the ADK for Windows 8 to the deployment share:
    XCOPY "C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\User State Migration Tool\x86" "\\SERVER\DeploymentShare$\Tools\x86\USMTX"
    XCOPY "C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\User State Migration Tool\amd64" "\\SERVER\DeploymentShare$\Tools\x64\USMTX"
  4. Make a backup copy of the existing BOOTSECT.EXE executables from the ADK for Windows 8.1 installation folders (C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\<platform>\BCDBOOT\bootsect.exe).
  5. Copy the BOOTSECT.EXE executables from the ADK for Windows 8 to the computer running MDT 2013, replacing the version from the ADK for Windows 8.1:
    COPY "C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Deployment Tools\x86\BCDBoot\bootsect.exe" "\\Server\C$\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\x86\BCDBoot\bootsect.exe"
    COPY "C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Deployment Tools\amd64\BCDBoot\bootsect.exe" "\\Server\C$\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\amd64\BCDBoot\bootsect.exe"
  6. Update the deployment share (which will copy the “older” BOOTSECT.EXE from the ADK folders to the deployment share when it detects that the date/time is different on the file).

A few comments on this setup:

  • You might ask why the USMT files are being copied into the USMTX folder.  Well, there are two parts to that:
  • MDT 2013 puts USMT 6.3 into the USMT 5 folder.  This is a carry-over from MDT 2012 Update 1.  While MDT was updated to pull the new USMT 6.3 from the ADK, it didn’t change where it put it.  Hence, it reused the USMT5 folder for USMT 6.3.
  • The ZTIUserState.wsf script uses the last character of the folder name (e.g. “5” from a folder named “USMT5” or “X” from a folder named “USMTX”) in various places.  Painfully obvious after I initially tried to use “USMT5.0” as the old version and things didn’t work right.  (I’d like to blame someone else for that logic, but it’s quite possible that I wrote it that way…)
  • You might also ask why you can’t just copy the BOOTSECT.EXE executable into the deployment share directly.  This is because MDT is smart enough to recopy the file from the ADK folder any time it changes in size or timestamp.  So if you don’t replace the version in the ADK folder, you’ll find the file gets overwritten with the newer one and breaks things again.
  • I’ve only tried this with Lite Touch deployments.  The ZTIUserState.wsf script is also used with MDT-created UDI task sequences in ConfigMgr 2012 R2, performing an offline USMT capture.  In that scenario, the script uses whatever USMT package was configured in the task sequence; it doesn’t select one dynamically based on the original OS.  So you would likely need to do some different work to get this to work.  See the ConfigMgr blog at http://blogs.technet.com/b/configmgrteam/archive/2013/09/12/how-to-migrate-user-data-from-win-xp-to-win-8-1-with-system-center-2012-r2-configmgr.aspx for more information on the general approach needed there.  (You would have to consciously replace the ZTIUserState.wsf script in the MDT toolkit files package anyway to get it to use this new script.  The steps above will only affect the Lite Touch deployments from the deployment share that you update.)
  • The attached ZTIUserState.wsf will only work with MDT 2013 – I have no idea if it will work with previous versions of MDT, but then again previous versions don’t support Windows 8.1 anyway so there’s really no need to try.  I would also not suggest trying to use this script with any newer versions of MDT either.  (Fortunately Windows XP will be unsupported before a new version of MDT would be released anyway.)
  • If by chance you are using MDT on an x86 OS instead of an x64 OS, you’ll need to change the “Program Files (x86)” path to just “Program Files” in the above steps.

Remember, if you are still running Windows XP, you’re running out of time – April is right around the corner…

ZTIUserState.zip


Comments (33)

  1. Anonymous says:

    I need a design change done by a hotfix to Windows 8 and Windows 7 to move from Windows XP.

  2. Anonymous says:

    Did USMT change, besides just adding support for 8.1, in MDT 2013?

  3. Michael Niehaus says:

    I have no idea what that comment means 🙂

  4. Anonymous says:

    amazing! Thank you very much!

  5. Michael Niehaus says:

    It sounds like it rebooted into Windows PE like it was supposed to, but now the Windows PE session isn’t able to see the hard drive (the MININT folder) to figure out where it left off. Is it possible Windows PE doesn’t contain a mass storage driver for the hardware you are deploying? When you see the MDT wizard, press F8 and see if you can see the disk volume(s).

  6. Michael Niehaus says:

    The KB (http://support.microsoft.com/kb/2910552) fixes an issue that occurs in some ConfigMgr scenarios described in the ConfigMgrTeam blog mentioned above. Not sure on the other issues, without more information from the BDD.LOG.

  7. Michael Niehaus says:

    BOOTSECT is the only problematic executable; it runs in Windows XP, while the rest are used from Windows PE.

  8. Michael Niehaus says:

    See http://blogs.technet.com/b/configmgrteam/archive/2013/09/12/how-to-migrate-user-data-from-win-xp-to-win-8-1-with-system-center-2012-r2-configmgr.aspx for the ConfigMgr story. You can certainly follow the same basic steps with an MDT-created ConfigMgr task sequence.

  9. heresjaken says:

    This post is great, I have bookmarked it and will try a migration from an xp computer in my lab soon.
    Thanks

  10. blyons1607 says:

    Michael, by replacing the BOOTSECT.EXE, how will this affect other types of migrations? Sure, it works for a migration of XP to Windows 8.1, but will replacing it affect Windows 7 to Windows 8.1 migrations?

  11. Michael Niehaus says:

    BOOTSECT.EXE is only used when staging a Windows PE boot image to computer currently running Windows XP. So it has no impact on any other scenarios (it’s not necessary on machines running Vista or later).

  12. James Escober says:

    Hi Michael. Have followed your steps. Was able to passed thru the user state capturing, but when the computer restarts it no longer boots into the OS. Weird that it boots into MDT like when you boot the computer using the bootable media. Hope you could help out. Many thanks.

  13. Anonymous says:

    Pingback from Migration Windows XP vers Windows 8.1 avec MDT 2013 | Deploiement Windows

  14. Anonymous says:

    Pingback from Migration Windows XP vers Windows 8.1 avec MDT 2013 | Deploiement Windows

  15. Anonymous says:

    Pingback from Migration Windows XP vers Windows 8.1 avec MDT 2013 | Deploiement Windows

  16. Anonymous says:

    Pingback from Migration Windows XP vers Windows 8.1 avec MDT 2013 | Deploiement Windows

  17. Anonymous says:

    Pingback from Microsoft Offers Help on Windows XP to Windows 8.1 Migrations | TechNewzie

  18. Anonymous says:

    Do konce podpory operačního systému Windows XP zbývají méně než tři

  19. Mash says:

    Will these works with Hardlink migration? from XP to 8.1

  20. Anonymous says:

    MDT2013 integrated TS with CM2012 R2 with Hardlink migration ?

  21. Windows 8 Migration says:

    Very interesting and helpful.
    Windows 8 Update

  22. Andrew Lukaszewski says:

    Hi Michael, there is now an update to address the bootsect.exe issue : http://support.microsoft.com/kb/2910552.

  23. Jesus says:

    when capturing the user state I get an error x86 scanstate not valid in minint

  24. Jesus says:

    hi Michael, and troubleshoot the usmt but after capturing the user gives me the error because it uses winpe 5.0 I can do the same procedure to replace the winpe winpe 5.0 4.0 whole folder?

  25. Anonymous says:

    Josh Condie – Below is a repost from a January 9th BLOG posted by Michael Niehaus in our Windows Product

  26. Anonymous says:

    À quelques jours de la fin du support de Windows XP, j’espère arriver après la bataille pour une majorité

  27. JouniJ says:

    Does USMT support XP in latest ADK Update or is XP support ditched alltogether?

  28. Gary says:

    Do you need to back-level bcdedit.exe if you are migrating from XP to Windows 7? When PE is prestaged in the Restart in PE step in the task sequence, I know you need to back-level bootsect.exe but what about BCDEdit and bootmgr?

  29. Hi Michael,

    I am using the same process as per you. USMT taking backup properly but its dosen`t restore the user data to its original Locations. suppose that we have 2-3 (C,D,E) local disk in XP machine , after the Windows 8.1 deployment in C- drive.

    Data of D drive also seen in E drive and data of E drive also seen in D drive after restoring the user state.

    How can we solve this?

    Thanks for such great Blog…

  30. BMagnan says:

    You are a deployment guru, thank you very much!

  31. Arturo says:

    Estimado, en este proceso Windows kit 8.1 integra USMT5 y no es compatible con Windows XP que solucion puedes dar acerca de este problema.

  32. Anonymous says:

    Pingback from Still Using Windows XP? It’s Time to Upgrade Your Operating System | Quickbooks

  33. aw says:

    hai, I just want to tell you that I am just very new to blogs and seriously loved this website. More than likely I’m planning to bookmark your blog post .
    You amazingly come with really good posts. Thanks a lot for sharing your blog Microsoft.

    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Kepulauan%20Riau
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Maluku
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Maluku%20Utara
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Nusa%20Tenggara%20Barat
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Nusa%20Tenggara%20Timur
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Sulawesi%20Barat
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Sulawesi%20Selatan
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Sulawesi%20Tengah
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Sulawesi%20Tenggara
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Sulawesi%20Utara
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Sumatera%20Barat
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Sumatera%20Selatan
    http://www.lokerjobindo.com/search/label/Loker%20Daerah%20Sumatera%20Utara
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Antar%20Daerah
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Artha%20Graha%20Internasional
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Bukopin
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Bumi%20Arta
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20ICB%20Bumiputera%20Indonesia
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Ekononomi%20Raharja
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Ganesha
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Hana
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Himpunan%20Saudara%201906
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20ICBC%20Indonesia
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Index%20Selindo
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20SBI%20Indonesia
    http://www.lokerjobindo.com/search/label/Lowongan%20Kerja%20Bank%20Internasional%20Indonesia