37.8 C
Dubai
Tuesday, April 23, 2024

Creating Shared Calendars in Office 365 and Exchange Server

Let’s see how to create a common  Travel calendar / Vacation Calendar / Public Calendar / Group Calendar using a shared mailbox and create security groups to map owners and reviewers. Please note you need to use PowerShell to achieve the same. It should be simple and easy.

I had to work on this requirement for a company . Where they wanted to plan their vacation on calendars and they don’t want to user resource mailboxes as they don’t want users to look vacation calendars in their resource mailboxes list. So Shared Mailboxes was the perfect option for me.

Was an interesting one. Note in Office 365 and Exchange server calendar permissions doesn’t reflect instantly on Microsoft Outlook. Outlook Web App will take minimal time to Reflect. Lets see how to go about it and achieve the same.

Lets create a Shared Mailbox. (Lets utilize the default calendar within the shared mailbox.)

image

Connect to Exchange Online PowerShell

By default, In Exchange Server and  Office 365 users can view only free busy calendar information items of other users and shared mailboxes.

  • Calendar Default {AvailabilityOnly}
image

For Example you add a shared Calendar to look into some useful information it may look by default. Which is good as default.

Opening Shared calendars via Various Channels

For Specific cases like vacation / travel calendars you need to alter the default permissions.

image

Yearly Vacation

image
New-DistributionGroup -Type Security -Name "Vacation Calendar Reviewers" -Alias "vacationCalendarreviewers"

image

Lets hide it and restrict it.


Set-DistributionGroup vacationCalendarreviewers -HiddenFromAddressListsEnabled $true -AcceptMessagesOnlyFrom vacation@localhost

image

lets create groups for Owners to manage calendars.


New-DistributionGroup -Type Security -Name "Vacation Calendar Owners" -Alias "vacationCalendarowners"

Set-DistributionGroup vacationCalendarowners -HiddenFromAddressListsEnabled $true -AcceptMessagesOnlyFrom vacation@localhost

Add-MailboxFolderPermission -identity "vacation@localhost:\Calendar" -user "vacationCalendarowners" -AccessRights Owner

image

Get-MailboxFolderPermission vacation@localhost:\calendar | Select FolderName,User,AccessRights

image

Lets Add some users to Reviewers and Owners to Check from Exchange Admin Center.


  • Vacation Calendar Owners
  • Vacation Calendar Reviewers

image

You can allow Conflicts if required. You Can disable Recurring Meeting if required.


Set-CalendarProcessing vacation@localhost -AllowConflicts $True -AllowRecurringMeetings $false

image

Just listing below for the Options Available for Example


Set-CalendarProcessing vacation@localhost –ResourceDelegates approver@localhost

Can forward Meeting Requests for Approval



PS C:\WINDOWS\system32> Get-CalendarProcessing vacation@localhost | fl

RunspaceId : c3ea4643-4c65-4bc9-ae41-1a235df05a6c
AutomateProcessing : AutoUpdate
AllowConflicts : False
BookingType : Standard
BookingWindowInDays : 180
MaximumDurationInMinutes : 1440
AllowRecurringMeetings : True
EnforceSchedulingHorizon : True
ScheduleOnlyDuringWorkHours : False
ConflictPercentageAllowed : 0
MaximumConflictInstances : 0
ForwardRequestsToDelegates : True
DeleteAttachments : True
DeleteComments : True
RemovePrivateProperty : True
DeleteSubject : True
AddOrganizerToSubject : True
DeleteNonCalendarItems : True
TentativePendingApproval : True
EnableResponseDetails : True
OrganizerInfo : True
ResourceDelegates : {}
RequestOutOfPolicy : {}
AllRequestOutOfPolicy : False
BookInPolicy : {}
AllBookInPolicy : True
RequestInPolicy : {}
AllRequestInPolicy : False
AddAdditionalResponse : False
AdditionalResponse :
RemoveOldMeetingMessages : True
AddNewRequestsTentatively : True
ProcessExternalMeetingMessages : False
RemoveForwardedMeetingNotifications : False
MailboxOwnerId : Vacation
Identity : Vacation
IsValid : True
ObjectState : Changed


Vacation Calendar Owners can Cancel / Approve / Delete / Create


The Owner role gives full control of the folder. An Owner can create, modify, delete, and read folder items; create subfolders; and change permissions on the folder.


image

Vacation Calendar Reviewers can contact Organizer but not do anything else


image

To Remove Calendar Permission


Remove-MailboxFolderPermission -identity "vacation@localhost:\Calendar" -user "vacationCalendarowners"

Good to Have


  • Owner   -  The Owner role gives full control of the folder. An Owner can create, modify, delete, and read folder items; create subfolders; and change permissions on the folder.
  • Publishing Editor  -  The Publishing Editor role has all rights granted to an Owner, except the right to change permissions. A Publishing Editor can create, modify, delete, and read folder items and create subfolders.
  • Editor  -  The Editor role has all rights granted to a Publishing Editor, except the right to create subfolders. An Editor can create, modify, delete, and read folder items.
  • Publishing Author  -  A Publishing Author can create and read folder items and create subfolders but can modify and delete only folder items that he or she creates, not items created by other users.
  • Author -   An Author has all rights granted to a Publishing Author but cannot create subfolders. An Author can create and read folder items and modify and delete items that he or she creates.
  • Nonediting Author -   A Nonediting Author can create and read folder items but cannot modify or delete any items, including those that he or she creates.
  • Reviewer   -  A Reviewer can read folder items but nothing else.
  • Contributor -   A Contributor can create only folder items and cannot read items.
  • None  -   The None role has no access to the folder.

Other Scenarios _ Please do not use if you don’t have clarity about it.


Get-Mailbox –Database DatabaseName | ForEach-Object {Set-MailboxFolderPermission $_":\calendar" -User Default -AccessRights Reviewer}
Add-MailboxFolderPermission -Identity vacation:\calendar -User Resource Calendar Owners -AccessRights Owner
Get-Mailbox -Resultsize Unlimited | ForEach-Object {Set-MailboxFolderPermission $_":\calendar" -User Default -AccessRights Reviewer}
Import-Csv users.csv | foreach {Add-MailboxFolderPermission -Identity "user@localhost:\calendar" -User $_.alias -AccessRights Owner }
Satheshwaran Manoharan
Satheshwaran Manoharanhttps://www.azure365pro.com
Award-winning Technology Leader with a wealth of experience running large teams and diversified industry exposure in cloud computing. From shipping lines to rolling stocks.In-depth expertise in driving cloud adoption strategies and modernizing systems to cloud native. Specialized in Microsoft Cloud, DevOps, and Microsoft 365 Stack and conducted numerous successful projects worldwide. Also, Acting as a Technical Advisor for various start-ups.

Related Articles

1 COMMENT

  1. Hi.
    Thank you for this manual. I choose this as a example for our ”Reminder” calendar for our team.
    We would like to use it as a tool , which should tell us not to forget to do something in advance. For example, order Antivirus licence. We can see Reminder calendar, we can edit Reminder calendar in outlook calendar. Now the problem .We are missing pop up messages and we have to always open this calendar.This is not automatically in my calendar. This pop up message works in my calendar, but not in Reminder calendar. Did I chose wrong example or something is not properly configured. Thank you very much for helpful answer.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

× How can I help you?