<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The USMT team blog</title><link>http://blogs.technet.com/b/usmt/</link><description>Tips and tricks on using the User State Migration Tool</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Next USMT release</title><link>http://blogs.technet.com/b/usmt/archive/2008/08/06/next-usmt-release.aspx</link><pubDate>Wed, 06 Aug 2008 14:43:38 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3101145</guid><dc:creator>tdolan</dc:creator><slash:comments>19</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/usmt/rsscomments.aspx?WeblogPostID=3101145</wfw:commentRss><comments>http://blogs.technet.com/b/usmt/archive/2008/08/06/next-usmt-release.aspx#comments</comments><description>&lt;p&gt;I wanted to take a moment here on the blog to let everyone know that we are continuing to invest in USMT and have aligned the next USMT release to coincide with the next release of Windows.&amp;#160; Please be assured that all of you will be the first to know when we have more information to share with you.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3101145" width="1" height="1"&gt;</description></item><item><title>Thanks</title><link>http://blogs.technet.com/b/usmt/archive/2008/07/21/thanks.aspx</link><pubDate>Mon, 21 Jul 2008 21:04:27 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3092061</guid><dc:creator>tdolan</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/usmt/rsscomments.aspx?WeblogPostID=3092061</wfw:commentRss><comments>http://blogs.technet.com/b/usmt/archive/2008/07/21/thanks.aspx#comments</comments><description>&lt;p&gt;Thanks for all of your suggestions in the comments on the post &amp;quot;What do you want to see here? Any ideas?&amp;quot; that went live on July 3rd.&amp;#160; I am working on a post to address some of the questions in the comments regarding the config.xml file.&amp;#160; Hopefully I will be able to get this up for you in the next week or so.&amp;#160; In the meantime, if you have any other post suggestions, please drop us a comment.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3092061" width="1" height="1"&gt;</description></item><item><title>What version of USMT can be installed on Windows Server 2003 or 2008?</title><link>http://blogs.technet.com/b/usmt/archive/2008/07/10/what-version-of-usmt-can-be-installed-on-windows-server-2003-or-2008.aspx</link><pubDate>Thu, 10 Jul 2008 16:30:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3079701</guid><dc:creator>tdolan</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/usmt/rsscomments.aspx?WeblogPostID=3079701</wfw:commentRss><comments>http://blogs.technet.com/b/usmt/archive/2008/07/10/what-version-of-usmt-can-be-installed-on-windows-server-2003-or-2008.aspx#comments</comments><description>&lt;P&gt;Unfortunately, there isn't a version of USMT that can be installed or executed on Windows Server 2003 or 2008.&amp;nbsp; As noted on the download page and in the user documentation, USMT is only supported on client versions of Windows.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3079701" width="1" height="1"&gt;</description></item><item><title>What do you want to see here?  Any ideas?</title><link>http://blogs.technet.com/b/usmt/archive/2008/07/03/what-do-you-want-to-see-here-any-ideas.aspx</link><pubDate>Thu, 03 Jul 2008 19:14:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3079736</guid><dc:creator>tdolan</dc:creator><slash:comments>14</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/usmt/rsscomments.aspx?WeblogPostID=3079736</wfw:commentRss><comments>http://blogs.technet.com/b/usmt/archive/2008/07/03/what-do-you-want-to-see-here-any-ideas.aspx#comments</comments><description>&lt;P&gt;Is anyone out there?&amp;nbsp; Is there anything you'd like to see a blog post about?&amp;nbsp; &lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;I can’t guarantee that we will answer your question but I can promise that we will try.&lt;/SPAN&gt;&amp;nbsp; Drop a comment and let us know.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3079736" width="1" height="1"&gt;</description></item><item><title>Increasing MigXML efficiency </title><link>http://blogs.technet.com/b/usmt/archive/2008/06/26/all-about-migration-performance.aspx</link><pubDate>Fri, 27 Jun 2008 01:37:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3063096</guid><dc:creator>tdolan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/usmt/rsscomments.aspx?WeblogPostID=3063096</wfw:commentRss><comments>http://blogs.technet.com/b/usmt/archive/2008/06/26/all-about-migration-performance.aspx#comments</comments><description>&lt;P&gt;Increasing the efficiency of MigXML is all about making each individual include or exclude pattern as specific as possible and ensuring that the component operates in the proper context.&amp;nbsp; For example, the following component is &lt;STRONG&gt;extremely&lt;/STRONG&gt; expensive to include in a migration:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;lt;component type="Documents" context="UserAndSystem"&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;displayName _locID="All Word Documents"&amp;gt;User Data&amp;lt;/displayName&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;role role="Data"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;rules&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;objectSet&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script&amp;gt;MigXmlHelper.GenerateDrivePatterns ("* [*.doc*]", "Fixed")&amp;lt;/script&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/objectSet&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/include&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/rules&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/role&amp;gt; &lt;BR&gt;&amp;lt;/component&amp;gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This component searches the entire directory structure of each fixed drive on the system for Word documents to include in the migration, in both user and system context (as covered in the post on &lt;A href="http://blogs.technet.com/usmt/archive/2008/06/12/about-context-in-migxml.aspx" mce_href="http://blogs.technet.com/usmt/archive/2008/06/12/about-context-in-migxml.aspx"&gt;&lt;FONT color=#669966&gt;context&lt;/FONT&gt;&lt;/A&gt;, this search will be executed n+1 times where n is the number of users on the machine selected for migration).&amp;nbsp; How expensive is it?&amp;nbsp; Well, lets try running Scanstate a few times to find out.&lt;/P&gt;
&lt;P&gt;I added this component to the file expensive.xml and built the following command line:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;ScanState.exe /i:expensive.xml /all c:\perfStore /c /o /i:miguser.xml /v:13&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I then executed the above three times with the following variations:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;As above, no variations 
&lt;LI&gt;With the context of the &lt;EM&gt;All Word Documents&lt;/EM&gt; component changed to be only System 
&lt;LI&gt;Without expensive.xml on the command line &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;On the same Vista SP1 machine with five user accounts that I ran the examples for the &lt;A href="http://blogs.technet.com/usmt/archive/2008/06/12/about-context-in-migxml.aspx" mce_href="http://blogs.technet.com/usmt/archive/2008/06/12/about-context-in-migxml.aspx"&gt;&lt;FONT color=#669966&gt;context&lt;/FONT&gt;&lt;/A&gt; migration post on.&amp;nbsp; I found the following results:&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=248 border=1 unselectable="on"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top align=middle width=62&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top align=middle width=184&gt;&lt;STRONG&gt;ScanState Runtime (sec)&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top align=middle width=66&gt;(1) &lt;/TD&gt;
&lt;TD class="" vAlign=top align=middle width=184&gt;264.5&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top align=middle width=70&gt;(2)&lt;/TD&gt;
&lt;TD class="" vAlign=top align=middle width=184&gt;217.6&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top align=middle width=73&gt;(3)&lt;/TD&gt;
&lt;TD class="" vAlign=top align=middle width=184&gt;186.1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;The reduction in total runtime from (1) to (3) works out to be 30%!&amp;nbsp; Although I have not run this test on another machine, I can reasonably assure you that the runtime difference between each test will be even greater on a machine that has more user data than this one.&amp;nbsp; Also, in the case of the machine that I ran these tests on, the exact same set of files and settings migrate in each the these three cases despite the differences in XML and overall runtime.&amp;nbsp; This is because this particular machine only contains Word documents within each user's profile (eg, c:\users\tdolan\*).&amp;nbsp; Since MigUser.xml migrates all data under user profiles, the addition of the &lt;EM&gt;All Word Documents&lt;/EM&gt; component won't add any files to the migration.&amp;nbsp; All adding it does is require ScanState to do more searching before determining that it has a complete set of files for migration.&lt;/P&gt;
&lt;P&gt;So, what should we take away from this?&amp;nbsp; Writing efficient MigXML rules can increase migration performance.&amp;nbsp; This comes in the following forms:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Selecting the proper context for each component 
&lt;UL&gt;
&lt;LI&gt;For the most part, only components with user specific environment variables should be user context (eg, %CSIDL_MYMUSIC% and others as seen in MigUser.xml) 
&lt;LI&gt;For the most part, only components that need to search the whole system should be in system context 
&lt;LI&gt;UserAndSystem context should only be used when you are sure that User or System context alone isn't appropriate &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Reducing the overlap among components.&amp;nbsp; Overlap among components (having the same files migrate from more than one component) reduces performance without impacting the migration.&amp;nbsp; This happened in the above example in two ways: 
&lt;UL&gt;
&lt;LI&gt;Placing the &lt;EM&gt;All Word Documents &lt;/EM&gt;component in anything other than System context is a waste since doing so only results in the same search being executed multiple times 
&lt;LI&gt;The &lt;EM&gt;All Word Documents&lt;/EM&gt; component was unnecessary on my test system since the only Word documents it found were already migrating per MigUser.xml &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Making patterns as specific as possible.&amp;nbsp; For example: 
&lt;UL&gt;
&lt;LI&gt;&amp;lt;pattern type="&lt;B&gt;File&lt;/B&gt;"&amp;gt;C:\* [*doc]&amp;lt;/pattern&amp;gt; : This is about as bad as it gets (short of using the GenerateDrivePatterns helper as above).&amp;nbsp; ScanState must search the drive for ONLY .doc files and discard everything else. 
&lt;LI&gt;&amp;lt;pattern type="&lt;B&gt;File&lt;/B&gt;"&amp;gt;C:\Data\* [*doc]&amp;lt;/pattern&amp;gt; : This is much better since we have restricted the search from above to only be under C:\Data and its subdirectories. 
&lt;LI&gt;&amp;lt;pattern type="&lt;B&gt;File&lt;/B&gt;"&amp;gt;C:\Data\* [*]&amp;lt;/pattern&amp;gt; : From a processing perspective, this is the best.&amp;nbsp; There isn't any searching required; ScanState just knows that the entire C:\Data directory must migrate.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Following these guidelines should help you write more efficient and MigXML rules that will yield better performance.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3063096" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/usmt/archive/tags/files/">files</category><category domain="http://blogs.technet.com/b/usmt/archive/tags/MigXML/">MigXML</category><category domain="http://blogs.technet.com/b/usmt/archive/tags/context/">context</category><category domain="http://blogs.technet.com/b/usmt/archive/tags/performance/">performance</category></item><item><title>Why you need to be careful with /c</title><link>http://blogs.technet.com/b/usmt/archive/2008/06/19/why-you-need-to-be-careful-with-c.aspx</link><pubDate>Thu, 19 Jun 2008 10:52:45 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3059565</guid><dc:creator>tdolan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/usmt/rsscomments.aspx?WeblogPostID=3059565</wfw:commentRss><comments>http://blogs.technet.com/b/usmt/archive/2008/06/19/why-you-need-to-be-careful-with-c.aspx#comments</comments><description>&lt;p&gt;Scanstate and Loadstate both allow the /c switch to be used to skip non-fatal errors.&amp;#160; However, due to the impact that using it can have on a migration, great caution must be used when deploying Scanstate and Loadstate with /c.&amp;#160; To get started, here is what the help content has to say:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;When specified, ScanState will continue to run even if there are nonfatal errors. Without the /c option, ScanState exits on the first error. &lt;strong&gt;&lt;em&gt;When you specify this option, any files or settings that cause an error and are ignored will be logged in the progress log&lt;/em&gt;&lt;/strong&gt;. For example, if there is a large file that will not fit in the store, ScanState will log an error and will continue with the migration. In addition, if a file is open or in use by an application, USMT may not be able to migrate the file and will log an error. (emphasis mine) &lt;a href="http://technet2.microsoft.com/WindowsVista/en/library/1bda9646-043c-4e02-b4aa-9650197ca54a1033.mspx"&gt;Link&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;When specified, LoadState will continue to run even if there are nonfatal errors. Without the /c option, LoadState exits on the first error. &lt;strong&gt;&lt;em&gt;When you specify this option, any files or settings that cause an error and are ignored will be logged in the progress log&lt;/em&gt;&lt;/strong&gt;. For example, if a file is open or if there is a large file that will not fit on the destination computer, LoadState will log an error and will continue with the migration. (emphasis mine) &lt;a href="http://technet2.microsoft.com/WindowsVista/en/library/988d6435-748e-4420-9fce-0fd70108685d1033.mspx"&gt;Link&lt;/a&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So, what can we take away from this?&amp;#160; Bottom line, when specifying /c on the command line you are telling Scanstate and Loadstate that it is ok for them continue even when they can't migrate any number of files or registry keys.&amp;#160; Also, this behavior is not configurable in any way.&amp;#160; That is to say that both executables will continue no matter the importance or quantity of the data left behind.&lt;/p&gt;  &lt;p&gt;However, this is not to say that /c should't be used.&amp;#160; Each time a file is skipped with /c a note is made in the log indicating so.&amp;#160; This enables scenarios in which these files are gathered separately, if important, either manually or with a script.&amp;#160; We have talked to folks who have done both.&amp;#160; The important thing here is to understand exactly what /c does and ensure that it fits into the scenario in which you use USMT. &lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3059565" width="1" height="1"&gt;</description></item><item><title>About context in MigXML</title><link>http://blogs.technet.com/b/usmt/archive/2008/06/12/about-context-in-migxml.aspx</link><pubDate>Thu, 12 Jun 2008 12:30:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3056414</guid><dc:creator>tdolan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/usmt/rsscomments.aspx?WeblogPostID=3056414</wfw:commentRss><comments>http://blogs.technet.com/b/usmt/archive/2008/06/12/about-context-in-migxml.aspx#comments</comments><description>&lt;P&gt;If you have written a fair amount of migration MigXML you have probably noticed that there are a number of elements that take a context parameter.&amp;nbsp; Do you understand what this parameter controls?&amp;nbsp; Do you understand the impact that it can have on your migration?&amp;nbsp; We will work through a couple of examples here to address these questions.&lt;/P&gt;
&lt;P&gt;Before we get started, lets talk about some background info.&amp;nbsp; Although context is a parameter in a number of elements, lets focus this discussion on the impact of the context parameter in the &amp;lt;component&amp;gt; element.&amp;nbsp; This element is commonly used to encapsulate logical units of file or path based &amp;lt;include&amp;gt; and &amp;lt;exclude&amp;gt; rules.&amp;nbsp; So, as an example, if I stored a bunch of files located on the root of my C drive, I would author a single include rule that would be encapsulated in a &amp;lt;component&amp;gt; tag.&lt;/P&gt;
&lt;P&gt;However, the context parameter accepts the following values:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;User &lt;/LI&gt;
&lt;LI&gt;System &lt;/LI&gt;
&lt;LI&gt;UserAndSystem &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Which one should I use?&amp;nbsp; Lets try each value and see what the result is.&lt;/P&gt;
&lt;P&gt;To setup this experiment I made sure that my Vista SP1 machine had multiple (five) total users and I placed a single MP3 file (PowersCombine.mp3) on the root of my C drive.&amp;nbsp; So, I wrote the following MigXML to migrate the PowersCombine.mp3:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;lt;component type="Documents" context="System"&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;displayName&amp;gt;Component to migrate mp3 file on the c drive&amp;lt;/displayName&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;role role="Data"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;rules&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;objectSet&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;pattern type="File"&amp;gt;C:\ [PowersCombine.mp3]&amp;lt;/pattern&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/objectSet&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/include&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/rules&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/role&amp;gt; &lt;BR&gt;&amp;lt;/component&amp;gt; &lt;BR&gt;&amp;lt;/migration&amp;gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;and ran Scanstate including all users on the machine and the rule outlined above:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;ScanState.exe /i:mp3.xml /o /c /all c:\RuleTest /v:13&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;After Scanstate finished running I opened up the log to take a look at how the migration went.&amp;nbsp; After a little searching I found the part that references the &lt;STRONG&gt;&lt;EM&gt;processing&lt;/EM&gt;&lt;/STRONG&gt; of migration rule that I wrote:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;System&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive'&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Next, I modified the MigXML rule such that it would operate in User context and ran the migration again.&amp;nbsp; I found the following in the Scanstate log:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;test2&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive' &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;test1&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive' &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;tdolan&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive' &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;Administrator&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive' &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;tjdolan&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive'&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Finally, I modified the MigXML rule such that it would operate in UserAndSystem context and ran the migration again.&amp;nbsp; I found the following in the Scanstate log:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;test2&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive' &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;test1&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive' &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;tdolan&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive' &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;Administrator&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive' &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;tjdolan&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive' &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;gt; Processing GATHER for migration unit: &lt;STRONG&gt;&amp;lt;System&amp;gt;&lt;/STRONG&gt;\Component to migrate mp3 file on the c drive (CMXEAgent) &lt;BR&gt;&amp;gt; Activity: 'MIGACTIVITY_MIGUNIT_GATHER' &lt;BR&gt;&amp;gt;&amp;nbsp; Argument 1: 'Component to migrate mp3 file on the c drive'&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;In comparing the context that the rule ran in, and the number of times the log notes the rule was processed we can understand how the context parameter impacts a migration.&amp;nbsp; Let's break down the results for each log sample:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;In system context the rule was only processed only once, for the system &lt;/LI&gt;
&lt;LI&gt;In user context the rule was processed five times, once for each user on the system &lt;/LI&gt;
&lt;LI&gt;In userandsystem context the rule was processed five times, once for each user on the system and once for the system its self &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Now, you may be wondering, why do we need the rule to be processed this many times?&amp;nbsp; Does the number of times the rule is processed impact the number of times the file is migrated?&lt;/P&gt;
&lt;P&gt;To answer the easy question first, no, the number of times the rule is processed has no bearing on the number of times the file is migrated.&amp;nbsp; When processing a rule multiple times results in the same files being migrated the migration engine ensures that each files only migrates once.&amp;nbsp; Well, what about the case when processing the rule multiple times results in different files migrating?&amp;nbsp; The answer to this question actually answers the earlier question on why we might want these rules to be processed multiple times.&amp;nbsp; Lets take a look at a sample from MigUser.xml:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;lt;!-- This component migrates My Music files --&amp;gt; &lt;BR&gt;&amp;lt;component type="Documents" context="User"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;displayName _locID="miguser.mymusic"&amp;gt;My Music&amp;lt;/displayName&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;paths&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;path type="File"&amp;gt;%CSIDL_MYMUSIC%&amp;lt;/path&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/paths&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;role role="Data"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;rules&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;merge script="MigXmlHelper.DestinationPriority()"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;objectSet&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;pattern type="File"&amp;gt;%CSIDL_MYMUSIC%\ [desktop.ini]&amp;lt;/pattern&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/objectSet&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/merge&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/rules&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/role&amp;gt; &lt;BR&gt;&amp;lt;/component&amp;gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;By operating in user context and using the %CISDL_MYMUSIC% environment variable this single section can migrate the My Music folder for &lt;STRONG&gt;&lt;EM&gt;every&lt;/EM&gt;&lt;/STRONG&gt; user on the machine.&amp;nbsp; Pretty cool, huh?&amp;nbsp; So, the context that is attached to a component should be chosen such that the component is only processed as many times that it needs to be processed.&amp;nbsp; In the example we stepped through earlier in the post, the appropriate context to choose would have been System.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3056414" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/usmt/archive/tags/files/">files</category><category domain="http://blogs.technet.com/b/usmt/archive/tags/MigXML/">MigXML</category><category domain="http://blogs.technet.com/b/usmt/archive/tags/context/">context</category></item><item><title>Why you want (and need) to run USMT from an account directly associated with the local administrators group</title><link>http://blogs.technet.com/b/usmt/archive/2008/06/12/why-you-want-and-need-to-run-usmt-from-an-account-directly-associated-with-the-local-administrators-group.aspx</link><pubDate>Thu, 12 Jun 2008 03:18:17 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3069699</guid><dc:creator>tdolan</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/usmt/rsscomments.aspx?WeblogPostID=3069699</wfw:commentRss><comments>http://blogs.technet.com/b/usmt/archive/2008/06/12/why-you-want-and-need-to-run-usmt-from-an-account-directly-associated-with-the-local-administrators-group.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;UPDATE: &lt;/strong&gt;&lt;em&gt;a &lt;/em&gt;&lt;a href="http://blogs.technet.com/usmt/archive/2008/05/29/why-you-want-and-need-to-run-usmt-as-a-local-administrator.aspx"&gt;&lt;em&gt;post&lt;/em&gt;&lt;/a&gt;&lt;em&gt; regarding this topic originally went live on 5/29/2008.&amp;#160; This was written to clarify some questions that come up in comments I received both online and offline.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Although there are a very limited number of scenarios in which USMT can be run without local administrator privileges, doing so ends up not being the most ideal situation.&amp;#160; There are a couple of reasons why:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;USMT needs local administrator privileges to migrate many (if not all) operating system settings &lt;/li&gt;    &lt;li&gt;Without local administrator privileges USMT can only migrate the currently logged in user &lt;/li&gt;    &lt;li&gt;A bug in Vista SP1 prevents USMT from ever running as a local user on a Vista SP1 machine (KB article &lt;a href="http://support.microsoft.com/kb/951024/en-us"&gt;here&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;The &lt;a href="http://technet2.microsoft.com/WindowsVista/en/library/988d6435-748e-4420-9fce-0fd70108685d1033.mspx "&gt;LoadState&lt;/a&gt; and &lt;a href="http://technet2.microsoft.com/WindowsVista/en/library/1bda9646-043c-4e02-b4aa-9650197ca54a1033.mspx "&gt;ScansState&lt;/a&gt; documentation recommend that both tools be run from an account with local administrator privileges &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Due to all the reasons above, as the product team, we strongly recommend that USMT only be executed from a user account that has local administrator privileges (and, if necessary, from an elevated command prompt).&lt;/p&gt;  &lt;p&gt;However, there is an additional complication that must be considered in some cases.&amp;#160; A bug in USMT 3.x prevents it from recognizing users who have indirectly inherited administrator privileges as actually being an administrator.&amp;#160; Although the rest of the system will consider these users to be an administrator, USMT will not.&amp;#160; This will result in USMT either failing or completing the migration without gathering all the users, files, and settings as it was told to.&lt;/p&gt;  &lt;p&gt;How can you tell if you will encounter this problem?&amp;#160; Is there a work around?&lt;/p&gt;  &lt;p&gt;You can tell if you will encounter this problem by checking the computer management counsel to verify that the user account you will be running USMT from is a direct member of the local administrators group:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Key + R &lt;/li&gt;    &lt;li&gt;Type compmgmt.msc and press enter &lt;/li&gt;    &lt;li&gt;Double click on &amp;quot;Local Users and Groups&amp;quot; &lt;/li&gt;    &lt;li&gt;Click on &amp;quot;Groups&amp;quot; &lt;/li&gt;    &lt;li&gt;Double click on &amp;quot;Administrators&amp;quot; &lt;/li&gt;    &lt;li&gt;Check to see if the user that will be executing USMT appears in the &amp;quot;Administrator&amp;quot; membership list &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If the user account you plan on running USMT from is directly on this list you should be good to go.&amp;#160; However, if it is not, you will likely encounter this bug.&amp;#160; As noted earlier, this bug occurs whenever the user is indirectly a member of the administrators group.&amp;#160; Once of the scenarios in which this is the case in when the user executing USMT is a member of a group that is listed as a member of the administrators group.&amp;#160; In this case, the membership tree might be something like so:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Administrators      &lt;ul&gt;       &lt;li&gt;User1 &lt;/li&gt;        &lt;li&gt;User2 &lt;/li&gt;        &lt;li&gt;GroupA          &lt;ul&gt;           &lt;li&gt;User3 &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Although users 1-3 are all administrators, user 3 won't be recognized as such by USMT due to this bug.&lt;/p&gt;  &lt;p&gt;One work around is to temporary make the user executing USMT directly a member of the administrators group (add them to the group before executing Scanstate or Loadstate and remove them immediately afterwards).&amp;#160; This can be accomplished with a script in numerous ways.&amp;#160; For example, there are many cases where two &lt;a href="http://technet.microsoft.com/en-us/library/bb490706.aspx"&gt;net localgroup&lt;/a&gt; commands should do the trick. However, there are many other valid solutions.&lt;/p&gt;  &lt;p&gt;If you are working with localized machines and choose to develop a script, keep in mind that the well known groups such as Users and Administrators will appear in the associated language (rendering workarounds that depend directly on the group name to fail).&amp;#160; &lt;/p&gt;  &lt;p&gt;Although we don't like it when a work around is necessary to complete a migration, there are times when it is necessary that they be utilized.&amp;#160; Unfortunately, this is one of those times.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3069699" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/usmt/archive/tags/user+accounts/">user accounts</category><category domain="http://blogs.technet.com/b/usmt/archive/tags/bug/">bug</category></item><item><title>Why Scanstate and Loadstate require a top level directory path to a migration store</title><link>http://blogs.technet.com/b/usmt/archive/2008/06/05/why-scanstate-and-loadstate-require-a-top-level-directory-path-to-a-migration-store.aspx</link><pubDate>Thu, 05 Jun 2008 16:56:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3052716</guid><dc:creator>tdolan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/usmt/rsscomments.aspx?WeblogPostID=3052716</wfw:commentRss><comments>http://blogs.technet.com/b/usmt/archive/2008/06/05/why-scanstate-and-loadstate-require-a-top-level-directory-path-to-a-migration-store.aspx#comments</comments><description>&lt;P&gt;If you have played around with USMT a bit you may have noticed that both Scanstate and Loadstate require that StorePath (the path provided on the command line to where you'd like the migration store placed) be simply a path.&amp;nbsp; However, when creating a compressed migration store (the default behavior) Scanstate places the .mig migration store in a subdirectory of StorePath.&amp;nbsp; For example, if run the following command:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Scanstate c:\test_store [... lots of other switches]&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;When complete, my directory structure will be as follows:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Directory of C:\test_store\USMT3 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;03:19 PM&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . &lt;BR&gt;03:19 PM&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .. &lt;BR&gt;03:20 PM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7,833,045 USMT3.MIG &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 File(s)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7,833,045 bytes &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 Dir(s)&lt;/FONT&gt;&amp;nbsp; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;More curiously, Loadstate also expects that StorePath be simply a path to a top level directory -- in fact the same path that was provided to Scanstate.&amp;nbsp; So, in the above example, my Loadstate command line will &lt;STRONG&gt;need to&lt;/STRONG&gt; look like:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Loadstate c:\test_store [... lots of other switches]&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;It &lt;STRONG&gt;can't&lt;/STRONG&gt; look like:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Loadstate c:\test_store\USMT3\USMT3.MIG [... lots of other switches]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;(this will produce an error regarding StorePath being invalid)&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Why doesn't Scanstate or Loadstate allow you skip this forced directory hierarchy and directly handle the .mig file?&amp;nbsp; The reason is simple but subtle.&amp;nbsp; As discussed in a &lt;A href="http://blogs.technet.com/usmt/archive/2008/05/08/what-is-the-user-state-migration-tool.aspx" mce_href="http://blogs.technet.com/usmt/archive/2008/05/08/what-is-the-user-state-migration-tool.aspx"&gt;previous post&lt;/A&gt;, USMT allows two different kinds of migration stores.&amp;nbsp; The first is the compressed migration store covered above, and the second is the uncompressed migration store.&amp;nbsp; Lets come back to this question after we look at the directory structure of an uncompressed migration store.&amp;nbsp; If we run the following command:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Scanstate c:\test_store_unc /nocompress [... lots of other switches]&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We get something like this:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Directory of C:\test_store_unc\USMT3 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;03:46 PM&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . &lt;BR&gt;03:46 PM&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DIR&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .. &lt;BR&gt;03:44 PM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36,357,347 catalog.mig &lt;BR&gt;03:44 PM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2,156,848 MIGSTATE.DAT &lt;BR&gt;03:46 PM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 status.~lg &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 File(s)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 38,514,195 bytes &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 Dir(s)&lt;/FONT&gt;&amp;nbsp; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;By requiring that StorePath be the top level directory we can essentially abstract away the need to specify different paths to different file formats for our different migration store formats.&amp;nbsp; As we can see above, regardless of whether or not I have created a .mig file or both a .dat and .mig file, all I need to know is the top level directory.&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3052716" width="1" height="1"&gt;</description></item><item><title>Why you want (and need) to run USMT as a local administrator</title><link>http://blogs.technet.com/b/usmt/archive/2008/05/29/why-you-want-and-need-to-run-usmt-as-a-local-administrator.aspx</link><pubDate>Thu, 29 May 2008 16:33:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3052701</guid><dc:creator>tdolan</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/usmt/rsscomments.aspx?WeblogPostID=3052701</wfw:commentRss><comments>http://blogs.technet.com/b/usmt/archive/2008/05/29/why-you-want-and-need-to-run-usmt-as-a-local-administrator.aspx#comments</comments><description>&lt;P&gt;&lt;STRONG&gt;UPDATE: &lt;/STRONG&gt;&lt;EM&gt;an updated post is available &lt;A class="" title=here href="http://blogs.technet.com/usmt/archive/2008/06/12/why-you-want-and-need-to-run-usmt-from-an-account-directly-associated-with-the-local-administrators-group.aspx" mce_href="http://blogs.technet.com/usmt/archive/2008/06/12/why-you-want-and-need-to-run-usmt-from-an-account-directly-associated-with-the-local-administrators-group.aspx"&gt;here&lt;/A&gt;.&lt;/EM&gt;&amp;nbsp;&lt;EM&gt;I'm leaving this post up to preserve the post history as well as comments.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Although there are a limited number of scenarios in which USMT can be run without local administrator privileges, doing so ends up not being the most ideal situation.&amp;nbsp; There are a couple of reasons why:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;USMT needs local administrator privileges to migrate many (if not all) operating system settings &lt;/LI&gt;
&lt;LI&gt;Without local administrator privileges USMT can only migrate the currently logged in user &lt;/LI&gt;
&lt;LI&gt;A bug in Vista SP1 prevents USMT from ever running as a local user on a Vista SP1 machine (KB article &lt;A href="http://support.microsoft.com/kb/951024/en-us" mce_href="http://support.microsoft.com/kb/951024/en-us"&gt;here&lt;/A&gt;) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Have I convinced you yet that you always want to run USMT as an local administrator?&lt;/P&gt;
&lt;P&gt;However, if you paid attention to the title of this post, you may be wondering how USMT treats domain administrators.&amp;nbsp; Unfortunately, a bug in USMT 3.0.1 prevents it from running properly when it is executed from a domain administrator account that isn't also a member of the machines local administrator account.&lt;/P&gt;
&lt;P&gt;Thankfully, there is an easy work around for this.&amp;nbsp; However, before we get to the workaround lets discuss how this problem might occur.&lt;/P&gt;
&lt;P&gt;Let's assume that your organization has an account "DomainAdmin" that is a domain administrator on your network.&amp;nbsp; Most likely this user won't be a member of any of the &lt;A href="http://msdn.microsoft.com/en-us/library/aa379649(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa379649(VS.85).aspx"&gt;well known&lt;/A&gt; groups on all of your client machines.&amp;nbsp; However, due to the nature of the domain, this user will have administrator level access on any domain joined client machine.&amp;nbsp; As such, it probably makes a lot of sense to run USMT from this user account (whether manually or automatically).&amp;nbsp; However, this is exactly where this bug crops up.&amp;nbsp; Even though USMT should recognize a domain administrator as having administrator level access to any client machine it doesn't.&amp;nbsp; This will likely result in USMT failing.&lt;/P&gt;
&lt;P&gt;As noted earlier, there is a workaround.&amp;nbsp; All that we need to do is get "DomainAdmin" added to each machines local administrator account, run USMT, and then remove "DomainAdmin" from the local administrator account (if desired, this removal could certainly be optional).&amp;nbsp; Thankfully, the &lt;A href="http://technet.microsoft.com/en-us/library/bb490706.aspx" mce_href="http://technet.microsoft.com/en-us/library/bb490706.aspx"&gt;net localgroup&lt;/A&gt; command can be used in scripts to accomplish just this.&amp;nbsp; For example, the following syntax adds a domain user to the administrators group:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=3&gt;net localgroup administrators %domain%\%user% /add&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;With a small variation we can remove this domain user from the administrators group:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=3&gt;net localgroup administrators %domain%\%user% /delete&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;By creating a script that calls these commands before and after Scanstate or Loadstate you can easily work around this bug.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3052701" width="1" height="1"&gt;</description></item></channel></rss>