Where is My Archive Mailbox Folder?

Microsoft introduced the Personal Archives with Exchange 2010.  In earlier releases of the product, messages were archived using 3rd party utilities.  In addition to eliminating the need for external archiving solutions, this new feature removed the necessity of PST files.  Also, since the Exchange Archive is a mailbox, it’s capable of leveraging built-in replication and high availability features within Exchange.

I won’t go into the details of how messages are processed and archived; there are plenty of articles on this process such as this Microsoft Technet article.  The purpose of this post is to discuss a consideration that must be made when renaming or moving folders in your Primary mailbox, and how that impacts the Personal Archive mailbox.

The Exchange Personal Archive will move emails that are older than X amount of days to the Archive mailbox.  The Retention Policy and its associated Retention tags that are configured and applied to the mailbox will determine when this move occurs.  When messages get moved to the Archive mailbox, a folder with the same name and path as found in the Primary mailbox will be created.  If there are no eligible messages to be archived, then nothing occurs.

However, there are times when folders will get renamed or moved around in the Primary mailbox.  When this occurs with a Primary mailbox folder, the corresponding Archive folder will not get renamed or moved.  Let’s consider the following example where you have a folder in your Primary mailbox called “Client A”, as seen below.


If you rename the “Client A” folder in your Primary mailbox to “Client 1”, the result will be two different folders in your Archive mailbox when items in the renamed folder get archived.

client 1                 client a

Let’s consider another scenario where you move the “Client 1” folder that is located in the Primary mailbox “Current Cases” folder to the “Retired Cases” folder.  The result will be multiple folders in different paths in the Archive mailbox as seen below:

client 3                 client 4

If a user has dozens or more subfolders under his or her Primary mailbox, these routine activities of renaming and moving folders can possibly lead to confusion or the belief that folders are missing.  Although it’s not practical to never rename or move a folder, this has to be kept into consideration when performing such tasks.



Upgrading Legacy Address Lists and Email Address Policies

With the introduction of Exchange 2007 came many new features and improvements that help to improve productivity and management: multiple server roles, a 64 bit architecture, built-in high availabilty features (LCR, CCR, SCR and SCC) and Messaging Records Management just to name a few.  Another change you will notice is with Email Address Policies (EAPs) and Address Lists.

Prior to Exchange 2007, address lists used the LDAP syntax for filtering. When migrating to Exchange 2007 or 2010, the address lists and recipient policies must be updated to use OPATH filters in order to manage them from the Exchange Management Console (EMC).  This article will outline the steps I used to update the EAPs and Address Lists legacy filters on an Exchange 2010 server.  These steps will also work on Exchange 2007.

To start off, the following command must be executed in the Exchange Management Shell to determine which policies are using legacy filters:

Get-EmailAddressPolicy | Format-List Name,*RecipientFilter*,ExchangeVersion

address list

As you can see in the above output, all of the EAP’s with legacy filters are indicated by the “Legacy” value associated with the RecipientFilterType property.  Also, the Exchange Version of “0.0 (6.5.6500.0)” is another indicator.

The Default Policy can be upgraded with the following command. Custom EAP’s and Address Lists will have to be converted manually, which I will explain later in this article:

Set-EmailAddressPolicy “Default Policy” -IncludedRecipients AllRecipients

Upgrading Default Address Lists

Now that we have updated the Default Policy, let’s go ahead and update the Default Address lists.  The following Default Address Lists are present:

  • Default Global Address List
  • All Users
  • All Rooms (In Exchange 2007/2010, this list doesn’t need upgrading)
  • All Contacts
  • All Groups
  • Public Folders

Run the following command to verify the existence of legacy Address Lists:

Get-AddressList | Format-List Name,*RecipientFilter*,ExchangeVersion

address list 2

As we saw with the Default Policy, the values of the RecipientFiltertype and Exchange version properties indicate the presence of legacy filters on the Default Address lists.

Next, run the following commands to update the Default Address Lists to use OPATH filters:

  • All users – Set-AddressList “All Users” -IncludedRecipients MailboxUsers
  • All Groups – Set-AddressList “All Groups” -IncludedRecipients MailGroups
  • All Contacts – Set-AddressList “All Contacts” -IncludedRecipients MailContacts
  • Public Folders – Set-AddressList “Public Folders” -RecipientFilter { RecipientType -eq ‘PublicFolder’ }
  • Default GlobalAddress List – Set-GlobalAddressList “Default Global Address List” -RecipientFilter {(Alias -ne $null -and (ObjectClass -eq ‘user’ -or ObjectClass -eq ‘contact’ -or ObjectClass -eq ‘msExchSystemMailbox’ -or ObjectClass -eq ‘msExchDynamicDistributionList’ -or ObjectClass -eq ‘group’ -or ObjectClass -eq ‘publicFolder’))}

Updating Custom Email Address Policy and Address List Filters

Now that we are done with the Default EAP and Address Lists, let’s move on to the custom policies and lists.  These can be updated manually or by using a script designed by Microsoft.  Once downloaded to the server, open the script in Powershell and several syntax examples will be provided.  The following command should be run first to get the current Legacy filter and suggested OPATH filter with the output redirected to a text file. This will NOT perform a conversion, but only save the old filters in case an issue occurs:

Get-AddressList | WHERE { $_.RecipientFilterType -eq ‘Legacy’ } | foreach { $_.Name + [char]9 + $_.LdapRecipientFilter +[char]9 + (.\ConvertFrom-LdapFilter $_.LdapRecipientFilter) } > C:\suggestedfilters.txt

Next, there are two options to update the Address Lists: one at a time or all at once.  The following command will convert one Address List:

Set-AddressList “My Address List” -RecipientFilter ( .\ConvertFrom-LdapFilter (Get-AddressList “My Address List”).LdapRecipientFilter )

To update all Address Lists and EAP’s at once run the following two commands:

Get-AddressList | WHERE { $_.RecipientFilterType -eq ‘Legacy’ } | foreach { Set-AddressList $_.Name -RecipientFilter (.\ConvertFrom-LdapFilter $_.LdapRecipientFilter) -ForceUpgrade }

Get-EmailAddressPolicy | WHERE { $_.RecipientFilterType -eq ‘Legacy’ } | foreach { Set-EmailAddressPolicy $_.Name -RecipientFilter (.\ConvertFrom-LdapFilter $_.LdapRecipientFilter) -ForceUpgrade }

As a reference, Evan Dodds has a blog post on The Exchange Team Blog site that discusses this process.  However you decide to upgrade the custom Email Address Policies and Address Lists is your choice, whether it’s manually or using the script.  I prefer doing them one at a time. If something goes wrong, only one is affected.  Once these steps are completed, it will be possible to modify the Address Lists with the correct user information in the EMC.