Синхронизация встреч с Microsoft Exchange

Сложный

На основе механизма синхронизации Sync Engine в Creatio реализована синхронизация встреч. Под синхронизацией встреч необходимо понимать синхронизацию встреч Microsoft Exchange с активностями Creatio и наоборот. Синхронизация встреч выполняется по протоколу EWS (Exchange Web Services). Протокол EWS описан в официальной документации Microsoft. Подробнее о настройке Microsoft Exchange читайте в статье Настроить Microsoft Exchange и Microsoft 365. Инструкция по синхронизации встреч описана в статье Синхронизировать расписание Creatio с календарями Microsoft Exchange и Microsoft 365.

Под встречами необходимо понимать встречи, которые запланированы в календаре Microsoft Exchange. Под активностями необходимо понимать активности Creatio.

Выполнить синхронизацию встреч 

Чтобы выполнить синхронизацию встреч, выберите папки Microsoft Exchange со встречами, которые планируется синхронизировать.

Действия, которые выполняются при синхронизации встреч:

  1. Применение изменений из Microsoft Exchange.
  2. Применение изменений из Creatio.
  3. Создание новых встреч из Creatio в Microsoft Exchange.

Применение изменений из Microsoft Exchange 

Типы встреч, которые можно синхронизировать:

  • Измененные встречи. Т. е. встречи, которые изменены после даты последней синхронизации. Для этих встреч выполняется поиск соответствующих активностей. Применяются актуальные изменения.
  • Новые встречи. Т. е. встречи, которые не были синхронизированы ранее.

Применение изменений из Creatio 

Типы активностей, которые можно синхронизировать:

  • Активности, которые в метаданных синхронизации отмечены, как встреча Microsoft Exchange (определяется уникальным идентификатором ICalUId встречи в календаре).
  • Активности, у которых дата последнего изменения больше, чем дата последней синхронизации.
  • Активности, которые соответствуют нескольким встречам для каждого участника.
  • Групповые активности.

Типы фильтров, которые устанавливаются при выборе новых активностей Creatio:

  • Общие фильтры.

    • Поле Тип (Type) активности не равно значению "E-mail".
    • У активности не установлен признак Отображать в расписании (Show in calendar).
  • Пользовательские фильтры.

Участники встречи добавляются на деталь Участники (Participants) страницы активности. Это позволяет отображать встречу только у пользователей, которые синхронизировали встречу и являются ее участниками.

Условие добавления участников встречи: email-адрес, который указан в поле Email) детали Средства связи (Communication options) на странице контакта, совпадает с email-адресом участника встречи. При синхронизации активности email-адреса участников встречи заполняются основными email-адресами контактов.

Классы синхронизации встреч 

Классы, которые реализуют логику работы синхронизации встреч:

  • Класс RemoteProvider, который представлен классом ExchangeAppointmentSyncProvider. Класс ExchangeAppointmentSyncProvider — провайдер для работы с внешним хранилищем. Реализует логику по выбору данных и сохранению изменений в Creatio и Microsoft Exchange. Подробнее о классе RemoteProvider читайте в статье Механизм синхронизации Sync Engine.
  • Класс RemoteItem, который реализует интерфейс IRemoteItem. Интерфейс предоставляет экземпляр элемента синхронизации (в нашем случае — встречу Microsoft Exchange). Подробнее о классе RemoteItem читайте в статье Механизм синхронизации Sync Engine. Класс Appointment реализует интерфейс IRemoteItem. В свою очередь интерфейс реализует логику заполнения данных в соответствующих объектах Creatio и Microsoft Exchange.

Схема иерархии класса RemoteProvider для синхронизации встреч представлена на рисунке ниже.

Схема иерархии класса RemoteItem для синхронизации встреч представлена на рисунке ниже.

Соответствие свойств класса Appointment, который представляет встречу или собрание Microsoft Exchange, и полей объектов Creatio содержится в таблице ниже. Класс Appointment описан в официальной документации Microsoft.

Соответствие свойств класса Appointment и полей объекта Creatio Activity
Свойство класса Appointment
Объект Creatio
Поле объекта
Subject
Activity
Title
Location
Location
Раньше было StartDate
Start
StartDate
Свойства CompleteDate или DueDate отсутствуют, заменила на Flag
Flag
DueDate
Importance
Priority
IsReminderSet
RemindToOwner
ReminderDueBy
RemindToOwnerDate
Раньше было Body.Text
TextBody
Notes
НОВОЕ ЗНАЧЕНИЕ
MyResponseType
ActivityParticipant
InviteResponse

Способы заполнения результата активности (поле Результат (Result)):

  • Если дата окончания встречи больше, чем текущая дата, то активность является назначенной (устанавливается значение Назначена встреча (New meeting assigned)).
  • Если дата окончания встречи меньше, чем текущая дата, то информация по активности получена (устанавливается значение Информация получена (Information received)).
  • Если пользователь принял приглашение на встречу (установлен статус Принято (Accepted)) или является ее организатором (установлен статус Организатор (Organizer)), то активность является подтвержденной (устанавливается значение Подтверждена (Confirmed)).
  • В другом случае активность является отмененной (устанавливается значение Отменена (Canceled)).

Поля объекта Activity изменения которых приводят к необходимости синхронизации встречи:

  • Title.
  • Location.
  • StartDate.
  • DueDate.
  • Priority.
  • Notes.

Для необходимости выполнения синхронизации достаточно изменения одного поля. По этим полям формируется хэш, который хранится в дополнительных параметрах метаданных (в поле ExtraParameters). Если активность изменена и значение хэша в поле ExtraParameters не совпадает с новым значением хэша, то встречу необходимо синхронизировать.