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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
...
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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
...
language | powershell |
---|
...
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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:
Code Block | |||
---|---|---|---|
| Get
| ||
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 | ||
---|---|---|
| ||
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 | ||||
---|---|---|---|---|
|
...