На основе механизма синхронизации Sync Engine в Creatio реализована синхронизация контактов. Под синхронизацией контактов необходимо понимать синхронизацию контактов Microsoft Exchange с контактами Creatio и наоборот. Синхронизация контактов выполняется по протоколу EWS (Exchange Web Services). Протокол EWS описан в официальной документации Microsoft. Подробнее о настройке Microsoft Exchange читайте в статье Настроить Microsoft Exchange и Microsoft 365. Инструкция по синхронизации контактов описана в статье Синхронизировать контакты с Microsoft Exchange и Microsoft 365.
Выполнить синхронизацию контактов
Чтобы выполнить синхронизацию контактов, выберите папки Microsoft Exchange с контактами, которые планируется синхронизировать.
Действия, которые выполняются при синхронизации контактов:
- Применение изменений из Microsoft Exchange.
- Применение изменений из Creatio.
- Создание новых контактов из Creatio в Microsoft Exchange.
Применение изменений из Microsoft Exchange
Типы контактов, которые можно синхронизировать:
- Измененные контакты. Т. е. контакты, которые изменены после даты последней синхронизации. Для этих контактов выполняется поиск соответствующих контактов. Применяются актуальные изменения.
- Новые контакты. Т. е. контакты, которые не были синхронизированы ранее.
Применение изменений из Creatio
Типы контактов, которые можно синхронизировать:
- Контакты автором которых является текущий пользователь.
- Контакты, у которых дата последнего изменения больше, чем дата последней синхронизации.
- Новые контакты.
Типы фильтров, которые доступны к использованию при выборе новых контактов Creatio:
- Стандартный фильтр по автору (т. е. значение поля Создал (Created by) страницы контакта).
- Фильтр отсутствия метаданных синхронизации.
-
Пользовательские фильтры, которые устанавливаются с помощью настроек.
- Синхронизировать контакты сотрудников (т. е. контакты, у которых в поле Тип (Type) выбрано значение Сотрудник (Employee)). В этом случае к запросу добавляется фильтр по колонке Тип (Type) страницы контакта.
- Синхронизировать контакты клиентов (т. е. контакты, у которых в поле Тип (Type) выбрано значение Клиент (Customer)). В этом случае к запросу добавляется фильтр по колонке Тип (Type) страницы контакта.
- Синхронизировать контакты группы. В этом случае к запросу добавляются фильтры выбранных групп контактов.
Классы синхронизации контактов
Классы, которые реализуют логику работы синхронизации контактов:
- Класс RemoteProvider, который представлен классом ExchangeEmailSyncProvider. Класс ExchangeContactSyncProvider — провайдер для работы с внешним хранилищем. Реализует логику по выбору данных и сохранению изменений в Creatio и Microsoft Exchange. Подробнее о классе RemoteProvider читайте в статье Механизм синхронизации Sync Engine.
-
Класс RemoteItem, который реализует интерфейс IRemoteItem. Интерфейс предоставляет экземпляр элемента синхронизации (в нашем случае — контакт Microsoft Exchange). Подробнее о классе RemoteItem читайте в статье Механизм синхронизации Sync Engine.
- Contact — реализует интерфейс IRemoteItem. В свою очередь интерфейс реализует логику заполнения данных в соответствующих объектах Creatio и Microsoft Exchange.
- ExchangeAddressDetailsSynchronizer — утилитные методы, которые предназначены для преобразования данных об адресах контактов.
- ExchangeEmailAddressDetailsSynchronizer — утилитные методы, которые предназначены для преобразования данных об email-адресах контактов.
- ExchangePhoneNumbersDetailsSynchronizer — утилитные методы, которые предназначены для преобразования данных о телефонах контактов.
Логика заполнения деталей вынесена в отдельные классы, поскольку существуют значительные отличия в форматах хранения данных в Creatio и Microsoft Exchange, что требует дополнительного преобразования.
Схема иерархии класса RemoteProvider для синхронизации контактов представлена на рисунке ниже.

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

Ниже приведена таблица, которая содержит:
- Соответствие свойств класса Contact, который представляет контакт Microsoft Exchange, и полей объектов Creatio. Класс Contact описан в официальной документации Microsoft.
- Соответствие свойств класса ContactSchema, который представляет схему контакта Microsoft Exchange, и полей объектов Creatio CommunicationType и AddressType. Класс ContactSchema описан в официальной документации Microsoft.
|
|
||
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
|
|
|
|
||
|
|
|
|
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
|
|
|
|
||
|
|
||
|
|
||
|
|
|
|
|
|
Может возникнуть ситуация, когда при большом количестве контактов Microsoft Exchange часть из них имеет одинаковые идентификаторы. Это связано с особенностями работы Microsoft Exchange. В этом случае в процессе синхронизации может некорректно определиться соответствующий контакт Creatio. Для решения этой ситуации Creatio предоставляет возможность использования функциональности расширенных внешних ключей.
Чтобы использования функциональность расширенных внешних ключей:
- Включите функциональность Использовать комбинированные идентификаторы для синхронизируемых контактов MS Exchange (Use composite IDs for MS Exchange synchronized contacts, код UseComplexExchangeContactId). Для этого воспользуйтесь инструкцией, которая приведена в статье Механизм Feature Toggle.
- При необходимости выполните повторную синхронизацию контактов.