Configure Microsoft Exchange and Azure (customer IT)

Audience: Customer IT, Exchange administrator, Azure / Entra ID administrator, information security officer

Reservation Sync needs a room mailbox for every room you want to synchronize, a room list, and permission to access those room mailboxes through the Microsoft Graph API. This guide walks you through the set-up in Exchange Online and in the Azure portal (Microsoft Entra ID).

1. Connect to Exchange

The following steps implement and/or validate settings in Microsoft Exchange Online that are required by the Reservation Sync Interface to establish connectivity with Spacewell Workplace.

Info

The following steps require administrator access to Exchange Online, ensure your Microsoft account has the necessary access rights.

1.1. Exchange admin center

The Exchange admin center (EAC) is the web console for Exchange Online: https://admin.exchange.microsoft.com/

image-20221202-121353.png

More information about EAC can be found here: https://learn.microsoft.com/en-us/exchange/exchange-admin-center.

1.2. Exchange Online PowerShell

You need PowerShell and internet access. Start Windows PowerShell as administrator and run:

powershellwide760

Confirm with [Y] Yes.

dbb03042-f366-41ca-9e1d-9646a1cca102.png

Then install the Exchange Online PowerShell module and confirm with [Y] Yes:

powershellwide760

This command will download and install the Exchange Online PowerShell module. Confirm with [Y] Yes and then Enter.

image-20261008-120203.png

Connect with your own administrator account, sign in (and approve in Microsoft Authenticator if 2FA is on):

powershellwide760

The Microsoft “Sign in to your account” popup appears:

69c5eab1-48db-4e63-9960-4fde2f1df204.png

Enter the administrators password and confirm with Enter.

Info

If 2FA is enabled, there is a confirmation required from the Microsoft Authenticator App.

In Powershell the following screen is visible and the user is logged in to Exchange Online PowerShell:

image-20261008-120145.png

Check the domain:

wide760image-20261008-120256.png

To disconnect when you are done:

powershellwide760

More information about connecting to Exchange Online PowerShell can be found here: https://learn.microsoft.com/en-us/powershell/exchange/connect-to-exchange-online-powershell?view=exchange-ps&preserve-view=true

2. Create room mailboxes

Every reservable room in Workplace needs a matching room mailbox in Exchange. Room mailboxes are resource mailboxes: they need no Microsoft 365 licence, cost nothing, and you can create as many as you need.

Room mailboxes can be created manually through the Exchange Admin Center or using PowerShell. Both options are described below. Please select the method that most adheres to your current workflow.

Option A: Create a Room Mailbox via Exchange Admin Center

Login to Exchange Admin Center, and go to Recipients > Resources and click Add a room resource.

image-20221202-122142.png

This opens a dialog for new Room Mailbox parameters. nter a name and e-mail address and click Next.

image-20261008-120643.png

Optional: fill in extra properties (capacity, location, etc.). Reservation Sync does not need them, but they help users find the right room in Outlook Room Finder (see Room Finder Add-in for Outlook).

image-20261008-120847.png

Booking Options: leave the default values or match the room configuration in Asset. See section 2.1 below.

image-20221202-130028.png

Review the configured properties for the room mailbox and click Create. The room appears in the list of resources.

image-20261008-121914.pngimage-20221202-130410.png

Once the room mailbox is created, you can see the room mailbox in the list of Resources:

image-20221202-131328.png

Option B: Create a Room Mailbox via Exchange Admin Shell (PowerShell)

Connect to Exchange Admin Shell and issue the below command to create a new Room Mailbox with the below command:

powershellwide760
  • The parameter -Name is used to set the display name of the Room in Outlook and Teams
  • The parameter -alias is used to generate the email address, e.g. in the above case it will be conf_room@yourdomain.com
  • The parameter -Room is most important, which identifies it as a Room resource mailbox and not a User account.
image-20261008-121539.png

Check the result:

powershellwide760

The -Identity parameter value is the same as the -alias used in the create command above.

image-20221202-134935.png

2.1. Align room reservation settings with Workplace

Room mailboxes automatically accept or decline meeting requests based on their calendar-processing settings. These settings directly affect Reservation Sync and must match the room settings in Asset.

The -Identity parameter is the alias of the room mailbox, you can also use email address here (conf_room or conf_room@yourdomain.com).

The format-list option ensures that PowerShell displays the extensive list of properties for the room mailbox:

image-20221202-150600.png

Note

It is important that the settings in Exchange are aligned with settings in Asset. Example: if BookingWindowInDays is 180 in Exchange but the room can be booked up to 2 years ahead in Asset, reservations created in Asset beyond 180 days are not synced to Exchange.

While some of these properties are controllable from the Exchange Admin Center, more advanced configuration can be achieved from Exchange Admin Shell using the CalendarProcessing command.

View the current settings of a room (alias or e-mail address):

powershellwide760false

Setting

What it does

Recommendation

AutomateProcessing

Whether requests are accepted automatically or passed to a room delegate

AutoAccept, unless booking delegates are configured

BookingWindowInDays 

How far ahead the room can be booked (default 180)

Same as in Workplace

ConflictPercentageAllowed

Whether a recurring series is accepted when some occurrences conflict. At 0%, the series is declined if one occurrence conflicts

Set deliberately to prevent out-of-sync situations

AllowConflicts

Whether the room accepts a request that overlaps another reservation

False. If True, the room accepts every request and double reservations occur; reconciliation does not fix these, it only reports them

DeleteSubject, AddOrganizerToSubject

By default the room removes the subject; Workplace then shows the organizer’s name instead

Set both to False if subjects must show in Workplace

RemovePrivateProperty

By default (True) the "Private" flag is removed from incoming meetings

Set to False so private meetings created in Workplace stay private in Outlook

Show subjects in Workplace:

powershellwide760

Verify the change by running the Get-CalendarProcessing command of the particular meeting room again.

Keep private meetings private:

wide760

Run Get-CalendarProcessing again to verify. All properties are described in https://learn.microsoft.com/en-us/powershell/module/exchange/set-calendarprocessing?view=exchange-ps

3. Create a room list

Room lists group room mailboxes. They are not distribution lists, shared mailboxes or security groups. Reservation Sync uses them to link room mailboxes to reservable rooms in Asset, and Outlook Room Finder uses them to group rooms.

Note

Reservation Sync needs at least one visible room list.

Room data created with PowerShell can take 24–48 hours to show up in the Graph API, depending on the Azure region.

Create a room list

powershellwide760
  • The -Name parameter is used to specify the display name of the Room List in Outlook Room Finder
  • The -Alias parameter is used to generate the email address that is used by Reservation Sync
  • The -RoomList parameter is used to identify this group as a Room List
image-20261008-125434.png

More informatioin about Room Lists can be found here: https://learn.microsoft.com/en-us/powershell/module/exchange/new-distributiongroup?view=exchange-ps

Add a room to the list

powershellwide760
  • The -Identity parameter is the alias or email address of the room list
  • The -Member parameter is the alias or email address of the room mailbox. This can also be another room list
image-20221203-231500.png

To verify the addition of the member, run below command

wide760

Remove a room from the list

powershellwide760

List all room lists

wide760
  • The -ResultSize Unlimited parameter ensures that all the room lists are returned
  • The Where clause filters the list to only Room lists and not other types of groups
  • The Format-Table formats the output to a table structure with 3 columns: DisplayName, Identity and Email address
    The -AutoSize parameter resizes column widths in the output to match the data
image-20221203-233736.png

List the rooms in a room list

To view all the member rooms and room lists for a given room list, use the below command

wide760

The -Identity parameter is the alias of the room list whose members are to be fetched

image-20221203-234037.png

4. Register Reservation Sync in Azure

Reservation Sync connects to Exchange Online through Microsoft Graph, Microsoft’s standard API that replaces Exchange Web Services (EWS). It uses OData REST APIs and OAuth 2.0 client credentials. It uses OData REST APIs and OAuth 2.0 with Client Credentials. You need administrator rights in Azure AD / Entra ID.

4.1 Register the app

Sign in to the Azure portal and open Microsoft Entra ID > App registrations

image-20221206-102352.png

On the App registrations page, select New registration:

image-20221204-003705.png

Enter a name. Keep Accounts in this organizational directory only. Leave Redirect URI empty. Click Register.

image-20221204-004638.png

On the overview page, copy the Application (client) ID and Directory (tenant) ID and keep them safe.

2.png

Info

This is a background app. It does not appear under My Apps in Office 365 or Teams and does not need to be assigned to users or groups.

4.2 Generate a Client Secret

The next step is to generate a client secret for API access.

In the app, open Certificates & secrets > New client secret.

image-20221204-011259.png

Enter a description and an expiry period in line with your organization’s policy. Click Add.

image-20221204-011612.png

Copy the Value and the Expires date and keep them safe. This information is needed for a future configuration step.

image-20221204-012238.png

Info

When the secret expires, synchronization stops and room mappings are disabled. Renew it in time and share the new secret with Spacewell.

4.3 Grant API permissions

Open API permissions > Add a permission > Microsoft Graph > Application permissions.

image-20221204-075121.png7.png

Add these permissions, then click Add permissions:

  • Calendars.Read
  • Calendars.ReadBasic.All
  • Calendars.ReadWrite
  • MailboxSettings.Read
  • Place.Read.All
image-20261008-132357.png

Info

These permissions give access to basic meeting details: schedule, organizer, participants and subject. They do not give access to the meeting body, attachments or users’ free/busy information.

You can now see the added permissions in the list of Configured permissions for the App in the center panel:

8.png

More information about App permissions can be found here: https://learn.microsoft.com/en-us/graph/auth-v2-service

Time zones (only for Outlook 2013 or older). Reservation Sync creates and updates meetings in UTC. Modern Outlook and Teams show times in each user’s own time zone; Outlook 2013 and older show UTC. MailboxSettings.Read lets Reservation Sync read the organizer’s preferred time zone.

4.4. Restrict access to room mailboxes only

Note

A Security Group can be used to limit the access to the users and recources. For the Reservation Sync Interface it is necesarry to create a security group and add all the room recources to this group.

Create a mail-enabled security group for the rooms:

powershellwide760
  • The -Type parameter security defines this group as a mail enabled security group
  • The -Alias parameter defines the email address of the group

Add every room in scope:

powershellwide760
  • The -Identity parameter is the alias of the security group
  • The -Member parameter is the alias of the room mailbox

Create the access policy. Use the Application (client) ID from 4.1 and the e-mail address of the security group:

powershellwide760

The -AccessRight parameter RestrictAccess ensures that the access is restrictive and limited to the policy scope.

image-20221204-093738.png

More details about API access policy here

https://learn.microsoft.com/en-us/graph/auth-limit-mailbox-access

Note

Remember to add new rooms to this security group as well as to the room list.

4.4 Grant Admin Consent

The calendar data processed through these permissions is personal data under EU GDPR, which normally requires user consent. Because Reservation Sync is a background app, an administrator consents once on behalf of all users. Microsoft Graph requires this before the API can be used.

In API permissions, the columns "Admin consent required" and "Status" show a warning.

image-20221204-115056.png

Click Grant admin consent for <organization name> and confirm with Yes.

The status changes to granted for each permission.

image-20221204-115249.png

5. Share the credentials with Spacewell

What

Where you found it

Application ID

Application (client) ID, step 4.1

Directory ID

Directory (tenant) ID, step 4.1

Client secret

Step 4.2

Client secret expiry date

Step 4.2

E-mail domains

Your e-mail domain(s), e.g. spacewell.com

Share the client secret securely, for example with a single-use, expiring link (e.g. Onetime Secret): enter the secret, a passphrase and a lifetime, create the link, and send the link, the passphrase and the other details to the Spacewell consultant, with your organization name and Application ID in the subject. If the link has already been used when Spacewell opens it, you will be asked to delete the secret and create a new one. You can use any other secure channel that fits your policy.

Useful links