Archibus Extension for Microsoft Exchange
Exchange: Monitoring Room Mailboxes
Exchange integration with Archibus Reservations can optionally directly monitor Exchange room mailboxes (instead of monitoring email invitations) for creation, update, and cancellation of meetings.
The Archibus Extension for Microsoft Exchange supports the following uses of room mailboxes.
-
Users can create room meetings by just inviting the room mailbox to the meeting from Exchange.
-
The Extension checks if Web Central Reservation rules are met, and if not, declines the meeting.
-
The Extension directly monitors room calendars for meeting creation, update, and cancellation, instead of basing all monitoring on email invitations.
The calendar monitoring WFR in Archibus receives a notification for each change on the room calendars. After processing each change, it sends the appropriate notification from the room mailbox to the meeting organizer in Exchange.
The current listener can remain active for processing meeting updates in rooms that do not have a separate mailbox.
Note: Multi-room reservations with room mailboxes are not supported at this time.
Example
The integration follows this basic process.
-
Create reservations in either environment.
-
From Exchange, you create room meetings by inviting the room mailbox.
-
-
Room availability syncs between Exchange and Archibus.
-
You can cancel and edit reservations from each environment and they will be reflected in the other environment.
For example, in Outlook calendar (without Outlook Plugin interface), create a meeting, and invite room HQ-17-127 (which has a room mailbox) and another attendee to a new meeting.
Thorough the Exchange listener, the application creates the room reservation for HQ-17-127 and you can see the reservation on the Room Reservations Calendar in Web Central.
Set-up Procedure
-
Define room mailboxes in Exchange.
-
On Exchange, set the
AutomateProcessing
option toAutoUpdate
.-
This enables the Exchange Calendar Attendant to automatically populate the room calendars,
-
The Exchange Resource Booking Attendant remains disabled to ensure that Exchange does not automatically send accept or decline notifications to the meeting organizer.
-
-
Run the Workplace Services / Reservations / Background Data / Define Room Configurations task and complete the Room Mailbox field for each reservable room for which you wish to monitor room calendars.
Creating and Editing Reservations from Exchange
Creating a new reservation
When the Exchange Listener detects a new meeting on a room calendar, the listener creates a new reservation if
-
the reservation does not already exist (if a reservation already exists for the meeting, the listener updates that reservation instead of creating a new one)
-
the meeting organizer is a user and employee known in Web Central
-
the room is available
The listener confirms or declines the meeting request accordingly. Impersonation of the meeting organizer is not required. Hidden user properties are added to the copy of the meeting on the room’s calendar. Adding the meeting item ID to the reserve
table (in addition to the outlook_unique_id
) is sufficient to link a meeting and reservation.
When the listener creates a new reservation:
-
the Created By, Requested By and Requested For fields are set to the meeting organizer
-
the meeting organizer's email is entered in
reserve.email
-
meeting attendees are copied to the attendees field
-
the meeting subject and body are entered in the reservation name and comments.
For a new recurring meeting request, the listener creates a corresponding recurring reservation.
-
If the room is not available for all occurrences, the request is rejected for all occurrences.
-
Conflicts are not supported when creating a recurring reservation from Exchange.
Changing a reservation
If you change the room of a meeting from Exchange while the meeting is linked to a reservation in Web Central:
-
The meeting on the original room’s calendar is canceled
-
A new meeting is added on the calendar of the new room.
-
Next, the Exchange Listener cancels the reservation in the original room, and creates a new reservation in the new room. Linked resources are not retained.
When updating a recurring meeting via Exchange, you can change the recurrence pattern .
-
The listener creates a new reservation for all meeting dates that do not correspond to a reservation.
-
Reservations that no longer correspond to a meeting date are canceled.
-
Reservations that cannot be canceled because of restrictions defined in Archibus are disconnected from the meeting series. This means the room remains booked in Archibus but does not appear busy in Exchange. New reservations cannot overlap with an existing disconnected reservation. To free up the room, a Web Central user with sufficient rights to modify the meeting needs to cancel or modify the reservation in Archibus.
-
The meeting organizer receives a confirmation email for each occurrence that was canceled or disconnected.
Calendar Monitoring Actions
The table below shows the behavior of the calendar monitoring after a given user action, depending on the status of the real-time monitor at the time of the action. The real-time monitor starts automatically at Web Central startup, but due to network issues or simply because Archibus Web Central is stopped, changes on the room calendar can also occur while the real-time monitor is not connected.
User Action |
Real-time Monitor Status |
Real-time Monitor Action (if connected) |
Calendar Sync Action |
---|---|---|---|
Add a room to a meeting via Exchange |
Connected |
Create reservation with item id and change key filled in and accept meeting; or Decline meeting |
Item id and change key match between meeting and reservation → no action |
Add a room to a meeting via Exchange |
Not connected |
N/A |
Create reservation with item id and change key filled in and accept meeting; or Decline meeting |
Create a new appointment directly on the room calendar |
Connected |
Delete appointment. Meeting organizer in Exchange must be a Web Central user and registered employee. |
N/A |
Create a new appointment directly on the room calendar |
Not connected |
N/A |
Delete appointment. Meeting organizer in Exchange must be a Web Central user and registered employee. |
Update a meeting on the room calendar in Exchange via a meeting update email |
Connected |
Update connected reservation, including item id and change key and accept meeting; or Decline meeting, cancel reservation, and notify organizer. |
If update was accepted, item id and change key match between meeting and reservation → no action If update was declined, no action. |
Update a meeting on the room calendar in Exchange via a meeting update email |
Not connected |
N/A |
Update connected reservation, including item id and change key; or Decline meeting, cancel reservation, and notify organizer. |
Cancel a meeting on the room calendar via a meeting cancellation email |
Connected |
Cancel or disconnect reservation and notify meeting organizer. Remove the meeting from the room calendar. |
Detects a deleted meeting but can’t find a linked reservation → no action. |
Cancel a meeting on the room calendar via a meeting cancellation email |
Not connected |
N/A |
Cancel or disconnect reservation and notify meeting organizer. Remove meeting from the room calendar. |
Create new reservation via Archibus Web Central |
Connected |
Populate item id and change key of reservation. Accept meeting. |
Item id and change key match between meeting and reservation → no action |
Update a reservation via Archibus Web Central |
Connected |
Update item id and change key of reservation. Accept meeting. |
Item id and change key match between meeting and reservation → no action |
Cancel a reservation via Archibus Web Central |
Connected |
Detects canceled meeting without linked reservation → remove meeting from room calendar. |
Detects deleted meeting without linked reservation → no action. |
Support for Overlapping Room Configurations
Since Exchange does not support overlapping rooms, defining overlapping room configurations in Archibus should be avoided. A reservation for room configuration ABC will not show up automatically on the calendars of the individual room mailboxes A, B, and C. However, the free-busy checks in Archibus will function normally and will decline any reservation that overlaps based on the logic defined in Archibus.
Description of the Monitoring Process
Grouping room mailboxes for live calendar monitoring
Live tracking of room calendars requires a different type of listener. To ensure the tracking is scalable for hundreds or even thousands of rooms, the listener needs to group room mailboxes, monitoring up to 200 mailboxes with a single streaming connection.
Grouping is only possible for rooms whose mailboxes are on the same mailbox server. This is especially important for Exchange on Office 365. Autodiscover information can be used to determine which mailboxes reside on the same server.
In Office 365, mailboxes can be moved to another mailbox server any time by automated processes. Thus, regularly regrouping the room mailboxes and restarting all subscriptions is important to ensure optimal grouping of subscriptions. In between regrouping, failures can be handled by starting new streaming connections every hour as needed. A nightly restart of all subscriptions is recommended.
The Reservations calendar monitoring can also monitor room mailboxes without autodiscover.
-
If autodiscover fails for a room mailbox and the exchange.url is set in
reservations.properties
, it will be monitored with a separate streaming connection for that mailbox. -
To support environments where autodiscover is not available, the application monitors the room mailboxes anyway, without grouping them by server. Beware this increases traffic between Exchange and Archibus to 1 streaming connection per mailbox instead of 1 streaming connection per 200 mailboxes.
Scanning for room calendar changes in Exchange
Each time Exchange notifies Web Central that a change has occurred on a room calendar, the Reservations application will query that room calendar for new and modified meetings. Thus, it captures not only the change that triggered the notification sent by Exchange, but also any other changes that occurred since the calendar was last checked. The same sync is triggered every night and every time the real-time monitoring of a room calendar is interrupted.
The first time this sync is initiated, Exchange sends all items that exist on the room calendar.
Along with each list of items, Exchange also sends a sync state. The Reservations application updates this sync state in the rm_config
table, to use as a starting point for the next sync.
On the next sync, based on the sync state value, Exchange can provide a list of items that were created, updated, or deleted since the previous sync, avoiding a full scan.
A new full scan can be forced per room by clearing the sync state for that room in the rm_config table.
To improve the performance of this syncing process and to avoid retrieving details of meetings that were not modified, the ews_item_id
and ews_change_key
fields exist in the reserve
table. Exchange updates the change key, and possibly also the item id, every time a meeting is modified. Retrieving these two fields from Exchange is quicker than retrieving details, such as start and end time. Thus, Web Central can quickly identify new and modified meetings.
Schema
The following schema elements support using Exchange room mailboxes.
Table Name | Field Name | Data Type | Comment |
---|---|---|---|
rm_config |
mailbox_id |
varchar(128) |
Email of the room mailbox in Exchange |
rm_config |
calendar_sync_state |
varchar(8000) |
Last calendar state processed by the listener |
reserve |
rm_calendar_item_id |
char(256) |
ID of the meeting on the room calendar used for calendar monitoring |
reserve |
rm_calendar_change_key |
char(64) |
Change key of the meeting on the room calendar used for calendar monitoring |
When the calendar sync state for a room returned from Exchange is longer than the maximum length that can be stored in the rm_config table, the state is not saved in the database. Then, after a Web Central restart, the sync continues from the last sync state that was stored in the database; or, a new sync will be started without an initial state if the stored sync state is empty. Any time Exchange reports that the provided sync state is invalid for a room, the application starts a new sync of the calendar folder for that room without an initial state.
The calendar monitoring logic require these scheduled workflow rules:
Activity ID | Rule ID | Run on startup | Repeat | Comment |
---|---|---|---|---|
AbWorkplaceReservations |
subscriptionStarterService |
Yes |
hourly |
starts subscriptions every hour, for all rooms not being monitored (new + after errors) |
AbWorkplaceReservations |
subscriptionTrackerService |
No |
daily at 2:30 am |
resets all subscriptions daily to ensure optimal grouping |
AbWorkplaceReservations |
calendarSyncService |
No |
0 |
runs continuously to sync calendar items from Exchange to Web Central and update the sync state (for new subscriptions and after realtime notifications) |
See Also