Microsoft’s User State Migration Toolkit (USMT) is a fantastic free tool. It can, however, be a little daunting when you first start trying to use it. It’s relatively easy to run the migration manually, but once you start adding it into an MDT/SCCM Task Sequence it gets quite a bit more complicated.
I first ran into an issue when I tried to customize my USMT scanstate command line. MDT provides a Task Sequence Variable that will allow you to set additional capture options called OSDMigrateAdditionalCaptureOptions. Simple enough right? So I thought when I first tried it, but then my Task Sequence kept failing on the USMT Loadstate portion. I spent a good deal of time trying to figure it out and finally dug up the scanstate and loadstate command linesin the logs and found the problem: The scanstate wasn’t listening to my OSDMigrateAdditionalCaptureOptions. Instead it was listening to my OSDMigrateAdditionalRestoreOptions and the switches were not lining up, which caused it not to be able to restore the capture.
Turns out the order of operations matters in regard to setting the OSDMigrateAdditionalCaptureOptions variable. You must set it prior to the Determine Local or Remote UserState step. Once this was reordered, my Task Sequence, including the User State Migration portion, completed successfully.