Exchange resource mailboxes can be defined as conference rooms or equipment. Each of these mailboxes have a booking attendant service that is turned on by default. Sending a scheduling request (a meeting invite) to a resource mailbox will trigger the booking attendant, and the booking attendant will respond to the scheduling request (approved or denied) based on the configured scheduling options. The booking attendant can also be configured to forward scheduling requests to one or more delegates for approval or denial.
Automated Booking Policies are used to determine how the booking attendant responds to a scheduling request:
- In Policy means the request does not violate any of the configured scheduling options.
- Out of Policy means the request violated a configured scheduling option. For example, the scheduled time is already booked by another user, or the duration is too long.
The scheduling options and automated booking policies can be used to configure how the booking attendant responds to a scheduling request.
Example Scenarios
Here are 4 common scenarios for in-policy scheduling requests. Later in this post, I’ll show you how they can be configured using PowerShell.
- Anyone can book the resource. No delegate approval is required.
- Anyone can book the resource, but a delegate has to approve the booking request.
- Only a list of people can book the resource without delegate approval. All others require delegate approval.
- Only a list of people can book the resource. All others are denied. There are no delegates.
In Exchange Online, the first two scenarios can be configured using the Exchange Admin Center. The rest have to be configured using PowerShell.
Also, if you see the radio button for “Use customized setting to accept or decline booking requests” in the admin center, it means PowerShell was used to customize the booking attendant in such a way that the admin center is unable to show you.
You’ll need to use one of the following PowerShell commands to see how it has been configured:
Get-CalendarProcessing "Resource Mailbox Name" | FL *
-or-
Get-CalendarProcessing "Resource Mailbox Name" | FL AllB*,AllR*,BookInP*,Req*,Res*
Set-CalendarProcessing
The Set-CalendarProcessing command is used to configure a resource’s scheduling options and the booking attendant service. There are a lot of parameters associated with this command, and I suggest you review all of them.
Here are the parameters used to configure each of the 4 scenarios from above:
All Book In Policy
When set to True, requests from all users to book a resource are automatically approved as long as the request is not out-of-policy (does not violate any of the scheduling options).
Book In Policy
Specifies a comma-separated list of users who are allowed to submit in-policy booking requests to the resource mailbox.
- Any in-policy scheduling requests from these users are automatically approved.
- This parameter is ignored if “All Book In Policy” is set to True.
All Request In Policy
Specifies whether to allow all users to submit in-policy requests to a resource mailbox, which are forwarded to one or more resource delegates for approval.
- When this parameter is set to True, and the “All Book In Policy” parameter is set to False, all requests require approval from a resource delegate.
- Make sure you define one or more resource delegates.
- If the “All Book In Policy” parameter is set to True, this parameter is ignored.
Request In Policy
Specifies a comma-separated list of users who are allowed to submit in-policy requests to the resource mailbox.
- All in-policy requests from these users require approval from a resource delegate.
- If “All Request In Policy” is set to True, users in this list will be ignored.
- If “All Book In Policy” and “All Request In Policy” are set to False, only the users in this list will be allowed to book this resource with delegate approval.
- If you want the list of users to bypass delegate approval, add them to the “Book In Policy” list.
- Make sure you define one or more resource delegates.
All Request Out of Policy
Specifies if all users are allowed to submit out-of-policy requests to the resource mailbox.
- When set to False, out-of-policy requests are automatically denied by the booking attendant.
- When set to True, out-of-policy requests from all users are subject to approval by one or more resource delegates.
- When set to True, make sure you define one or more resource delegates.
- It’s best to leave this set to False, and if needed, configure a list of users in the “Request Out of Policy” parameter instead.
Request Out of Policy
Specifies a comma-separated list of users who are allowed to submit out-of-policy requests to the resource mailbox.
- Out-of-policy requests are subject to approval by a resource delegate.
- If “All Request Out of Policy” is set to True, users in this list will be ignored.
- Make sure you define one or more resource delegates.
Resource Delegates
Specifies a comma-separated list of users who are resource delegates. Resource delegates can approve or reject requests sent to the resource mailbox. If needed, you can use a mail enabled distribution group instead of a list of users.
Scenario #1
Anyone can book the resource. No delegate approval required.
- All Book In Policy: True
- All Request In Policy: False
- All Request Out of Policy: False
- Resource Delegates: None
Example Parameter Configuration
## Define the Calendar Processing Properties $CalProcProp = @{ AutomateProcessing = 'AutoAccept' AllBookInPolicy = $true AllRequestInPolicy = $false AllRequestOutOfPolicy = $false ResourceDelegates = $null BookInPolicy = $null RequestInPolicy = $null RequestOutOfPolicy = $null } ## Set the Calendar Processing Properties Set-CalendarProcessing "Resource Mailbox Name" @CalProcProp
Scenario #2
Anyone can book the resource. Delegate approval required for all requests.
- All Book In Policy: False
- All Request In Policy: True
- All Request Out of Policy: False
- Resource Delegates: One or More Delegates are Defined
Example Parameter Configuration
## Create a comma separated list with each delegate's primary email address. ## Note: You can use a mail enabled distribution group instead of a user list. $Delegates = @( "SmtpAddress1@contoso.com", "SmtpAddress2@contoso.com", "SmtpAddress3@contoso.com", "SmtpAddress4@contoso.com" ) ## Define the Calendar Processing Properties $CalProcProp = @{ AutomateProcessing = 'AutoAccept' AllBookInPolicy = $false AllRequestInPolicy = $true AllRequestOutOfPolicy = $false ResourceDelegates = $Delegates BookInPolicy = $null RequestInPolicy = $null RequestOutOfPolicy = $null } ## Set the Calendar Processing Properties Set-CalendarProcessing "Resource Mailbox Name" @CalProcProp
Scenario #3
Only a list of people can book the resource without delegate approval. All others require delegate approval.
- All Book In Policy: False
- All Request In Policy: True
- All Request Out of Policy: False
- Book in Policy: One or More Users are Defined
- Resource Delegates: One or More Delegates are Defined
Note: If a delegate needs to be allowed to book the resource without requiring approval, add them to the “Book In Policy” list of users too.
Example Parameter Configuration
## Create a comma separated list with each allowed user's primary email address. ## Note: You can use a mail enabled distribution group instead of a user list. $UserList = @( "SmtpAddress1@contoso.com", "SmtpAddress2@contoso.com", "SmtpAddress3@contoso.com", "SmtpAddress4@contoso.com", "SmtpAddress5@contoso.com", "SmtpAddress6@contoso.com" ) ## Create a comma separated list with each delegate's primary email address. ## Note: You can use a mail enabled distribution group instead of a user list. $Delegates = @( "SmtpAddress1@contoso.com", "SmtpAddress2@contoso.com" ) ## Define the Calendar Processing Properties $CalProcProp = @{ AutomateProcessing = 'AutoAccept' AllBookInPolicy = $false AllRequestInPolicy = $true AllRequestOutOfPolicy = $false ResourceDelegates = $Delegates BookInPolicy = $UserList RequestInPolicy = $null RequestOutOfPolicy = $null } ## Set the Calendar Processing Properties Set-CalendarProcessing "Resource Mailbox Name" @CalProcProp
Scenario #4
Only a list of people can book the resource. All others are denied. There are no delegates.
- All Book In Policy: False
- All Request In Policy: False
- All Request Out of Policy: False
- Book in Policy: One or More Users are Defined
- Resource Delegates: None
Example Parameter Configuration
## Create a comma separated list with each allowed user's primary email address. ## Note: You can use a mail enabled distribution group instead of a user list. $UserList = @( "SmtpAddress1@contoso.com", "SmtpAddress2@contoso.com", "SmtpAddress3@contoso.com", "SmtpAddress4@contoso.com", "SmtpAddress5@contoso.com", "SmtpAddress6@contoso.com" ) ## Define the Calendar Processing Properties $CalProcProp = @{ AutomateProcessing = 'AutoAccept' AllBookInPolicy = $false AllRequestInPolicy = $false AllRequestOutOfPolicy = $false ResourceDelegates = $null BookInPolicy = $UserList RequestInPolicy = $null RequestOutOfPolicy = $null AddAdditionalResponse = $true AdditionalResponse = "This conference room is restricted to the Finance Dept." } ## Set the Calendar Processing Properties Set-CalendarProcessing "Resource Mailbox Name" @CalProcProp