Enable External Users for booking and adding Exchange Room Calendars
If you want to allow external users for booking and adding your Exchange room calendars in Outlook, you have to do the following two steps for the specified Room Mailbox.
It doesn’t matter if the Room Mailbox is homed in Exchange Online or On-Premises, the cmdlets are available in on-premises Exchange and in the cloud-based service.
Fist we will need to allow anonymous access to the calendar free and busy time for the specific room. After that anyone who knows the URL can add the calendar in Outlook. By default the DetailLevel is set to AvailabilityOnly so that external users can’t see meeting details.
To determine the actual settings you can enter the following cmdlet by using the on-premise Exchange Management Shell or in case the room mailbox is homed in Exchange Online, the Exchange Online PowerShell V2 module.
For Exchange Online …
if not already installed, you first need to install the Exchange Online PowerShell V2 module.
https://www.powershellgallery.com/packages/ExchangeOnlineManagement/2.0.5Install-Module -Name ExchangeOnlineManagement -RequiredVersion 2.0.5
Import-Module ExchangeOnlineManagement
$credential = Get-Credential
Connect-ExchangeOnline -Credential $credential -ShowProgress $true
In my case the room mailboxes are homed in Exchange on-premises and my lab environment, which is also configured as Exchange Hybrid Classic Full, where some of the mailboxes are homed in Exchange Online and some in on-premises.
About how to configure Exchange Hybrid Classic Full, you can read my following post.
So now as mentioned I will first check the actual settings for the specified room about anonymous access to the room calendar free and busy time as follows.
[PS] C:Windowssystem32>Get-MailboxCalendarFolder Room1:Calendar | Select *publish* PublishEnabled : False PublishDateRangeFrom : ThreeMonths PublishDateRangeTo : ThreeMonths PublishedCalendarUrl : PublishedICalUrl : [PS] C:Windowssystem32>
As PublishEnabled is set to False, I will need to enable anonymous access for this calendar as follows.
[PS] C:Windowssystem32>Set-MailboxCalendarFolder Room1:Calendar -PublishEnabled $true [PS] C:Windowssystem32>
Another check will show me the permission levels and URLs to access the published calendar. The PublishedCalendarUrl can be used to open the calendar in a browser and the PublishedICalUrl can be used to add the calendar in Outlook.
[PS] C:Windowssystem32>Get-MailboxCalendarFolder Room1:Calendar RunspaceId : 2160cacc-adaf-????-????-c5e19c9e14f5 Identity : braintesting.de/Braincourt/Resources/Room 1:Calendar PublishEnabled : True PublishDateRangeFrom : ThreeMonths PublishDateRangeTo : ThreeMonths DetailLevel : AvailabilityOnly SearchableUrlEnabled : False PublishedCalendarUrl : http://mail.braintesting.de/owa/calendar/04c12????????????23bc7@braintesting.net/941??????????????????00e935 354?????????1317579/calendar.html PublishedICalUrl : http://mail.braintesting.de/owa/calendar/04c1????????????????bc7@braintesting.net/94?????????????????100e935 35????????????317579/calendar.ics ExtendedFolderFlags : SharedViaExchange, ExchangePublishedCalendar ExtendedFolderFlags2 : CalendarSharingFolderFlags : None CalendarSharingOwnerSmtpAddress : CalendarSharingPermissionLevel : Null SharingLevelOfDetails : None SharingPermissionFlags : None SharingOwnerRemoteFolderId : AAA= IsValid : True ObjectState : Changed [PS] C:Windowssystem32>
The second and last step is to enable process external meeting, which allows external senders to make bookings in the room mailbox calendar by inviting it to the appointment.
First you can list all your Room Mailboxes as follows.
[PS] C:Windowssystem32>Get-Mailbox -RecipientTypeDetails RoomMailbox Name Alias ServerName ProhibitSendQuota ---- ----- ---------- ----------------- Room 1 Room1 mail Unlimited Room 2 Room2 mail Unlimited Room 3 Room3 mail Unlimited [PS] C:Windowssystem32>
To check if Calendar Processing is still enabled or not for the specified room calendar, you can enter the following cmdlet
[PS] C:Windowssystem32>Get-Mailbox "Room 1" | Get-CalendarProcessing | Select *external* ProcessExternalMeetingMessages ------------------------------ False [PS] C:Windowssystem32>
Finally you can enable Calendar Processing for the room calendar as follows.
[PS] C:Windowssystem32>Get-Mailbox "Room 1" | Set-CalendarProcessing -ProcessExternalMeetingMessages $true [PS] C:Windowssystem32>
From now on external users can add the room calendar in their Outlook and invite the calendar for appointments as room.
The calendar will accept or reject the request, based on the availability of the room and its policies.
In order to enable automatic accept or decline of booking request, be sure to select the option Accept or decline booking requests automatically as follows.
Links
Set-MailboxCalendarFolder
https://docs.microsoft.com/en-us/powershell/module/exchange/set-mailboxcalendarfolder?view=exchange-ps
Set-CalendarProcessing
https://docs.microsoft.com/en-us/powershell/module/exchange/set-calendarprocessing?view=exchange-ps