Table of Contents
Configure Policies for the Exchange Online Resource Booking Assistant
With many offices closed, people working from home, and Outlook making online meetings the default, thoughts might turn to how to stop people scheduling meetings in traditional meeting rooms in buildings to encourage them to consider an alternative, even when employees return to offices.
Different Ways to Block Room Bookings
Several ways suggest themselves to stop users scheduling meetings in rooms:
- Remove the room mailbox. This works, but it is not a recommended approach. You will want to use these rooms in the future and won’t want to recreate the rooms and the location data for the rooms.
- Hide the room mailboxes from address lists. This is better because it stops people searching for rooms when scheduling meetings. The downside is that people might know the email address of a room and can use that to schedule a meeting.
- Block room schedules with dummy meetings. You could schedule meetings in all rooms to block other people from being able to reserve times. Again, this works, but it’s s tiresome process to schedule meetings, especially if you have a lot of rooms to process and normal working doesn’t restart soon.
Employ the Resource Booking Assistant
Hiding rooms from address lists is the best of the three approaches, but it’s not the answer. The Exchange Online resource booking assistant responds to meeting requests according to policies configured for room mailboxes. The resource booking assistant runs in the background to monitor inbound requests sent to room mailboxes. If the policy allows and the requested slot is available, the resource booking assistant accepts the request and confirms the booking.
The Set-CalendarProcessing cmdlet updates policy settings, and we can use it to create a policy to ensure that meeting requests for rooms are not accepted, even when a slot is available.
For example, to set a blocking configuration for the “Room 101” room:
Set-CalendarProcessing -Identity "Room 101" -AllBookInPolicy $False -AllRequestInPolicy $False Set-Mailbox -Identity "Room 101" -MailTip "Rooms are currently unavailable"
The MailTip is defined to give some immediate feedback if someone adds a blocked room to a meeting, but if they go ahead and try to book the room, the resource booking assistant will decline and respond with a polite note (Figure 1).

Exceptions to the Booking Policy
If you want to allow some people to book the room when it’s blocked by default, enter their mailboxes (email addresses, aliases, display names, etc.) in the BookInPolicy parameter. Requests from people specified here are automatically accepted by the resource booking assistant. To make this easier to manage, use a distribution list instead of individual aliases.
Set-CalendarProcessing -Identity "Room 101" -BookInPolicy "Senior Leadership Team"
A variation on the theme is to set the maximum duration allowed for a meeting to a very short period. Here we restrict meetings to one minute.
Set-CalendarProcessing -Id "SF Room 101" -MaximumDurationInMinutes 1
Most people try to book 30- or 60-minute meeting slots, so this will stop them doing that. The downside is that the message received from the resource booking assistant tells them why their meeting request was declined (Figure 2). The danger then exists that some people will go ahead and book one-minute meetings on the basis that once they get into the room, they’ll be able to stay there for a longer period.

Reversing the Process
When normal times resume and you want to make rooms available again, reverse the process by running the command:
Set-CalendarProcessing -Identity "Room 101" -AllBookInPolicy $True -AllRequestInPolicy $True -MailTip $Null
This is a small point, but detail is important when you manage an Office 365 tenant because a detail might just be the way that you can get something done. Learn detail in the Office 365 for IT Pros eBook. We have lots of it!
Thank you for this article.
However, the -mailtip parameter can’t be set with the “Set-CalendarProcessing” cmdlet. You will get an error when running this script, you need another line: Set-Mailbox -Identity “Room101” -MailTip “Rooms are currently unavailable”
Thanks again for all your work on the Office 365 for IT Pros ebook!
Best regards
You’re right. From my original notes, it looks like a cut and paste error on my part. Fortunately, the readers of this blog are so intelligent that they automatically adjusted for my error!
And, if the resource booking assistant doesn’t respond with a polite note? In my case, the meet was not accepted showing a “provisioned” status with the message: “The meet was not accepted”; How do we fore a room to decline every book request?
Set-CalendarProcessing https://docs.microsoft.com/en-us/powershell/module/exchange/set-calendarprocessing?view=exchange-ps is the way to configure room mailboxes to accept requests.
I realize that if there are some delegated owner or a bookinpolicy exception group/users, the resource only rejects the invite, but it doesn’t sends a e-mail informing. Removing both fixed the issue. Tks!
It’s easiest when all requests in policy are automatically accepted without going near a delegate…
Thanks for the guide! Is there a way to auto block meeting requests for every alternating week? Our school has bi-weekly schedules where some rooms are only available in week A – not week B…
Tony, I set this up using a d-list with three members, one being a test user. Logged into Outlook as the test user, I am still getting the blocked message (with my posted tool tip, “This room is reserved for Marketing Team only.”) I’ve tried resyncing the OAL with GAL in Outlook, no difference.
Below are the parameters on the resource room. What am I missing?
RunspaceId : 020af8e7-5b88-4207-a1b5-8e4dc61c8d53
AutomateProcessing : AutoAccept
AllowConflicts : False
AllowDistributionGroup : True
AllowMultipleResources : True
BookingType : Standard
BookingWindowInDays : 180
MaximumDurationInMinutes : 1440
MinimumDurationInMinutes : 0
AllowRecurringMeetings : True
EnforceAdjacencyAsOverlap : False
EnforceCapacity : False
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 : {/o=ExchangeLabs/ou=Exchange Administrative Group
(FYDIBOHF23SPDLT)/cn=Recipients/cn=b1aed6d4ceef49748abd92f4f7a107dd-MarketingRo}
AllBookInPolicy : False
RequestInPolicy : {}
AllRequestInPolicy : False
AddAdditionalResponse : False
AdditionalResponse :
RemoveOldMeetingMessages : True
AddNewRequestsTentatively : True
ProcessExternalMeetingMessages : False
RemoveForwardedMeetingNotifications : False
AutoRSVPConfiguration : Microsoft.Exchange.Data.Storage.AutoRSVPConfiguration
MailboxOwnerId : Marketing Room
Identity : Marketing Room
IsValid : True
ObjectState : Changed
I have no chance of debugging without access to your tenant and I don’t want that… I’m sure it’s something simple.
And, then there’s this, while looking intriguing and simple, I’d prefer the proper way using policy:
https://anandthearchitect.com/2016/08/18/exchange-how-to-restrict-conference-room-only-to-specific-users/
Feel free to lobby Microsoft for change… Maybe at Ignite 2022 if that conference takes place in a face to face format!
Hi, I have done this but now i cant remove the MailTip at all. even if i change the mailtip, its keep sending the old mailtip.