Hidden Capabilities for Processing Room Booking Requests
Microsoft 365 contains so many features that users can be forgiven if they don’t fully understand the capabilities of the applications which are available to them. I guess this situation also exists for on-premises applications like SharePoint Server and Exchange Server too. The point came home to me when an organizer of a recent conference I attended complained about the difficulty of managing a room in the conference center set aside for salespeople to book for customer meetings. An Excel worksheet was the chosen mechanism to control bookings, emailed out to salespeople to allow them to claim 30 minute slots for customer meetings.
The potential for confusion is obvious, not least in conflicts when two salespeople choose the same timeslot. An automated solution would obviously be better, but the user didn’t know about automated calendar management for room mailboxes via the resource booking assistant. And how could they? Quite logically, the settings to create new room mailboxes and to configure automated management are hidden in PowerShell or the Exchange admin center. Creating and managing room mailboxes are not normal user actions, and they’re probably not something every administrator does either. After all, once a room mailbox is configured, it’s probably left alone. The real problem is for users to know what’s possible and when to ask tenant administrators for their help.
Creating and Configuring a Room Mailbox
The solution is straightforward:
- Create a room mailbox for the conference room. The mailbox is also known as a resource mailbox. Like any other mailbox, it has a calendar that accepts meeting requests via email. You can create a room mailbox from the Microsoft 365 or Exchange admin centers or by running the New-Mailbox cmdlet. Room mailboxes don’t require licenses. If the room mailbox is intended for short-term use, consider naming it appropriately.
- Configure the calendar processing settings for the room mailbox. These settings instruct the resource booking assistant how to respond to incoming meeting requests. If the default settings are kept, the room will accept meetings from anyone, allow conflicts, permit meetings many hours long, and so on. By tweaking the settings, the resource booking assistant manages incoming requests exactly as required.
Some of the calendar processing settings are configurable through the resources section of the Exchange admin center. Here you can set:
- The booking window (how many days in advance to schedule a meeting).
- The maximum duration of a meeting.
- Whether to allow repeated (recurring) meetings.
- Text to include in the responses emailed to meeting organizers.
You can also configure whether the room accepts meetings automatically or if delegates must review meetings to decide whether to accept or deny the request. Delegates are mailboxes with Editor access to the calendar folder for the room mailbox and marked as a delegate. You can manage delegate access through the Exchange admin center (Figure 1) or PowerShell.
Here’s an example of using the Add-MailboxFolderPermission cmdlet to add a mailbox as a delegate for a room mailbox:
Add-MailboxFolderPermission -Identity 'Ohio.Conference:\Calendar' -AccessRights 'Editor' -User Jack.Smith -SendNotificationToUser:$True -SharingPermissionFlags Delegate
PowerShell Needed to Configure Some Calendar Processing
The UI in the Microsoft 365 and Exchange admin centers doesn’t support configuring some of the processing settings for room mailboxes. This might be because Microsoft wants to simplify room mailbox management, but the lack of UI support means that achieving absolute precision in request processing takes some work in PowerShell.
After some experimentation, I arrived at the following command to configure the automated calendar processing for the room mailbox:
Set-CalendarProcessing -Identity Ohio.Conference -AutomateProcessing AutoAccept ` -AddAdditionalResponse $True -AdditionalResponse '<h2>Welcome to the Corporate Room Scheduling System</h2><p>We have a few basic rules for you to follow.</p><ol><li>Please keep the room tidy and remove rubbish at the end of your meeting.</li><li>Please do not change the settings of the AV equipment.</li><li>Please clean the whiteboard before you leave.</li><li>Advise Corporate Meetings if you have any problems by sending email to: <a href="mailto:corporatemeetings@office365itpros.com">Corporate Meetings.</a></li></ol><p>The <strong>Ohio Conference Room</strong> can hold up to <strong>12</strong> people. Please do not exceed this capacity.</p><p>If you need <strong>catering</strong>, please contact Jennifer at (650) 561-4136.</p><p>Thanks for meeting with us!</p><img src="https://i0.wp.com/office365itpros.com/wp-content/uploads/2023/10/Smiley-Smile.jpg" alt="smile" /><p></p>' ` -AllowConflicts:$False -AllowRecurringMeetings:$False ` –MaximumDurationInMinutes 30 -ScheduleOnlyDuringWorkHours:$True ` -ForwardRequestsToDelegates:$True -BookingWindowInDays 30 ` -AddOrganizerToSubject:$False -DeleteSubject:$False ` -AllRequestInPolicy:$True -AllBookinPolicy:$False -BookInPolicy "Conference Organizers"
A full description of the function for these parameters is available in the documentation for the Set-CalendarProcessing cmdlet. Configuration of the AdditionalResponse setting to provide feedback to meeting organizers is explained in this article. A mailbox used for meetings at a special event might include some other information in its response text, such as a map to show attendees where to go. Neither PowerShell nor the admin centers validate the HTML code entered for a response, so it’s wise to use an online validator or other tool to make sure that the HTML doesn’t contain any errors before using it.
After configuring the response, the other settings do the following:
- Prevent conflicts and recurring meetings.
- Set a maximum meeting duration of 30 minutes.
- Allow meetings only during work hours (make sure that the room mailbox calendar configuration uses the correct time zone and work hours).
- Sends new meeting requests to delegates for processing.
- Only allows meetings to be booked 30 days ahead of the meeting date.
- Writes the meeting subject set by the organizer into the room calendar instead of replacing it with the organizer’s name. See this article to understand why the default is to replace meeting subjects with the organizer’s name.
- Allow users to submit meeting requests but do not accept any requests automatically unless they come from the mailboxes specified in the Conference Organizers group. The process to restrict who can book rooms is covered in another article.
With the room mailbox configuration in place, it’s time to send email to salespeople to tell them how to book a timeslot for their customer meetings at the conference. Adding the room to a meeting request is simple (Figure 2), but salespeople also need to know the times when the room is available, that requests will be rejected if for longer than 30 minutes, and that they cannot book if their request causes a conflict.
After adding the meeting participants, including the room, the calendar scheduling assistant can help the meeting organizer find an open timeslot (Figure 3).
Adding the Room Mailbox to a Room List
What we’ve done so far is enough for meeting rooms created for an event that moves locations each year. If the same location is used for several events, it might be worthwhile to create a room list and add the room as a member to make the room visible through Outlook’s room finder. This code creates a distribution list configured as a room list and adds the meeting room as a member.
New-DistributionGroup -DisplayName 'Meeting Rooms at Sales Kickoff' -RoomList -Alias Sales.Kickoff.Rooms -Name 'Meeting Rooms at Sales Kickoff' -IgnoreNamingPolicy Add-DistributionGroupMember -Identity Sales.Kickoff.Rooms -Member Ohio.Conference
The room finder relies on cities as the initial filter, so we also need to define the details of the room as a place. Here’s an example of defining the room as being located in the Loews Hotel in Atlanta (the location for The Experts Conference in 2023).
Set-Place -Identity Ohio.Conference -CountryOrRegion "US" -City "Atlanta" -Floor 1 -Capacity 12 -Street "1065 Peachtree St NE" -GeoCoordinates "33.7820391; -84.3838837" -Building "Loews Hotel" -State GA -PostalCode 30309 -Phone “+1 404 745 5000" -Label "Sales" -VideoDeviceName "Crestron Flex UC-M150-T" -Tags Sales, Customers, Videoconference
Processing Meeting Requests
Figure 4 shows an example of a meeting request forwarded to a room delegate for their decision. You can see the HTML content formatted in the response sent to the organizer. The resource booking assistant considers the request to be in-policy because it matches the requirements configured for the room.
Room delegates receive the meeting request in their inbox as normal and can decide to accept the request and book the room or reject it and give some feedback to the organizer. It’s a lot easier than receiving a bunch of emails with an Excel attachment and attempting to resolve meeting requests that way.
For further automation, you could add sales managers to the distribution list of people allowed to schedule the room without delegate intervention. Meeting requests from the sales managers are still subject to policy restrictions like no conflicts and 30-minute duration.
A Hidden Gem of Exchange Online Calendars
Over the years, the Exchange development group expanded the automated processing features for calendar meetings. It’s a pity that this capability appears to be unknown to many, but it’s there and ready to be deployed for those who need some assistance in managing meeting rooms.
What about the enforce capacity. I am not getting clear understanding on if this actually works. Sounds like no.
I don’t think any element of calendar management enforces blocks based on the capacity of a room.
Would it be possible to allow a room to be booked by all the users from an external domain in bulk?
eg: Set-CalendarProcessing -Identity “room@xyz.com” -BookInPolicy “*contoso.com”?
The help for the cmdlet says:
-BookInPolicy
The BookInPolicy parameter specifies users or groups who are allowed to submit in-policy meeting requests to the resource mailbox that are automatically approved. You can use any value that uniquely identifies the user or group. For example:
Name
Alias
Distinguished name (DN)
Canonical DN
Email address
GUID
So, the answer is no. You’d need to create a group and populate it with the people you want to be able to book the room.
That was my fear too :(. Thanks anyway for confirming 🙂
We have a conference room assigned under M 365 resource center where the meeting is automatically finishes after 10mins of starting the meeting. Happening to only one conference room and its setup the same way as the rets.
Obviously there’s some setting that is driving this behavior. When you say that the meeting automatically finishes after 10 minutes is this the scheduled time or something that Teams (or another component) does?
In a maintenance or request situation, is there a way to automatically reject bookings for a room and send a message to anyone who happens to schedule it?
You’d have to write some custom PowerShell code to alter the room booking conditions and to find and communicate with people who have the room booked during the maintainence window. It’s all pretty straightforward and shouldn’t be too difficult.
Is it possible to send a message to a distribution list just to notify that the room is booked so those in the list can do room prep if needed? thanks!
No. You’d need a script that scans meeting rooms for meetings and generates a notification message to a DL. Should be easy to write.
Hi.
Thanks.
Is it possible to book a meeting room and automatically book a (Teams Room) ressource, if it is present in that meeting room without the user who books the meeting room have to book both the room and ressource – but the ressource is booked as a part of the room booking ?
To add a Teams meeting, it’s a matter of setting the switch to make the meeting an online meeting.
You can also configure the mailbox to make online meetings the default by running the Set-MailboxCalendarConfiguration cmdlet to set OnlineMeetingsByDefault to True
Set-MailboxCalendarConfiguration -Identity “Ohio Conference Room” -OnlineMeetingsByDefaultEnabled:$True
https://learn.microsoft.com/en-us/powershell/module/exchange/set-mailboxcalendarconfiguration?view=exchange-ps
Thank you! Great read!