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.

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.

  1. Create reservations in either environment.

    • From Exchange, you create room meetings by inviting the room mailbox.

  2. Room availability syncs between Exchange and Archibus.

  3. 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

  1. Define room mailboxes in Exchange.

  2. On Exchange, set the AutomateProcessing option to AutoUpdate.

    • 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.

  3. 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 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:

For a new recurring meeting request, the listener creates a corresponding recurring reservation.

Changing a reservation

If you change the room of a meeting from Exchange while the meeting is linked to a reservation in Web Central:

When updating a recurring meeting via Exchange, you can change the recurrence pattern .

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
(at 2:30am or when monitor reconnects)

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.

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