Users within an enterprise organization (typically based on their nationality/location) have the option of adding Holidays to their calendar using an Outlook client. If using Outlook 2010, they can open the backstage center, click “Options” and then “Calendar”. Here we find the “Add Holidays…” button.
This is an acceptable solution for most enterprise organizations, but there are situations where you wish to centrally add the Holiday to each users calendar. For instance, in some environments all users or a selected scare of users doesn’t have a thick Outlook client but instead relies on using Outlook Web App (OWA) as their primary e-mail client. As some of you probably know, the OWA client doesn’t allow the user to add Holidays to their calendar.
What to do then? Well, the “New-ExportRequest” and “New-ImportRequest” cmdlets comes to the rescue.
Here are the necessary steps:
- First create an empty user mailbox (in this example I call it ImportHolidays)
- Open the new user mailbox using an Outlook 2010 client
- Click “File” > “Options” > “Calendar”
- Under “Calendar”, click “Add Holidays…”
- Select the locations whose holidays you would like to add to the calendar (in this example I’m interested in adding Denmark)
- Click “OK”
Holidays for the selected location are now being imported
When they have been imported, click “OK”.
Now open an Exchange Management Shell on and type the following command:
Get-MailboxFolderStatistics “ImportHolidays” | FT Name, ItemsInFolder
As can be seen, we have imported 239 calendar items to the calendar folder.
Now it’s time to export the the calendar to a PST file.
By default no one is granted the permissions necessary to import and export data to and from mailboxes in Exchange 2010 SP1, not even users in the Exchange Organization Administrator role group. So before continuing, we need to assign the user or group that we want to grant the necessary permissions to the “Mailbox Import Export” management role.
For instance, to assign the management role to the Administrator account (not really recomemend. You should grant it to a group really), we would use the following command:
New-ManagementRoleAssignment -Name “Import Export Mailbox Admins” –User “Administrator” -Role “Mailbox Import Export”
We can now export the Calendar items of the ImportHolidays mailbox to a PST file using the following command:
New-MailboxExportRequest –Mailbox “ImportHolidays” -FilePath \\EX02\PSTs\ImportHolidays.pst –IncludeFolders “#Calendar#”
The export request should complete in a few seconds.
Now pick a mailbox to import to which you wish to import the Holidays. Run the following command to check how many items that are in the calendar folder of the respective user:
Get-MailboxFolderStatistics “SAlexander” | FT Name, ItemsInFolder
In this example the user has 4 items.
Now run the following command to import the PST file to this mailbox:
New-MailboxImportRequest –Mailbox “SAlexander” -FilePath \\EX02\PSTs\ImportHolidays.pst –IncludeFolders “#Calendar#”
Again it should only take a few seconds to import the PST to a single mailbox. To very the import request has completed, run the following command:
Now let’s open an Outlook client and verify we can see the Holiday items in the calendar.
Now your next question would probably be how you import the Holiday items to user mailboxes in bulk? Well, to answer that question I recommend you check out my deep dive articles series (more specifically part 2) that explains how you use the New-MailboxImportRequest and New-MailboxExportRequest cmdlets introduced with Exchange 2010 SP1.
You can also use the above method in an Exchange 2007 or Exchange 2003 environment. However for Exchange 2007 you must use the “Import-Mailbox” and “Export-Mailbox” cmdlets (see this article) and for Exchange 2003 you would need to use the good old ExMerge tool.
Technology Architect/Writer/MS Vendor
MCM: Exchange 2007 | MVP: Exchange Architecture
5 thoughts on “Centrally Adding Location Specific Holidays to Exchange 2010 Calendars”
If you do this, all permissons are lost!!!
How can in solve this problem below :
The term 'New-MailboxExport' is not recognized as the name of a cmdlet, function, script file, or operable program.
please answer me as soon as you see my comment,
Why can't I export the Calendar items of the ImportHolidays mailbox to a PST file using the comman that you give above? it tells that the "New-MailboxExportRequest" is not recognized as the name of cmdlet.
Please tell me what to do about it
Nice, but can you allso help removing the entrys we have from .HOL file in all calendars ?
“This is acceptable for most enterprises”. I may be wrong, but I question the accuracy of this statement. Most enterprise organizations do not give employees time off for every holiday that gets added with the default Outlook settings.
Again, perhaps this is just my experience…but seems that most companies want to be able to add *company* holidays to calendars, not the generic and extensive list of all holidays.
Because there does not seem to be a good or easy way to accomplish this task, I have seen most enterprises settle for publishing a list of company holidays and expecting each user to individually add these to their calendars. 15 – 30 minutes per user for 2000 users = 500 – 1000 wasted man hours!
It would be really fantastic if Microsoft will provide a simple way to centrally add company holidays to all employee calendars.