Skip to main content

Exchange to Dime.Scheduler

This article is concerned with the message flow from Exchange to Dime.Scheduler.

How it works

This part of the synchronization is rather a technically complicated story but the end result is simple enough: any manipulation of any event of any resource that is tracked by the Dime.Scheduler Exchange may potentially end up updating the schedule in the planning board in Dime.Scheduler.

Note that this description allows for more room for interpretation. There is room for configuration and customization to give ultimate control to the planner and prevent resources from fiddling with the planning. In theory, resources could change appointments that are managed in Dime.Scheduler, but as you can imagine, not every planner will want this type of collaboration. Also, not every resource will want to share his entire calendar with other people.

Webhook

To be notified of changes in Exchange, a subscription (i.e. Microsoft's way to label a webhook) to the Microsoft Graph API is needed where you need to indicate:

  • Which events to subscribe to. For example new events or updated e-mails.
  • Which resource to make the subscription for. For example: consultant1@mycompany.com.
  • Which URI to call.
  • How long to keep this connection open

When a resource changes an appointment, the Graph API instantly calls the webhooks of the registered subscriptions, allowing these applications to do whatever they have to do. For Dime.Scheduler, that is to link these changes back to the planning application and the back office systems. It is therefore important that this endpoint is accessible by Microsoft 365. In other words, the URL that is passed to the subscription must be public (and secured, i.e. protected by a SSL).

Delta

There is one caveat to this near-instant messaging flow from Exchange to Dime.Scheduler: the Graph API is chatty and is not entirely reliable for the synchronization with Dime.Scheduler. For that, two additional layers of data synchronization were added. The first layer is also a capability in the Graph API: delta's. The event delta's allow Dime.Scheduler to get incremental changes in the calendars of the tracked resources. Periodically, the Dime.Scheduler will fetch the delta's from the Graph API and will synchronize those changes to Dime.Scheduler.

Tracked appointments

The second additional layer of data synchronization is to periodically do a check-up of the tracked appointments in the Dime.Scheduler Exchange connector. Every record that exists in both Dime.Scheduler and Exchange will be retrieved in Exchange and sent to Dime.Scheduler, where the import pipeline will determine whether an update is needed of the appointment.

This explains the need for this many configuration items in the Exchange connector section in the Dime.Scheduler Installation Center. Administrators need to define how fast they want changes in Exchange to be processed in Dime.Scheduler. For large organizations with many resources and many appointments, it is recommended to reduce the rate as not to overload the system with the synchronization of appointments.

Business rules

Appointments will be sent to Dime.Scheduler for the resources who have given their consent to the following settings:

  • Enabled
  • Show as status (multiple choices)
    • Free
    • Tentative
    • Office
    • Out of office
  • Sensitivity (multiple choices)
    • Normal
    • Personal
    • Private
    • Confidential

When a resource is processed for the first time in the Exchange connector, the system will create a user account automatically and send a mail to the user to confirm the account and set the preferences. If need be, administrators can override these settings in the "Resources" page in the Dime.Scheduler Exchange connector.

Configuration

The connector listens for events in Exchange and pushes them to Dime.Scheduler, and to do that, you need to provide some parameters. Same as the Dime.Scheduler to Exchange message flow, we need some details about the Azure App Registration:

  • The client id of the Azure AD application
  • The client secret of the Azure AD application
  • The tenant id

Note: you can reuse the same values.

Furthermore, to link changes back to Dime.Scheduler, some credentials are needed to authenticate to the import pipeline. It is best to use a dedicated (system) administrator's account:

  • The URI where Dime.Scheduler is hosted
  • The Forms account user
  • The Forms account password

Finally, a publicly, SSL-protected URL needs to be provided that refers to the Dime.Scheduler Exchange Website. The Graph API subscription will use this value to notify the system of changes in the resources' calendars. If the URL is not accessible, the real-time message flow from Exchange to Dime.Scheduler will not work. Not to worry, the Graph API Event Delta will pick up unprocessed changes, but it might take a while before those changes are pushed to Dime.Scheduler, depending on the configuration in the installation center.

To get more information on the installation instructions using the installation center, click here.