We're about to begin a refresh project for about 100 XP Pro laptops and have a concern with regards to the .NK2 file which holds cached email addresses(?). If possible we'd like to have USMT move/migrate this but I can't find anything that confirms that this happens automatically or has been done before. I see lots of manual processes but at this point I'm not sure that we can use that. Has anyone done this or seen this done? Perhaps you can point me to a resource that can give me an idea how its done? Any information would be appreciated. USMT seems to get a lot of the details but missing this part seems odd. Thanks in advance for any responses.

  • Are you also going to Office 2010 and Exchange 2010? Exchange 2010 now provides a server side cache for auto-completion of e-mail addresses. In previous versions such as exchange 2003 and exchange 2007 auto-complete data was stored locally in the outlook profile on the local PC in an NK2 file. Because this auto complete data is stored on the server, it is available to the user regardless which PC they are using. Mar 8, 2011 at 15:38
  • We're moving to Office 2010 but Exchange 2010 is on the near horizon.
    – Mitch
    Mar 8, 2011 at 16:52

2 Answers 2


I did some research and found out that you have to specify the Outlook and Office things in a custom.xml file while migrating.Custom XML examples

I then found a tool where you can generate such a file which also includes NK2 files. The tool is called USMT XML Builder. You can generate with this tool the XML file needed for Office 2003 and Office 2007,which also includes NK2 files (and also a lot more needed for Office)


This can also be done from 2007/2010 to 2013/2016. In order for the nk2 files to import properly they need to have the same outlook profile name. Such as Default Outlook Profile to Outlook. Here is the Syntax you can place in your Custom.XML file.

<!-- Outlook Rename NK2 -->
    <component type="Application" context="User">
    <displayName _locID="custom.Outlook">NK2 filename</displayName>
    <role role="Data">
     <detection name="Office 2007">
      <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_PROGRAM_FILESX86%\Microsoft Office\Office12\outlook.exe")</condition>
    <rules context="User">
        <pattern type="File">%CSIDL_APPDATA%\Microsoft\Outlook\ [Default Outlook Profile.NK2]</pattern>
      <locationModify script="MigXmlHelper.RelativeMove('%CSIDL_APPDATA%\Microsoft\Outlook\ [Default Outlook Profile.NK2]','%CSIDL_APPDATA%\Microsoft\Outlook\ [Outlook.NK2]')">
          <pattern type="File">%CSIDL_APPDATA%\Microsoft\Outlook\ [Default Outlook Profile.NK2]</pattern>

Modify the Default Outlook Profile.Nk2 to Default profile name you have in your organization. Then change it to what you want the profile name to be (here I use Outlook.Nk2).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.