How to correctly share a Calendar from within MS Office 365

Ugo MenaTechnology Director
Published:
Updated:
I have participated in a number of questions regarding how to setup a shared calendar within Microsoft's Cloud based Exchange service otherwise known as Office 365.

After many trials that ended in missing calendar entries and other errors, it has been determined that most methods out there do not work as intended. What makes this even more frustrating for Exchange admins, is that many sites, including MS, have mixed up the instructions for Exchange 2003, 2007, 2010 and O365, leaving one looking for settings, check-boxes and windows that do not exist.

So based on what has worked. I have written the following information to show the correct way to set up a shared calendar within Office 365.

Part 1. Office 365 Admin

Login to the Office 365 Admin portal for your organization. To the left of your login name, you will note an ADMIN dropdown tab that gives you access to the following Admin Centers (based on your subscription/licensing model):
Office 365, Exchange, Lync, and Sharepoint.

Using the ADMIN dropdown, switch to the Exchange Admin Center. You should see "Exchange admin center" on the top left of your browser window.  

Go to Recipients > Shared > and use the + icon to add a new Shared Mailbox.
Fill-in the required fields:

    Display name
    Email address

Within Mailbox Delegation settings, Grant Full Access permissions to any Admin users that will serve as calendar admins (if any). You can use the CTRL key to select multiple users. Grant the Send As permissions to everyone you would like to have access to the shared calendar

NOTE: The Full Access permission allows a user to open the mailbox as well as create and modify items in it. The Send As permission allows anyone other than the mailbox owner to send email from this shared mailbox. Both permissions are required for successful shared mailbox operation.

Click Save to save your changes and create the shared mailbox.

Logout of the Office 365 Admin portal and open up your Active Directory module for Windows Powershell.

Part 2. Windows PowerShell

Windows PowerShell is a task-based command-line shell and scripting language designed especially for system administration. You can learn more about it here:
http://technet.microsoft.com/en-us/scriptcenter/dd793612

To get the right permissions to see and add Calendar events to your shared Calendar, you will need to dig into the specific folder permissions using Powershell. There is so much to know and learn about with Powershell, so I will only go into what is needed...

For hosted Office 365 environments the following Powershell cmdlets will get you logged into your backend/hosted Exchange servers.

From a Powershell command prompt (i.e. mine looks like this:  PS C:\Windows\system32>) You don't type in that command prompt, just everything after :

PS C:\Windows\system32>  $O365Cred = Get-Credential

Open in new window

You should get a standard Windows login prompt, Enter your admin credentials and you should be returned back to command prompt.

Now redirect your session to the cloud server(s) by typing the following:

PS C:\Windows\system32> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365 -Authentication Basic -AllowRedirection

Open in new window


You should get a warning message stating your connection has been redirected to the above ConnectionUri. Now type the following to allow the remote server's Powershell cmdlets to execute.

PS C:\Windows\system32> Set-ExecutionPolicy Unrestricted

Open in new window

 
You will get another warning about Execution Policy Change and prompted to accept the policy change. Enter Y to allow.

Now import the remote PS session using the following command:
PS C:\Windows\system32> Import-PSSession $Session

Open in new window

You should see the remote Powershell cmdlets importing and may get warnings about local vs. remote command overlaps.

Now your ready to start extending your shared mailbox folder permissions! I will be assuming that you are applying standard Author and/or Reviewer Access rights to your shared calendar.

Here is the PS cmdlet to grant users Author access rights. You should replace the "sharedAccount@yourOrg.com" after -Identity AND the "user@yourOrg.com" after -User with the appropriate info for your specific setup. The ":\Calendar" setting assumes you are sharing the shared mailbox account's default Calendar.

PS C:\Windows\system32> Add-MailboxFolderPermission -Identity sharedAccount@yourOrg.com:\Calendar -User user@yourOrg.com -AccessRights Author

Open in new window


When successfully executed the server will re-iterate the information you just assigned as an inline table (i.e FolderName, User, AccessRights).

Reviewer Access rights are setup using the following cmdlet:

PS C:\Windows\system32> Add-MailboxFolderPermission -Identity sharedAccount@yourOrg.com:\Calendar -User user@yourORg.com -AccessRights Reviewer

Open in new window


You will need to enter the Author/Reviewer commands for each user that you would like to extend the specific permissions to within the shared calendar.

Exit Powershell by entering exit ie:
PS C:\Windows\system32> exit

Open in new window


Part 3. Add Calendar to Outlook

Methods to add a shared calendar into Outlook varies based on the OS and specific version of Outlook being used.

In any case, to get the shared Calendar to show up within your version of Outlook, you should be able to use the buttons at the top of the Calendar interface.

Click on Open Calendar, then either click on Name to find the person in the Global Address List or type in their email address in the box provided.

Click "OK" button to open the calendar. If you have correct permissions to view this calendar, it will appear on the left.

I hope this helps anyone having the same problems we did trying to share an Events and Out Of Office Calendar within our organization.
8
38,167 Views
Ugo MenaTechnology Director

Comments (4)

Commented:
You guys were missing a key piece in this command:

PS C:\Windows\system32> $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365 -Authentication Basic -AllowRedirection

The -Credential $O365 variable is wrong as it should have been coded $O365Cred, see very first command that you mentioned...

$O365Cred = Get-Credential

Also for some reason my LOCAL ADMIN account had permission issues with the Powershell registry entries.  I had to change your command to... Set-ExecutionPolicy Unrestricted -Scope CurrentUser

Thank you though this has helped... My client had 759 entries in their calendar as they have been using it for some time... It seems that it will take over 1 hour to list entries of the old calendar to the new one.
Ugo MenaTechnology Director

Author

Commented:
@ RusGeek-Thanks for adding to this article. Although I don't agree that there is any information missing when setting up the remote powershell session with the following command:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365 -Authentication Basic -AllowRedirection

Open in new window


Please see the attached screenshot showing the whole session from start to finish.

FYI, the information is still relevant using the Azure Active Directory Powershell Module
Powershell-to-Office365.pdf
Coriron HazDirector

Commented:
Is there a way to add sharing permissions to a group of users at the same time? (i suspect this would be a security group).

I want to share one users calendar with multiple users
Ugo MenaTechnology Director

Author

Commented:
Yes, it appears that it can be done, however the Security group must be Universal (Cannot be Domain or local).

Add users to this security group.

In Exchange, add a new distribution group and select this new Security group as the target group.

After the group has been enabled as an "email enabled security group" you can assign the permissions for the person's calender to the group using this command:

   
add-MailboxFolderPermission -Identity USERID:\Calendar -User Sercuritygroupname -AccessRights Owner

Open in new window


Probably will want to hide this group from the Global Address List to prevent errant emails from going to this group

Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.