How to Import PST Files into Mailboxes with Exchange 2010 SP1

In a recent article we looked at how to export mailboxes to PST file with Mailbox Export Requests for Exchange Server 2010 SP1.  In this article we’ll look at the process for importing PST files into mailboxes.

In Exchange Server 2010 SP1 importing PST files into mailboxes is performed using Mailbox Import Requests. These are similar to export requests in that they are processed by a Client Access server.

Because multiple Client Access servers can exist in a site there is no way to determine which one will process the request, therefore the PST file to import must be accessible via the UNC path of shared folder.

The account that is performing the import also needs to be explicitly granted the rights to do so, as no accounts have this right by default (even Organization administrators).

Granting User Rights for Mailbox Imports in Exchange 2010 SP1

The first step is to grant the right to import mailboxes to an account in your organization.  In the Exchange Management Shell run the following command.

New-ManagementRoleAssignment –Role "Mailbox Import Export" –User Administrator

If you’re logged with that user already simply restart your Exchange Management Shell session to be granted access to the new cmdlets.

Creating a Network Share for Mailbox Imports in Exchange 2010 SP1

Next we need to create the network share that will be used as the file path for the PST files to be imported.  All that is required here is a network share that the Exchange Trusted Subsystem group has read/write permission to.

Importing a PST File with an Exchange Server SP1 Mailbox Import Request

To import a PST file to a mailbox we use the New-MailboxImportRequest cmdlet.  In this example the PST file alan.reid.pst is being imported into John Smith’s mailbox.

[PS] C:\>New-MailboxImportRequest -FilePath \\esp-ho-ex2010a\pst\alan.reid.pst -Mailbox john.smith

In some cases you might prefer to import the PST file into sub-folder of the mailbox. You can do this by adding the -TargetRootFolder parameter to the command.

[PS] C:\>New-MailboxImportRequest -FilePath \\esp-ho-ex2010a\pst\alan.reid.pst -Mailbox john.smith -TargetRootFolder "Mailbox - Alan Reid"

The import request will create the target folder and begin importing the PST file contents into it.

You can view the status of the mailbox import request using the Get-MailboxImportRequest cmdlet.

[PS] C:\>Get-MailboxImportRequest

Name                                           Mailbox                                        Status
----                                           -------                                        ------
MailboxImport                                  exchangeserverpro.net/Company/Users/Head Of... InProgress

By piping Get-MailboxImportRequest into Get-MailboxImportRequestStatistics you can also monitor the progress of the import.

[PS] C:\>Get-MailboxImportRequest | Get-MailboxImportRequestStatistics

Name                                   Status                    TargetAlias                           PercentComplete
----                                   ------                    -----------                           ---------------
MailboxImport                          InProgress                john.smith                            10

Importing PST Files into Personal Archives in Exchange Server 2010 SP1

Another way to use mailbox import requests is to import PST files directly into personal archive mailboxes. This is very useful for organizations who want to get rid of all PST files on the network.  All you need to do is add the -IsArchive parameter to the command when importing the PST file to a mailbox user who has been enabled for archiving.

[PS] C:\>New-MailboxImportRequest -FilePath \\esp-ho-ex2010a\pst\archive.pst -Mailbox alan.reid -IsArchive

Completing the Mailbox Import Request

When a mailbox import request is completed it remains on the server until it is removed by an administrator using Remove-MailboxImportRequest.

To see all of the completed mailbox import requests run this command.

[PS] C:\>Get-MailboxImportRequest | where {$_.status -eq "Completed"}

Name                                           Mailbox                                        Status
----                                           -------                                        ------
MailboxImport                                  exchangeserverpro.net/Company/Users/Head Of... Completed

And to clear all completed mailbox import requests from Exchange run the following command.

[PS] C:\>Get-MailboxImportRequest | where {$_.status -eq "Completed"} | Remove-MailboxImportRequest
About Paul Cunningham

Paul is a Microsoft Exchange Server MVP and publisher of Exchange Server Pro. He also holds several Microsoft certifications including for Exchange Server 2007, 2010 and 2013. Connect with Paul on Twitter and Google+.

Comments

  1. Hi Paul,

    How would I go about diagnosing a failed import? The import runs fine until it gets to 57% and then fails and it would be helpful if there was a log I could view to figure out what exactly happened.

    Thanks!

  2. Hi, i get the following message when trying to import an exported ex2007 mailbox, into ex2010 sp1 in hosting mode.
    Object ’3d9698d3f25d4a4dad22740f22ef1c82gunnar-MailboxImport’ in organization : the linked object of property ‘MailboxMoveTargetUser’ is ‘hosting.local/Microsoft Exchange Hosted Organizations/site1/gunnar test’, which doesn’t exist in the same organization with the object.
    + CategoryInfo : NotSpecified: (0:Int32) [New-MailboxImportRequest], DataValidationException
    + FullyQualifiedErrorId : 5B85B487,Microsoft.Exchange.Management.RecipientTasks.NewMailboxImportRequest

    Any ideas?

  3. Wise Brown says:

    Hi Paul,

    Thanks for sharing this useful post. It is really a very helpful feature for Exchange administrators. Now they do not need to go for MS Outlook and can directly import the data into Mailbox.

    Brown

  4. I have calendar items to import to multible mailboxes. (Work Holidays)
    Have exported already and works with individual mailboxes but I need to import to 400 mailboxes. Is there a group, database or mailbox server command I can add.

  5. I found out the hard way that OWA does not display Contacts or Calendars if you have imported from a PST into an Online Archive after migration. We just did Notes to Exchange migration, where every Notes mailbox was exported first to PST, then ingested to an Online Archive. All users are to be using OWA and not the full Outlook Client. So no Contacts and no Calendars in OWA.

    We’re having login to 250 Outlook clients manually tonight and drag and drop Contacts from Online Archive to Main Mailbox.

    I just started 10 of them and will be up all night :(….know of a quicker way to copy Contacts from Onlline Archive to Main Mailbox????

    Others beware….cheers

  6. Thanks for this great tutorial

  7. Gordy Rampling says:

    Paul, thanks for blogging this procedure. Much appreciated

    G

  8. Hi Paul,

    Nice article, thank you!

    One question – imported mail seems to have the date / time of import as the Sent date for example, in both OWA and Outlook. If you actually open a mail item the correct dates are shown, but when you’re looking at the list of imported items everything is listed by import date. Any solution to this?

    Cheers,
    Brian

    • Hi Brian, which version of Outlook?

      I’ve just exported an Exchange 2010 mailbox to PST, then imported it to another 2010 mailbox, and looked at the result in Outlook 2007. The “Received” column shows the correct date the email was received. The “Created” column shows today’s date only.

  9. Hi Paul,

    We need to import several psts into a mailbox using a script that creates subfolders to store each pst but some are not working we get Error: Mailbox folder hierarchy is inconsistent. / FolderHierarchyIsInconsistentPermanentException. Any idea how to fix this o be able to import the file?
    Exchange 2010

    Thanks!

  10. Tim Miller says:

    Can you tell me how I would use -TargetRootFolder to specify something deeper than one level? Inbox\Subfolder\AnotherSubfolder?

    Thanks for the article. I refer to it regularly.

  11. when i try export PST file to Exchange server 2010

    by this command:

    New-MailboxImportRequest -FilePath “\\fs01\\test@carservice.ge.pst” -Mailbox carservice

    Unable to open PST file ‘\\fs01\\test@carservice.ge.pst’. Error details: Access to the path ‘\\fs01\\test@carservice.ge.pst’ is denied.
    + CategoryInfo : NotSpecified: (0:Int32) [New-MailboxImportRequest], RemotePermanentException
    + FullyQualifiedErrorId : 9F6BF012,Microsoft.Exchange.Management.RecipientTasks.NewMailboxImportRequest

    this account have FULL ACCESS to this folder, please help me :(

    • This doesn’t look like a valid UNC path to me:

      ‘\\fs01\\test@carservice.ge.pst’

      You seem to be missing the share name in that path, eg

      ‘\\fs01\sharename\test@carservice.ge.pst’

  12. Oliver Shelton says:

    Hi Paul

    I’m importing from a pst created in Outlook 2007 where all mail is delivered to a pst file into our
    new exchange 2010 server.

    Using the command New-MailboxImportRequest -mailbox oliver -filepath \\freenas\tmp\oliver.pst
    The import completes successfully and looking at the Get-MailboxImportRequestStatistics I can see all of the subfolders of the Inbox being imported. However, when I fire up outlook 2010 I cant see any subfolders of the
    Inbox, and no emails within inbox too. The sent, deleted, drafts, contact, calendar are all appearing ok.

    There doesnt seem to be any sync issues and outlook says All folders are up to date and Connected to Microsoft Exchange. On properties of Inbox, the folder size – local data zero, on the server its near 1GB with all of the subfolders showing.

    Any ideas? Thanks.

  13. Your tutorials are brilliant and always exactly what I am looking for. Shot Paul!

  14. Nino Iaccarino says:

    Hi Paul,

    Thanks for your help with your articles. I quite often use your site as a reference….

    I have a question, I setup 2010 exchange, migrated IT dept to 2010, tested for a few weeks, imported our psts into our new archive db, no worries.

    Now that we have done the migration, i have just done a new import to a users archive db using the -IsArchive switch form pst. it completed 100%, but the mail still hasn’t shown up in the archive db in either outlook or webmail.

    Is there any post processing after this is completed do you know? Ours (IT Dept) showed up relatively quickly i think, but to be honest, i am not sure i checked it immediately with ours. It was just there when we checked.

    Is there a way to gather statistics of the personal archive db of mail storage ?

    Thanks !

    • Nino Iaccarino says:

      Please disregard my earlier post. I was taking a colleagues “word” for “the mail is not appearing”… it is appearing of course.. Thank you !

  15. Hi Paul,

    This article would appear to be a manual process to import each PST. We have around 700 PST’s consuming around 500GB on our fileserver, and that’s not even accounting for PST’s which may be (properly) stored locally. We also have a department which began storing the messages individually as .msg to bypass their mailbox quotas. What automation tools exist to ease the burden of importing all of these PST’s and .msg files into archive mailboxes on Exchange 2010 SP2?

    Also, we are considering switching from locally hosted to Exchange Online for cost savings; how would the procedure work if we already were using Exchange Online?

    Thanks for your help!

    Jim

  16. Can this scenario applying on Exchange SP2

  17. I spoke with C2C regarding their PST Enterprise product and it seems well designed. But they want ~$8 per (active & inactive) mailbox, ~$2 per (active + inactive) mailbox first year maintenance, and ~$800 for implementation assistance. That’s almost $18K for us for a one-time project, which seems unreasonable considering we’d be paying for the ability for all mailboxes to be supported when it’s likely only 1/7-1/8th of those mailboxes have PST’s.

  18. Nino Iaccarino says:

    Hi Paul,

    I am stil struggling with how to import multiple .PST files into an Archive DB. I have a question open on TechNet and I am trying to get the final working command together but I thought I would ask you also.

    First, I set the filepath with the following – $filepath=\\server\outlook psts”
    Second, I load the items into $items with the following – $items=Get-Childitem -path $filepath -filter *.pst

    Then, I am stuck. I should then be able to use those variables with the New-MailboxImportRequest command, but I cant grasp it. I am so close, yet so far away. Think I need to go on a Powershell Course to master the basic fundamentals.

    Cheers!

    • Take a look at Example 3 on this page:

      http://technet.microsoft.com/en-us/library/ff607310(v=exchg.141).aspx

      • Nino Iaccarino says:

        Hi Paul, thanks for your quick reply. I have come across that command actually but I have a problem where the .pst files are not named after the user and are simply archive.pst or archive1.pst

        I have one user for example and she has 20 different .pst files named all different names. Unfortunately I am not in a perfect world scenario. I wish I was!! Hehe

        I would just like to specify a path, and specify a mailbox for it to import too. This is what I am finding very difficult to find info on especially when I am not a powershell expert :/ Surely there is a simple way to do this given how powerful powershell is?

      • Nino Iaccarino says:

        Hi Paul,

        With the help from Evan on the TechNet forums, I managed to get the command I was after and thought I should share it here. To import *pst files located in a directory directly into an Archive DB you can use the following command.

        $filepath=”\\servername.domain.com\Pstfolder”
        $items=get-childitem -path $filepath
        foreach($item in $items){
        $location=$filepath+”\”+$item.Name
        New-MailboxImportRequest -mailbox username -isarchive -filepath $location}

        Cheers and thanks for your help !

  19. Great write-up Paul.

  20. Michael Beaucourt says:

    Hi all,

    I am using New-MailboxImportRequest to import 70 GB of mailboxes (about 40 mailboxes). I run a powershell script with around 40 lines of New-MailboxImportRequest . THe server start importing the mailboxes but also start consuming ALL available free memory. The server becomes very slow because all memory gets used. The import will finish after 14 hours but in the meantime the server is unusable. I presume this is some kind of memory leak. Any idea how to solve this problem? I am still in a test phase so not in production yet. Any suggestions would be really appreciated.

    Thanks.

    Michael

  21. First, I find your site is the number one go-to site for Exchange knowledge. Thanks for taking the time to do this.

    Second, can I get a little more detail on how the New-MailboxImportRequest works? Specifically, we know that it is the CAS server that handles MAPI requests. So does this command use MAPI to import the PSTs, and if so, is there a way to specify which CAS you want the command to use for the import? If not, how does the command know which CAS to use?

    Thanks

  22. Thanks for your article, but I have one question, regarding New-MailboxImportRequest

    1. I have import a pst file to a mailbox successfuly on day 1st.
    2. on day 2nd i recreate the pst file using startdate and enddate filter, so if i import again it to the user mailbox will it delete the old mailbox record, or update it with the last pst items content.

    e.g:
    User mailbox 1st import from pst file .. Items in inbox was 230
    Again export the usermailbox from 2007 exchange with startdate and enddate filter to create pst file,

    if again i import this pst file to that specific mailbox with was done a day before with inbox item 230, will that mailbox item will be updated let suppose from 230 to 250 , if the last pst file contain only 20 inbox item.

    • You’re asking if importing a second PST file will completely wipe out the items that are already in the mailbox?

      No it won’t.

      However… “By default, the import checks for duplication of items and doesn’t copy the data from the .pst file into the mailbox or archive if a matching item exists in the target mailbox or target archive.”

  23. Hello,

    How can I import Item in PST’s subfolder into ‘Inbox’ folder ?
    All Item are in differents Subfolders, and I want to import them on one and unique mailbox folder.

    • Thanks for this post.

      About my question, ‘how to import all mail from PST in unique mailbox-folder’, I found another solution.
      In fact, I’m using mail archiver Appliance, I setup this Appliance to parse all mailbox’s folders and it ran.
      So, in my Appliance, I’ve got all mail from all folders.

  24. Hi

    Great article, very helpful, however, I have a problem – after importing .psts from accounts of an old domain I have users who get bouncebacks from internal users even though the address exists. It seems to be that the legacy email address is recognised rather than the new address – the emai addresses are EXACTLY the same, but there seems to be some AD information behind it causing issues. If I select the user from the GAL it works fine, but if i type it in it fails.

    Has anyone else seen this problem, and does anyone know a resolution?

  25. I ran “New-MailboxImportRequest -Mailbox “me” -FilePath “\\path\file.pst” and then noticed the permissions set on Inbox, Contacts and Calendar have all be wiped (or probably set to the same as the pst had).
    I found this http://support.microsoft.com/kb/2783959 that confirms this happens, has no one else experienced it?
    I’ve tried adding “-TargetRootFolder Inbox/pst”, that works and doesn’t change the permissions but it also includes other folders like Delete Items, Drafts etc, we only want the inbox and do want it merged in with the users existing inbox. Any ideas for that?

  26. Hi Paul

    Is it possible to import pst files into another PST file rather than the users mailbox or archive?

    We have migrated from Notes to Exchange and team archives have spilt into multiple smaller .pst files which we don’t want to store on the server.

    • Not with native Exchange tools. Maybe some third party tools exist for that but to be honest the marketplace for PST file tools is a minefield of scams and terrible applications.

  27. thanks for this paul. i am getting stuck somewhere though. when running the command New-MailboxImportRequest i keep getting the error New-MailboxImportRequest’ is not recognized as the name of a cmdlet, function, script file, or operable program.
    How do you resove this in Exchange 2010 powershell?

  28. Does anyone know when importing PSTs if it will replace existing items?

    My task is to move a bunch of users and I want to do it in 2 operations. The first one is the most of the data a few weeks before the move and then the second the day of the move? Will the import-pst only process new items?

  29. Again… Thanks very much Paul

  30. Thanks for this life saving article… I say life saving because I deleted an AD account and it also wiped the user’s mailbox. This account contained 10 yrs worth of mail which I was able to recover. Using the .ost file and a 3rd party utility I was able to make a .pst file and using your article import it into Exchange.
    Unfortunately all calendar entries have bogus dates which makes them useless and contacts did not import at all.

    Is this an issue with the import procedure or should I look to my .ost to .pst conversion?

  31. Hmm, it didn’t show a disconnected mailbox for this user within the Exchange Mgmt Console when I realized I deleted it but now it does.

    Do you think I should delete the mailbox I’m currently trying to restore since the 6gb of mail did restore from the .ost? Will it create duplicate mails when I reconnect the mailbox?

    Thanks for the revelation… hope it works!!

    • Thanks again Paul!! I deleted the mailbox I was trying to restore and then connected the disabled mailbox using the connect-mailbox cmd and using the mailboxGuid to discern between the original mailbox and the one I just deleted.

      It is syncing to the server now and I have calendar and contacts.

      I effing love you, man!!

Leave a Comment

*

We are an Authorized DigiCert™ SSL Partner.