Microsoft Exchange Resource Calendar Configuration Guide
Microsoft PowerShell Scripts for Maptician Calendar Sync Compatibility
Contact Us
If you still have questions or prefer to get help directly, please reach out to your technical contact.
Table of Contents
⚠️ IMPORTANT
- Review and apply these settings before enabling the Maptician calendar sync for any resource room.
- Always run
Get-CalendarProcessing -Identity "<RoomMailbox>" | Format-Listbefore making changes to verify the room's current settings.
Before You Begin
You will need the following:
- Microsoft 365 admin credentials.
- Windows PowerShell 5.1 (not PowerShell ISE and not PowerShell 7). Open it by searching for Windows PowerShell in the Start menu, right-clicking it, and selecting Run as Administrator.
- The
ExchangeOnlineManagementmodule is installed.
Step-by-Step Instructions
Install the ExchangeOnlineManagement Module
If you have not previously installed the module, run the following command in PowerShell as Administrator:
Install-Module -Name ExchangeOnlineManagement -ForceGeneral Notes
- Always run
Get-CalendarProcessing -Identity "<RoomMailbox>" | Format-Listbefore making changes to verify the room's current settings. - Review and apply these settings before enabling the Maptician calendar sync for any resource room.
- When in doubt, start with Script 1: Base Settings and only add optional configurations as needed for the client's specific use case.
BookingWindowInDaysis always calculated from the current date, not the start date of a reservation or series. As time moves forward, the window moves with it.- If a recurring series has any instance that falls outside the
BookingWindowInDayslimit, Outlook may decline the entire series rather than just the out-of-range instances.
Outlook Resource Room Setting Definitions
The settings below cover the parameters most relevant to Maptician calendar sync compatibility. For a full list of all available parameters, please refer to Microsoft's documentation Set-CalendarProcessing (ExchangePowerShell).
⚠️ IMPORTANT
Each setting definition below includes a Maptician Recommended value. These recommendations reflect the configuration that produces the most predictable calendar sync behavior in Maptician.
However, they are not one-size-fits-all. Every organization has different booking policies, approval workflows, and access requirements. Before applying any changes, review your current settings and consider what configuration best fits how your workplace operates.
AutomateProcessing
Controls how the room mailbox processes incoming meeting requests.
Maptician Recommended: AutoAccept
- AutoAccept: The room automatically accepts or declines requests based on the configured policy settings. This is the recommended setting for Maptician sync compatibility.
- AutoUpdate: Only updates the calendar, but does not automatically accept or decline. Requests require manual delegate action.
- None: All calendar processing is disabled. The room will not respond to any booking requests.
AllRequestOutOfPolicy
Controls what happens when a request falls outside the room's booking policy (for example, exceeding the booking window or conflicting with policy settings).
Maptician Recommended: $false
$true= Out-of-policy requests are allowed through and placed in a tentative or pending state awaiting delegate approval. Not recommended for Maptician because it can create unpredictable sync behavior.$false= Out-of-policy requests are automatically declined. This is the recommended setting for cleaner sync behavior.
AddNewRequestsTentatively
Controls whether new incoming booking requests are added to the calendar as tentative while being evaluated.
Maptician Recommended: $false
$true= New requests appear on the calendar as tentative immediately upon receipt, before being accepted or declined. This can cause false conflicts and unpredictable sync behavior in Maptician.$false= Requests are not added tentatively. The room only adds the meeting after a final acceptance or decline decision has been made. This is the recommended setting for Maptician sync compatibility.
ForwardRequestsToDelegates
Controls whether booking requests are forwarded to assigned resource delegates for approval.
Maptician Recommended: $false (use $true only when a delegate is actively assigned)
$true= Requests are forwarded to delegates listed inResourceDelegatesfor manual approval. If no delegates are assigned, requests will get stuck in a pending state indefinitely.$false= Requests are not forwarded. The room handles accept and decline decisions automatically based on policy. Recommended unless the room is specifically configured for delegate approval.
TentativePendingApproval
Controls how requests waiting for delegate approval appear on the resource calendar.
Maptician Recommended: $false
$true= Pending requests appear on the calendar as tentative, marking the time slot as potentially occupied. This can cause false conflicts and confuse Maptician sync.$false= Pending requests appear as free on the calendar while awaiting approval. This is the recommended setting to prevent false conflicts during the approval process.
EnforceSchedulingHorizon
Controls how the room handles recurring series that have instances falling outside the BookingWindowInDays limit.
Maptician Recommended: $true
$true= If any single instance in a recurring series falls outside the booking window, the entire series is declined. This results in a clean all-or-nothing decision that is more predictable for Maptician sync.$false= Instances within the booking window are accepted, and only those outside are declined individually. This can create a partially accepted series and unpredictable behavior in Maptician.
BookingWindowInDays
Defines how far in advance a room can be booked, measured in days from today's date.
Maptician Recommended: 365 or more
- The default value is 180 days.
- Any booking request, including individual instances of a recurring series, that falls beyond this window will be subject to the
EnforceSchedulingHorizonsetting. - This window is always calculated from the current date, not from the start date of a reservation or series. As time moves forward, the window moves with it.
The recommended value for Maptician is 365 days or more, depending on your Maptician settings, which can be set for your entire environment or on a per-location basis:
➡️ Global: Maximum Advance Reservation Time
➡️ Location: Maximum Advance Reservation Time
MaximumDurationInMinutes
Controls the maximum length allowed for a single meeting instance booked in the resource room, measured in minutes.
Maptician Recommended: 1440 or higher, depending on your organization's longest expected meeting or event.
0= No duration limit. Meetings of any length are accepted.- Any positive integer = Meetings exceeding that duration are automatically declined. For example,
480will limit bookings to 8 hours. - For recurring series, this limit applies to each instance, not the total length of the series.
- The default value is
1440(24 hours).
Similar to the “BookingWindowInDays” settings, it is recommended to have your “MaximumDurationInMinutes” match your Maptician settings:
➡️ Global: Maximum Reservation Length
➡️ Location: Maximum Reservation Length
💡 TIP
All-day events in Outlook are typically 1440 minutes. Setting this value below 1440 will cause all-day bookings to be declined by the resource calendar.
AllBookInPolicy
Controls whether all users are allowed to automatically book the room.
Maptician Recommended: $true for unrestricted rooms; $false when the room is restricted in Maptician
$true= All users can book the room automatically, subject to other policy settings.$false= Only users or groups listed inBookInPolicyare allowed to book. All other requests are automatically declined. Use this when restricting room access to specific users.
BookInPolicy
Defines the list of users or groups permitted to book a restricted room.
Maptician Recommended: Set to a distribution group or Microsoft 365 group when AllBookInPolicy is $false
- Only applies when
AllBookInPolicyis set to$false. - Accepts individual email addresses or distribution group / Microsoft 365 group email addresses.
- Use a distribution group or Microsoft 365 group rather than individual users for easier access management.
AllRequestInPolicy
Controls whether all users can submit booking requests for delegate review.
Maptician Recommended: $false when the room is restricted in Maptician
$true= All users can submit requests that will be forwarded to delegates for approval.$false= Only users listed inRequestInPolicycan submit requests for delegate review. All other requests are automatically declined. Recommended when restricting room access.
ResourceDelegates
Defines the list of users authorized to approve or decline booking requests for the room.
Maptician Recommended: Must be populated whenever ForwardRequestsToDelegates is $true
- Only relevant when
ForwardRequestsToDelegatesis set to$true. - Accepts individual email addresses.
🚨 WARNING
If ForwardRequestsToDelegates is $true but ResourceDelegates is empty, requests will get stuck in a pending or tentative state indefinitely. This will directly impact Maptician sync reliability.
Script 1: Base Settings
Use this for rooms with no restrictions and no delegate approval. The room automatically accepts or declines bookings based on policy. Apply these settings to all resource rooms synced with Maptician.
- Requests that exceed the booking window are automatically declined by Outlook.
- Reservations receive an immediate accept or decline response.
- Maptician sync behaves predictably because there are no tentative reservation states to interpret.
⚠️ IMPORTANT
If a user creates a recurring reservation series in Maptician that falls outside the Outlook resource room booking window, those reservations may continue to appear in Maptician until the nightly sync runs or someone runs the Maptician manual sync (Sync All Calendars), even though Outlook will not accept them.
Make sure users are aware of the booking window limit when creating recurring series. If any instance in a recurring series extends beyond the booking window, Outlook may decline the entire series, and it will not appear in Maptician.
# ============================================================
# Maptician - Base Room Configuration
# No restrictions, no delegates, auto accept/decline
# ============================================================
# STEP 1: Connect to Exchange Online
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -UserPrincipalName "your-admin@yourdomain.com"
# STEP 2: Set the room mailbox address
$roomMailbox = "roomname@yourdomain.com"
# STEP 3: Apply settings
Set-CalendarProcessing -Identity $roomMailbox `
-AutomateProcessing AutoAccept `
-AllRequestOutOfPolicy $false `
-AddNewRequestsTentatively $false `
-ForwardRequestsToDelegates $false `
-TentativePendingApproval $false `
-EnforceSchedulingHorizon $true `
-BookingWindowInDays 365
# STEP 4: Verify the changes
Get-CalendarProcessing -Identity $roomMailbox | Format-List
# ============================================================Script 2: Restricted Room
Use this when a room is restricted in Maptician. The room must also be restricted on the Outlook side. Without matching Outlook restrictions, a user could create a reservation in Outlook for a restricted room, and the sync will pull that reservation into Maptician even if that user is not a permitted reserver for that room in Maptician.
AllBookInPolicy $falsedisables booking for all users by default.BookInPolicywhitelists only specific users or groups, permitting them to book the room. All others are automatically declined.AllRequestInPolicy $falseprevents unauthorized users from submitting requests for delegate review.AllRequestOutOfPolicy $falseensures out-of-policy requests are declined outright rather than forwarded.
Rather than listing individual users in BookInPolicy, use a distribution group or Microsoft 365 group. This allows access to be managed by updating group membership instead of modifying the room policy each time a user's access changes.
ℹ️ NOTE
- Outlook Desktop: Previously used rooms can persist in Outlook's autocomplete cache. Users may still be able to find and attempt to book a restricted room after access is removed. However, the resource booking assistant will still decline the request based on policy, so the reservation will not be confirmed.
- Outlook Web (OWA): Browser history and cached suggestions may surface previously used rooms, but the room's policy remains the enforcement layer rather than the UI.
# ============================================================
# Maptician - Restricted Room Configuration
# Only specific users or groups can book this room
# ============================================================
# STEP 1: Connect to Exchange Online
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -UserPrincipalName "your-admin@yourdomain.com"
# STEP 2: Set the room mailbox address
$roomMailbox = "roomname@yourdomain.com"
# STEP 3: Set the allowed user or group
# Tip: Use a distribution group email instead of individual
# users for easier access management
$allowedBookers = "allowed-group@yourdomain.com"
# STEP 4: Apply settings
Set-CalendarProcessing -Identity $roomMailbox `
-AutomateProcessing AutoAccept `
-AllBookInPolicy $false `
-BookInPolicy $allowedBookers `
-AllRequestInPolicy $false `
-AllRequestOutOfPolicy $false `
-AddNewRequestsTentatively $false `
-ForwardRequestsToDelegates $false `
-TentativePendingApproval $false `
-EnforceSchedulingHorizon $true `
-BookingWindowInDays 365
# STEP 5: Verify the changes
Get-CalendarProcessing -Identity $roomMailbox | Format-List
# ============================================================Script 3: Delegate-Approved Room
🚨 WARNING
Only use this configuration if a delegate is actively assigned and monitoring requests. Leaving delegate approval enabled with no assigned delegate will cause reservations to remain tentative indefinitely, which will directly impact Maptician sync reliability.
Use this for rooms that require a person to approve or deny booking requests, such as executive conference rooms or restricted spaces.
- Out-of-policy requests are automatically declined before reaching the delegate queue.
- In-policy requests are forwarded to the assigned delegate for approval.
TentativePendingApproval $falseensures pending requests show as free rather than tentative, preventing false conflicts while awaiting approval.- Maptician sync is more predictable because tentative states are minimized.
Delegates should approve or decline requests promptly, as pending reservations may not appear correctly in Maptician until the nightly sync runs. Users should expect a short delay between submitting a reservation and receiving confirmation while delegate approval is pending.
# ============================================================
# Maptician - Delegate Approved Room Configuration
# A designated person must approve all booking requests
# WARNING: A delegate MUST be assigned or requests will
# get stuck in a pending state indefinitely
# ============================================================
# STEP 1: Connect to Exchange Online
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -UserPrincipalName "your-admin@yourdomain.com"
# STEP 2: Set the room mailbox address
$roomMailbox = "roomname@yourdomain.com"
# STEP 3: Set the delegate email address
# This person will receive and must approve/decline all requests
$delegateEmail = "delegate@yourdomain.com"
# STEP 4: Apply settings
Set-CalendarProcessing -Identity $roomMailbox `
-AutomateProcessing AutoAccept `
-AllRequestOutOfPolicy $false `
-AddNewRequestsTentatively $false `
-ForwardRequestsToDelegates $true `
-ResourceDelegates $delegateEmail `
-TentativePendingApproval $false `
-EnforceSchedulingHorizon $true `
-BookingWindowInDays 365
# STEP 5: Verify the changes
Get-CalendarProcessing -Identity $roomMailbox | Format-List
# ============================================================Additional Configuration
Retain Meeting Details in Exchange Online Room Calendars
By default, Microsoft Exchange Online resource mailboxes are configured to remove the meeting subject and body when events are sent to them. This can interfere with video conferencing panels that rely on the event body to display a "Join" button.
Run the following command to ensure meeting details, including conferencing links, are retained in the room calendar.
Set-CalendarProcessing -Identity "room@yourdomain.com" `
-DeleteSubject $false `
-AddOrganizerToSubject $false `
-DeleteComments $falseWhat these settings do:
-DeleteSubject $false: Keeps the original meeting subject.-AddOrganizerToSubject $false: Prevents appending the organizer's name to the subject.-DeleteComments $false: Retains the full body of the invite, including video conferencing links.
Auto-Accept External Meeting Invites
Forwarded events may not be auto-accepted by the resource room by default. Run the command below to update the room so that forwarded external events are auto-accepted and will sync with Maptician.
Set-CalendarProcessing -Identity "room@yourdomain.com" `
-ProcessExternalMeetingMessages $true