Синхронизация контактов с MS Exchange
Glossary Item Box
Общее описание
На базе механизма синхронизации Sync Engine в конфигурации реализована интеграция с различными сущностями MS Exchange по протоколу EWS (Exchange Web Service). В данной статье описана синхронизация контактов Creatio с контактами MS Exchange. Алгоритм синхронизации контактов не отличается от описанного в статье по синхронизации Sync Engine и происходит в три этапа:
- Получение изменений из MS Exchange, их применение;
- Получение изменений из Creatio, их применение;
- Создание новых контактов из Creatio в MS Exchange.
Классы, реализующие интеграцию
Как описано в статье "Синхронизация Creatio с внешними хранилищами данных", для того, чтобы реализовать интеграцию с использованием данного механизма, необходим класс, реализующий логику работы с внешним хранилищем, — наследник RemoteProvider (рис. 1) и класс, реализующий интерфейс IRemoteItem (рис. 2), который представляет один экземпляр элемента синхронизации (в данном случае — контакт MS Exchange).
Рис. 1. — Схема иерархии RemoteProvider
Рис. 2. — Схема иерархии RemoteItem
Для синхронизации контактов также используются следующие классы:
- Класс ExchangeContactSyncProvider является провайдером для работы с внешним хранилищем MS Exchange, в нем реализована логика по выбору данных и сохранению изменений в Creatio и MS Exchange.
- Класс ExchangeContact реализует интерфейс IRemoteItem. В нем реализована логика заполнения данных в соответствующих системах.
- Класс ExchangeAddressDetailsSynchronizer содержит утилитные методы для преобразования данных об адресах контактов.
- Класс ExchangeEmailAddressDetailsSynchronizer содержит утилитные методы для преобразования данных об email-адресах контактов.
- Класс ExchangePhoneNumbersDetailsSynchronizer содержит утилитные методы для преобразования данных о телефонах контактов.
Логика заполнения деталей вынесена в отдельные классы, так как существуют значительные отличия в форматах хранения данных в Creatio и MS Exchange, и требуется дополнительное преобразование.
Синхронизируемые данные
Соответствие объектов Creatio и полей класса Contact MS Exchange отображено в таблице 1.
Табл. 1. — Соответствие объектов Creatio и полей класса Contact MS Exchange
Объект Creatio | Поле объекта | Поле класса Contact MS Exchange |
---|---|---|
Contact | Name | DisplayName |
Surname | Surname | |
GivenName | GivenName | |
MiddleName | MiddleName | |
Account | CompanyName | |
JobTitle | JobTitle | |
Department | Department | |
BirthDate | Birthday | |
SalutationType | TitleTag | |
Gender | GenderTag | |
ContactCommunication | Number | Значение в коллекции PhoneNumbers |
CommunitactionType | Ключ для значения в коллекции PhoneNumbers | |
ContactAddresses | City | Поле City элемента коллекции PhysicalAddresses |
Country | Поле CountryOrRegion элемента коллекции PhysicalAddresses | |
Region | Поле State элемента коллекции PhysicalAddresses | |
Address | Поле Street элемента коллекции PhysicalAddresses | |
Zip | Поле PostalCode элемента коллекции PhysicalAddresses | |
AddressType | Ключ для значения в коллекции PhysicalAddresses |
Соответствие типов средств связи представлено в таблице 2.
Табл. 2. — Соответствие типов средств связи Creatio и MS Exchange
Тип средства связи Creatio | Тип средства связи MS Exchange |
---|---|
EmailAddress1, EmailAddress2, EmailAddress3 | |
WorkPhone | BusinessPhone, BusinessPhone2 |
HomePhone | HomePhone |
MobilePhone | MobilePhone |
Соответствие типов адресов представлено в таблице 3.
Табл. 3. — Соответствие типов адресов Creatio и MS Exchange
Тип адреса Creatio | Тип адреса MS Exchange |
---|---|
HomeAddress | Home |
BusinessAddress | Business |
Логика выбора данных для синхронизации
Для выбора изменений в списке контактов из отобранных для синхронизации папок MS Exchange используется следующий набор фильтров: выбирается контакт MS Exchange, который был изменен после даты последней синхронизации контактов, или контакт MS Exchange, который не был отмечен, как ранее синхронизированный. Для контактов, которые были изменены, находится соответствующий контакт в Creatio. Самые актуальные изменения применяются в соответствующей системе.
При выборе измененных контактов Creatio выбираются контакты:
- автором которых является текущий пользователь;
- дата последнего изменения которых больше чем дата последней синхронизации;
- контакт не использовался в первом этапе синхронизации.
На правила выбора новых контактов Creatio, помимо стандартного фильтра по автору и фильтра отсутствия метаданных синхронизации, влияют пользовательские настройки. Доступно три варианта настройки:
- Синхронизировать контакты сотрудников. При выборе этой настройки к запросу будет добавлен фильтр по колонке "Тип контакта", и синхронизированы будут те контакты, у которых указан тип "Сотрудник".
- Синхронизировать контакты клиентов. При выборе этой настройки к запросу будет добавлен фильтр по колонке "Тип контакта", и синхронизированы будут те контакты, у которых указан тип "Клиент".
- Синхронизировать контакты из определенных групп. При выборе этой настройки к запросу будут добавлены фильтры выбранных групп контактов.
Дополнительные возможности
Возможность использовать расширенные ключи для контактов во внешнем хранилище
Ввиду особенностей работы MS Exchange возможна ситуация, когда при большом количестве контактов MS Exchange часть из них получит одинаковые идентификаторы, и, как следствие, синхронизация может некорректно определить соответствующий контакт в Creatio. Для обхода подобной ситуации реализована функциональность расширенных внешних ключей, которую можно включить при помощи настройки [Использовать комбинированные идентификаторы для синхронизируемых контактов MS Exchange]. Код настройки — UseComplexExchangeContactId. После ее включения может понадобиться повторная синхронизация.