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.

Managing the booking settings for a room mailbox
Figure 1: Managing the booking settings for a room mailbox

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.

Including a room mailbox in a meeting
Figure 2: Including a room mailbox in a meeting

After adding the meeting participants, including the room, the calendar scheduling assistant can help the meeting organizer find an open timeslot (Figure 3).

Using the scheduling assistant to find the best time for a meeting
Figure 3: Using the scheduling assistant to find the best time for a meeting

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.

 A meeting delegate decides whether to accept a room booking
Figure 1: A meeting delegate decides whether to accept a room booking

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.

TEC Talk Series 2024

Check out these free, 60-minute live training webinars modeled after the acclaimed, in-person sessions that The Experts Conference (TEC) is known for – with practical, no-fluff insight led by the industry’s leading Microsoft 365 experts.

About the Author

Tony Redmond

Tony Redmond has written thousands of articles about Microsoft technology since 1996. He is the lead author for the Office 365 for IT Pros eBook, the only book covering Office 365 that is updated monthly to keep pace with change in the cloud. Apart from contributing to Practical365.com, Tony also writes at Office365itpros.com to support the development of the eBook. He has been a Microsoft MVP since 2004.

Comments

  1. Bassvoice

    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!

    1. Avatar photo
      Tony Redmond

      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.

  2. T. Fest

    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 ?

    1. Avatar photo
      Tony Redmond

      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

  3. Gman

    Thank you! Great read!

Leave a Reply