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

Сложный

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

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

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

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

  1. Применение изменений из Microsoft Exchange.
  2. Применение изменений из Creatio.
  3. Создание новых контактов из 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 и полей объектов Creatio
Microsoft Exchange
Creatio
Класс
Свойство класса
Объект
Поле объекта
ContactSchema
DisplayName
Contact
Name
Surname
Surname
GivenName
GivenName
MiddleName
MiddleName
CompanyName
Account
JobTitle
JobTitle
Department
Department
Birthday
BirthDate
Значение в коллекции PhoneNumbers
ContactCommunication
Number
Ключ для значения в коллекции PhoneNumbers
CommunicationType
Поле City элемента коллекции PhysicalAddresses
ContactAddresses
City
Поле CountryOrRegion элемента коллекции PhysicalAddresses
Country
Поле State элемента коллекции PhysicalAddresses
Region
Поле Street элемента коллекции PhysicalAddresses
Address
Поле PostalvCode элемента коллекции PhysicalAddresses
Zip
Ключ для значения в коллекции PhysicalAddresses
AddressType
ContactSchema
EmailAddress1, EmailAddress2, EmailAddress3
CommunicationType
Email
BusinessPhone, BusinessPhone2
WorkPhone
HomePhone
HomePhone
MobilePhone
MobilePhone
HomeAddressCity, HomeAddressCountryOrRegion, HomeAddressPostalCode, HomeAddressState, HomeAddressStreet
AddressType
Home
BusinessAddressCity, BusinessAddressCountryOrRegion, BusinessAddressPostalCode, BusinessAddressState, BusinessAddressStreet
Business

Может возникнуть ситуация, когда при большом количестве контактов Microsoft Exchange часть из них имеет одинаковые идентификаторы. Это связано с особенностями работы Microsoft Exchange. В этом случае в процессе синхронизации может некорректно определиться соответствующий контакт Creatio. Для решения этой ситуации Creatio предоставляет возможность использования функциональности расширенных внешних ключей.

Чтобы использования функциональность расширенных внешних ключей:

  1. Включите функциональность Использовать комбинированные идентификаторы для синхронизируемых контактов MS Exchange (Use composite IDs for MS Exchange synchronized contacts, код UseComplexExchangeContactId). Для этого воспользуйтесь инструкцией, которая приведена в статье Механизм Feature Toggle.
  2. При необходимости выполните повторную синхронизацию контактов.