Contact Us

If you still have questions or prefer to get help directly, please reach out to your technical contact.

  • Home
  • Home
  • Integrations
  • Microsoft Integrations

Microsoft Exchange Resource Calendar Configuration Guide

Microsoft PowerShell Scripts for Maptician Calendar Sync Compatibility

Written by Grayson Stroup

Updated at October 20th, 2026

Contact Us

If you still have questions or prefer to get help directly, please reach out to your technical contact.

  • Get Started
  • FAQ
    Home Tab Organization Tab Locations Tab Occupants Tab Directory Tab Reports Tab Assignments Tab Map Editor Tab Facility Management Tab IT & Cloud Tab Visitor Management Tab Pre-screen Tab Mobile App SSO Login Room Signage Calendar Sync Other Settings
  • Integrations
    Avigilon (OpenPath) Integrations Calendar Sync Maptician Signage Microsoft Integrations Okta Integrations Opensity Integrations Presence Provisioning Single Sign-on (SSO) Webex Integrations Zoom
  • API Guide
  • Release Notes
    Newsletters Historical Releases
+ More

Table of Contents

Before You Begin Step-by-Step Instructions Install the ExchangeOnlineManagement Module General Notes Outlook Resource Room Setting Definitions AutomateProcessing AllRequestOutOfPolicy AddNewRequestsTentatively ForwardRequestsToDelegates TentativePendingApproval EnforceSchedulingHorizon BookingWindowInDays MaximumDurationInMinutes AllBookInPolicy BookInPolicy AllRequestInPolicy ResourceDelegates Script 1: Base Settings Script 2: Restricted Room Multi-Room Bookings Symptoms of This Issue Update Existing Restricted Rooms Script 3: Delegate-Approved Room Additional Configuration Retain Meeting Details in Exchange Online Room Calendars Auto-Accept External Meeting Invites

⚠️ IMPORTANT

  • Review and apply these settings before enabling the Maptician calendar sync for any resource room.
  • Always run Get-CalendarProcessing -Identity "<RoomMailbox>" | Format-List before 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 ExchangeOnlineManagement module 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 -Force

General Notes

  • Always run Get-CalendarProcessing -Identity "<RoomMailbox>" | Format-List before 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.
  • BookingWindowInDays is always calculated from the current date, not the start date of a reservation or series. As time moves forward, the window moves with it.
  • Keep recurring series within the booking window. Maptician may allow a series whose final occurrence falls beyond BookingWindowInDays. With EnforceSchedulingHorizon $true, Outlook then declines the entire series.

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 in ResourceDelegates for 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 EnforceSchedulingHorizon setting.
  • 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, 480 will 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 in BookInPolicy are 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 AllBookInPolicy is 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.
  • If the room can be booked together with other rooms, also include a group containing your Maptician-synced room mailboxes. See Multi-Room Bookings below.

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 in RequestInPolicy can 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 ForwardRequestsToDelegates is 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 $false disables booking for all users by default.
  • BookInPolicy whitelists only specific users or groups, permitting them to book the room. All others are automatically declined.
  • AllRequestInPolicy $false prevents unauthorized users from submitting requests for delegate review.
  • AllRequestOutOfPolicy $false ensures 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.

If the room can be booked together with other rooms, also include a group containing your Maptician-synced room mailboxes. Without it, the room declines multi-room bookings. See Multi-Room Bookings below for details.

ℹ️ 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 groups
# Include the group of people allowed to book this room AND a
# group containing your Maptician-synced room mailboxes, so the
# room accepts multi-room bookings organized by another room.
$allowedBookers = @(
  "allowed-group@yourdomain.com",
  "synced-rooms-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
# ============================================================

Multi-Room Bookings

When a reservation includes more than one room, Maptician creates a single Outlook meeting. When your External Calendar Sync settings make the resource the event organizer (Enable User Calendar Delegation or User Calendar Strict Mode), one room, usually the primary room, is the organizer. The other rooms are invited as attendees. Each invited room evaluates the request against its own booking policy and accepts or declines it.

This affects how restricted rooms should be configured. If a restricted room's BookInPolicy only lists people or user groups, it declines invitations from other room mailboxes, because the organizer is a room, not a person.

⚠️ IMPORTANT

If a restricted room can be booked together with other rooms, include a group containing your Maptician-synced room mailboxes in that room's BookInPolicy. This does not open the room to other users. In practice, only Maptician acts as a room organizer, unless users have delegate access to a synced room mailbox. Maptician continues to control who can reserve restricted rooms.

 

Symptoms of This Issue

  • The additional room's sent items show "Your meeting request was declined. You don’t have permission to book this resource."
  • The meeting appears on the organizer room's calendar, but not on the restricted room's calendar.
  • Edits to the meeting appear briefly on the restricted room and are then declined again.

Update Existing Restricted Rooms

Script 2 includes the synced rooms group for new configurations. For rooms that are already restricted, use the commands below.

ℹ️ NOTE

-BookInPolicy replaces the existing list. To add a group to a room that is already restricted without removing current entries:

$roomMailbox = "roomname@yourdomain.com"
$policy = (Get-CalendarProcessing -Identity $roomMailbox).BookInPolicy
$policy += "synced-rooms-group@yourdomain.com"
Set-CalendarProcessing -Identity $roomMailbox -BookInPolicy $policy
 

💡 TIP

To find every room that is restricted:

Get-Mailbox -RecipientTypeDetails RoomMailbox -ResultSize Unlimited |
  Get-CalendarProcessing |
  Where-Object { -not $_.AllBookInPolicy } |
  Select-Object Identity, BookInPolicy

Review the results before making changes. Rooms configured for delegate approval can also appear in this 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 $false ensures 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 $false

What 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

Was this article helpful?

Yes
No
Give feedback about this article

Related Articles

Room Reservation
How do I submit a room reservation request or manage my requests?
How do I add a room to my map?
Maptician Logo
121 S. 13th St.
Suite 204
Lincoln, Nebraska 68508
Info@maptician.com
  • Platform Overview
  • Workplace Analytics
  • Space Planning
  • Visitors
  • Conference Rooms
  • Flexible Seating
  • Presence
  • Industries
  • Legal
  • Financial Services
  • Corporate
  • Pricing
  • News
  • About
  • Resources

© | All Rights Reserved | Terms of Service | Privacy Policy | Disclaimer | Cookies | Data Subject Access Request | Do Not Sell My Info

Expand