Microsoft Exchange 2010 Archiving Tutorial

Ok so you deployed exchange 2010 and went to play with the archiving only to find there is on the enable and disable features in the exchange management console and the ability to modify the storage quotas. A bit limited I hear you say …. So how exactly do you manage the policies around archiving…. Well Powershell!

This is one of the least well documented features on the web and very little tutorials so this document is an attempt to bring the pieces together in order to help.

Now please not at this stage Archiving is only supported in either OWA on 2010 CAS Servers or Outlook 2010, any previous versions are not currently supported.

Another thing that is very important to note is that the Archiving Mailbox is kept in the same mailbox store as a user’s production mailbox. It is rumoured that service pack 1 for exchange 2010 will allow separation of the archive and production mailbox store.

So to help we are going to break in down into 2 sections which help define archive features.

1. Retention Policies and Retention Policy Tags

2. Configure Archiving For Users

It is important to note at this stage that archiving is actually really message record management which is part of the reason it is hard to find information about it. So lets start!

1. Retention Policies and Retention Policy Tags

To get archiving working there are 2 distinct steps in required. First you must create a Retention Policy Tag, this is the control mechanism which defines what folder it runs on, what happens to the data and what age of items to look for (i.e. 30days, 100days, 365 days)

Then you bind a retention policy tag to a retention policy. You can have multiple retention policy tags to a retention policy BUT you cannot have 2 of the same retention policy tags working on the same folder, for example you cannot have a retention policy tag which archives inbox data every 30days and another retention policy tag that does it every 60days. In this circumstance you would have to have 2 individual retention policies in order to complete this request. You can apply retention policies to both users and groups. This allows for flexible management and deployment.

So to create a Retention Policy Tag you must use the New-Retention PolicyTag CMDLET

Here is the link to Microsoft TechNet for a complete list of everything that you can do with the CMDLET

The general format that you will be using when deploying a retention policy tag is as follows

New-RetentionPolicy Tag “RPT Name” –Type Folder –comment “description of what policy tag does” –RetentionEnabled “value” –AgeLimitRetention No of Days –RetentionAction Action Value

So just to expand on the above CMDLET and valid options we have

For –Type we have the following folder options which could be used

· Calendar

· Contacts

· DeletedItems

· Drafts

· Inbox

· JunkMail

· Journal

· Notes

· Outbox

· Sentitems

· Tasks


· RSSSubscriptions

· SyncIssues

· ConversationHistory

· Personal

It is recommended that if you wish to create a default policy that you use the ALL type to ensure all folders are covered.

For RetentionEnabled we have the following 2 values

· $True

· $Falses

For RetentionAction we have the following options

· MoveToArchive – action moves a message to the user’s archive mailbox.

· MoveToDeletedItems – action moves messages to the Deleted Items folder.

· DeleteAndAllowRecovery – action emulates the behavior when the Deleted Items folder is emptied or the user hard deletes a message.

· PermanentlyDelete – action permanently deletes a message. When this action is applied to a message, it’s purged from the mailbox..

· MarkAsPastRetentionLimit – action marks a message as past the retention limit. Supported Outlook clients (Outlook 2010 and Office Outlook 2007)

So in order to help set these into your memory we will proceed with some examples

Example 1: Create a RPT called AllUserfolders-RPT which moves messages to the archive older than 30 days and works on ALL folders

New-RetentionPolicyTag “AllUserfolders-RPT” -Type All -Comment “Items older then 30days will be moved to Archive” -RetentionEnabled $true -AgeLimitForRetention 30 -RetentionAction MoveToArchive

Example 2: Create a RPT called “AlluserDeletedItems-RPT” which will empty users deleted items every 10 days.

New-RetentionPolicyTag “AlluserDeletedItems-RPT” -Type All -Comment “Empty Deleted Items and permanently delete every 10 days” -RetentionEnabled $true -AgeLimitForRetention 10 -RetentionAction PermanentlyDelete

Ok so now let’s proceed on to Retention Policies. These retention policies allow you to bind multiple retention policy tags together and are what you eventually tie to a user or group.

The complete Microsoft TechNet documentation for this CMDLET can be found here

The format of the command we will be using is

New-RetentionPolicy “NAME” -RetentionPolicyTagLinks “RPT1”,”RPT2

It is fairly intuitive as you can see. You give a descriptive name to the policy and then assign appropriate tags to the following. Let’s give you some examples which will help bed it.

Example 1: Create a new retention policy called General and assign the retention policy tags 1YearInbox-RPT and 30DayEmptyDeleted-RPT

New-RetentionPolicy “General-RP” –RetentionPolicyTagLinks “1YearInbox-RPT”,”30DayEmptyDeleted-RPT”

Example 2: Create a retention policy called HR

New-RetentionPolicy “HR-RP”

Example 3: Add 30DayEmptyDeleted-RPT to Newly Created HR-RP

Set-RetentionPolicy –identity HR-RP –RetentionPolicyTagLinks “30dayEmptyDeleted-RPT”

Ok so now we have finished this section lets proceed to the user configuration side

2. Configuring Archiving For Users

This section of the document is broken down into a couple of sections

So a couple of notes before we start

· OWA 2010 or Outlook 2010 are the only clients supported to view an users archive

· Archiving requires an Exchange Enterprise CAL

· Enabling / Disabling Can be done within the Exchange Management Console

· Assigning a Retention Policy can only be done from Powershell

2.1 Enabling Archiving For a User

Although this can be done in the exchange management console by select the users in recipient configuration à mailbox and selecting the user and then from the action menu on the right hand menu select Enable Archiving

However this is the powershell CMDLET to enable archiving for a user

Set-Mailbox “Mailbox Name” –Archive

If you wish to enable all users on a particular mailbox database for archiving

Get-Mailbox –Database “dbname” | Set-Mailbox –Archive

2.2 Disabling Archiving For a User

Again this can be done in the exchange management console by select the users in recipient configuration à mailbox and selecting the user and then from the action menu on the right hand menu select Disable Archiving

However this is the powershell CMDLET to disable archiving for a user

Disable-Mailbox –Identity “Mailbox Name” –Archive

When you execute this command you will be asked to confirm it. Press Y to confirm.

It is worth noting at this stage then when you disable a user’s archive it should appear in the disconnected mailbox section until the expiration periods on retained mailboxes expires.

2.3 Changing Archive Storage Quota’s

Again this can be done in the exchange management console, go to recipient configuration à mailbox and right click the user and select properties. Go into mailbox settings tab and select Archive Quota and click properties. Click the check boxes and enter the sizes for warning and quota size.

However this is the powershell CMDLET to change a users storage quota

Set-Mailbox –Identity “mailbox name” -ArchiveQuota 2GB –ArchiveWarningQuota 1GB

2.4 Binding a Retention Policy to a User

Now to actually bind a retention policy to a user you will use the following powershell CMDLET

Set-Mailbox “Mailbox Name” –RetentionPolicy “retentionpolicyname

Example 1: Bind the Standard-RP to Steve Jones

Set-Mailbox “Steve.Jones” –RetentionPolicy “Standard-RP”

Don’t be alarmed if things don’t start moving into the archive straight away, every night between 1am and 4am a background maintenance process will run and process information in user’s mailboxes.

If you are impatient like me you can manually start this process again from powershell

Here is the CMDLET to run


This does not require outlook to be logged on as it is ran on the server and archiving happens on the mailbox.

Any comments regarding this article should be directed to