Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This document describes the actions that need to be performed in Microsoft Exchange and Microsoft Azure to implement the Reservation Sync Interface for Spacewell Workplace Management.

Table of Contents

Table of Contents
minLevel1
maxLevel6
outlinefalse
typelist
printablefalse

...

This configuration guide is applicable for Microsoft 365 Exchange Online including hybrid* Exchange setups. This configuration guide is not applicable for on-premise Exchange servers.

...

Room mailboxes are key to setting up sync between Workplace and Exchange. For each room defined in Workplace which can be reserved, there must be a corresponding room mailbox defined in Exchange.

...

Room mailboxes are resource mailboxes that can be created either via Exchange Admin Center or Exchange Admin Shell. Unlike User user mailboxes, resource mailboxes are not linked to Microsoft 365 user licenses or incur any costs, they are bundled with all Microsoft 365 subscriptions and an unlimited number of such resource mailboxes can be created.

...

Login to Exchange Admin Center, and select Resources from the left side menu under the Recipients .menu:

...

This shows list of all available room mailboxes in your Exchange subscription. Click on Add a room resource:

...

This opens a dialog for new Room Mailbox parameters. Provide a suitable name and email address for the room mailbox and click Next:

...

The next screen allows you to configure some additional properties for the room mailbox. These are optional properties that are not required for Reservation Sync Interface so they can be skipped, however if you have a large number of rooms then these properties can help users find the right room for their purpose using Outlook Room Finder:

...

Onto the next section, Booking Options, these settings have great impact on the Reservation Sync Interface, it is recommended to leave these settings at default values or otherwise match the configuration of Rooms in Spacewell Roomsthe rooms in Workplace Management. These settings are discussed in greater detail in the below section 3.2.2

...

On the next screen, we can review the configured properties for the room mailbox and then click on Create to finish creating the room mailbox.:

...

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

...

Create a Room Mailbox via Exchange PowerShell

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

Code Block
languagepowershell
New-Mailbox -Name "Conference Room" -alias conf_room -Room

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.

...

Once, the room is created, you can verify it by using the below cmdlet.command:

Code Block
languagepowershell
Get-Mailbox -Identity conf_room

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

...

3.2.2 Fine-tuning Room Mailbox properties

Room mailboxes in Exchange Online have an extensive set of properties that determine how they automatically deal with meeting requests from human users (auto-accept/decline) for example. These properties also impact the Reservation Sync Interface as well. While some of these properties are controllable from the Exchange Admin Center Web GUI, more advanced control configuration can be achieved from Exchange Admin Shell using the CalendarProcessing cmdletcommand.

To retrieve the current values for a given room mailbox use the below cmdletcommand:

Code Block
languagepowershell
Get-CalendarProcessing -Identity conf_room | format-list

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 all the extensive list of properties

...

Below we talk about some of the properties that are relevant for Reservation Sync

AutomateProcessing

This parameter decides if the meeting requests from users are automatically accepted by the room mailbox or delegated to a human user who is the room for the room mailbox:

...

The settings mentioned below are important for the Reservation Sync:

Note

It is important that the settings in Exchange are aligned with settings in Workplace Management. For example, if the BookingWindowInDays of the meeting room is set to 180 in Exchange, but in Workplace Management you can reserve up to 2 years into the future, the meetings created from Workplace Management will not be synced to Exchange.

AutomateProcessing

This parameter decides if the meeting requests from users are automatically accepted by the room mailbox or delegated to a user who is the room admin. If you have not specified any booking delegates in the room mailbox setting, then this should be set to AutoAccept.

...

BookingWindowInDays

This parameter decides if the room mailbox will accept multiple meeting requests for the same time slot. Spacewell Workplace doesn’t allow conflicts, hence this parameter must be set to False

BookingWindowInDays

This parameter decides how far ahead in future the room can be booked. This value should be set to a reasonable number such as 90 or 180 and also match the configured value in Spacewell Workplace. Setting it to high number will allow users to create recurring meeting years in the future and with very large number of occurrences resulting in sync failures and performance issues

MaximumDurationInMinutes

The maximum duration of a meeting. Spacewell supports a maximum of 24 hours i.e. a meeting cannot span multiple days. Thus this value must be 1440 or less.

ScheduleOnlyDuringWorkHours

The availability hours of a room must match the configured values in Spacewell. For best results with Reservation Sync it should be set to False in both Spacewell and Exchange

ConflictPercentageAllowed

This parameter determines if the room is unavailable for a few occurrences of a recurring series, but is available for the majority of it then it should still accept the series as a whole or not. It is not recommended to set this value higher than 20%

MaximumConflictInstances

Same as above, except it counts the number of unavailable occurrences instead of a percentage. Among the two, whichever restriction is hit first, takes precedence. Recommended value is 0 and only rely on the percentage setting.

Delete Subject & AddOrganizerToSubject

By default when a room mailbox receives a meeting, it removes the subject when saving the invite in its calendar. Consequently the meeting subjects are also not synchronized to Spacewell and the Spacewell touchpoints display the Organizer’s name instead of the subject.

If it is so desirable that subjects be displayed in Spacewell Workplace, then both of these parameters must be set to False. To set these values you can use the below command

Code Block
languagepowershell
Set-CalendarProcessing -Identity conf_room -DeleteSubject $False -AddOrganizerToSubject $False

Verify the change by running the Get-CalendarProcessing cmdlet again

A complete list of Calendar Processing properties can be found here with more detailed explanation

https://learn.microsoft.com/en-us/powershell/module/exchange/set-calendarprocessing?view=exchange-ps

3.3 Room Lists

Room lists are used for grouping Room mailboxes into logical groups. These are not same as distribution lists, shared mailboxes or security groups. Room lists can only be managed via Exchange PowerShell and doesn’t have any other use than grouping rooms in the Room Finder widget in Outlook.

Room lists can have child room lists with N levels. Thus it is recommended to organize room lists in a way to reflect Space data like Sites, Blocks, Buildings, Wings, Floors (if not already done so) when organizing large number of rooms

Info

Reservation Sync Interface requires that the Exchange has at-least one room list and the room list is visible.

Info

Reservation Sync Interface accesses Rooms and Room Lists via Microsoft Graph API. Sometimes it may take 24-48 hours for room data created via Exchange Admin Shell to reflect in the API depending on the Azure cloud region / availability zone the data is being created in.

3.3.1 Creating Room List

To create a new Room List use the below command

Code Block
languagepowershell
New-DistributionGroup -Name "All Rooms" -Alias all_rooms -RoomList

The -Name parameter is used to specify the display name of the Room List as how it appears in Outlook Room Finder

The -Alias parameter is used to generate the email address which will later be used by the reservation sync interface

The -RoomList is the all important parameter which identifies this group as a Room List

...

You can refer a full list of supported parameters for this cmdlet here

https://learn.microsoft.com/en-us/powershell/module/exchange/new-distributiongroup?view=exchange-ps

3.3.2 Adding Room Mailbox to Room List

Once you have created a room list, you now need to add room mailboxes to this list. Use the below command

Code Block
languagepowershell
Add-DistributionGroupMember -Identity all_rooms -Member conf_room

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

...

To verify the addition of the member, run the below cmdlet

Code Block
Get-DistributionGroupMember -Identity all_rooms

3.3.3 Removing Room Mailbox from Room List

To remove a room mailbox from a room list, use the below cmdlet

...

languagepowershell

...

how far ahead in future the room can be booked. This value is by default 180. Make sure this setting is in line with the meeting rooms setting in Spacewell Workplace.

ConflictPercentageAllowed

This parameter determines if the room is unavailable for a few occurrences of a recurring series, but is available for the majority of it then it should still accept the series as a whole or not. If this setting is set to 0%, a recurring reservation is declined, if at least 1 conflict occurs. Make sure this setting is set properly to prevent out-of-sync situations.

Delete Subject & AddOrganizerToSubject

By default, when a room mailbox receives a meeting, it removes the subject when saving the invite in its calendar. Consequently the meetings subject is also not synchronized to Spacewell and the Spacewell touchpoints display the Organizer’s name instead of the subject.

If it is so desirable that subjects be displayed in Spacewell Workplace, then both of these parameters must be set to False. To set these values you can use the below command:

Code Block
languagepowershell
Set-CalendarProcessing -Identity conf_room -DeleteSubject $False -AddOrganizerToSubject $False

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

A complete list of Calendar Processing properties can be found here with more detailed explanation:

https://learn.microsoft.com/en-us/powershell/module/exchange/set-calendarprocessing?view=exchange-ps

3.3 Room Lists

Room lists are used for grouping Room mailboxes into logical groups. These are not same as distribution lists, shared mailboxes or security groups. Room lists can be created via the Exchange Admin Shell and are needed to link the Room lists room mailboxes to the corresponding reservable rooms in Workplace Management. Also the Room lists are used for grouping rooms for the Outlook Room Finder.

Info

Reservation Sync Interface requires that the Exchange has at-least one room list and the room list is visible.

Info

Reservation Sync Interface accesses the Rooms and Room Lists via Microsoft Graph API. Sometimes it may take 24-48 hours for room data created via Exchange Admin Shell to reflect in the API depending on the Azure cloud region / availability zone the data is being created in.

3.3.1 Creating Room List

To create a new Room List, use the below command:

Code Block
languagepowershell
New-DistributionGroup -Name "All Rooms" -Alias all_rooms -RoomList

The -Name parameter is used to specify the display name of the Room List as how it appears in Outlook Room Finder

The -Alias parameter is used to generate the email address which will later be used by the Reservation

Sync Interface

The -RoomList parameter is used to identify this group as a Room List

...

More informatioin about the Room Lists can be found here:

https://learn.microsoft.com/en-us/powershell/module/exchange/new-distributiongroup?view=exchange-ps

3.3.2 Adding Room Mailbox to Room List

Once you have created a Room List, you now need to add room mailboxes to this list via the below command:

Code Block
languagepowershell
Add-DistributionGroupMember -Identity all_rooms -Member conf_room

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

...

To verify the addition of the member, run the below command

Code Block
Get-DistributionGroupMember -Identity all_rooms

3.3.

...

3 Removing Room Mailbox from Room List

To get remove a list of all room lists in your organizationroom mailbox from a Room List, use the below command:

Get
Code Block
language
powershell
Remove-DistributionGroupDistributionGroupMember -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "RoomList"} | Format-Table DisplayName,Identity,PrimarySmtpAddress –AutoSize 

The parameter -ResultSize unlimited ensures that all the room lists are returned

The piped where clause filters the list to only Room lists and not other types of groups

The piped Format-Table formats the output to a table structure with 3 columns DN, Identity, email and the auto size parameter resizes column widths in the output to match the data

...

Identity all_rooms -Member conf_room

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

...

3.3.

...

4 Listing

...

Room

...

Lists

To view all the member rooms and room lists for a given room listget a list of all Room Lists in your organization, use the below command:

Code Block
Get-DistributionGroupMemberDistributionGroup -Identity all_rooms -ResultSize UnlimitedResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "RoomList"} | Format-Table DisplayName,Identity,PrimarySmtpAddress –AutoSize 

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

...

3.3.6 Hiding - Unhiding a Room List

If you have created room list(s) specifically for the purpose of Reservation Sync interface, and you do not wish users to see or use these room lists in Outlook Address Book, then you can hide the room list after the initial configuration in Reservation Sync Interface is done and it is operational.

Info

Do not implement this step while configuring for reservation sync interface. For later use only

...

–AutoSize 

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

...

3.3.5 Listing contents of a Room List

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

Code Block
languagepowershell
Set-DistributionGroupGet-DistributionGroupMember -Identity all_rooms -HiddenFromAddressListsEnabled $TrueResultSize Unlimited | Format-Table DisplayName,Identity,PrimarySmtpAddress –AutoSize 

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

...

4. Application Access - Azure Portal

...

Appendix

Anchor
hybrid
hybrid
* Hybrid means that the room mailboxes are cloud native and user mailboxes may be synchronized with an on-premise Exchange Server. Also see which scenario’s Microsoft supports in regards to Hybrid setups: https://techcommunity.microsoft.com/t5/exchange-team-blog/the-end-of-the-rest-api-for-on-premises-mailboxes-preview/ba-p/3221219

...