Synchronizing contacts with MS Exchange
Glossary Item Box
General information
Integration with various entities of MS Exchange via EWS protocol (Exchange Web Service) is supported by the Sync Engine synchronization mechanism. This article describes synchronization of contacts between bpm'online and MS Exchange. The task synchronization algorithm is no different from that described in the article about Sync Engine synchronization. The process runs in three stages:
- Retrieving changes from MS Exchange and applying them
- Retrieving changes from bpm'online and applying them
- Creating new contacts from bpm'online in MS Exchange.
Integration classes
As described in the "Bpm'online synchronization with external storages" article, to implement integration using this mechanism, a class is required that implements the logic of working with external storage (RemoteProvider heir) and a class that implements the IRemoteItem interface, which is an instance of the synchronization element (in our case — MS Exchange contact).
Fig. 1. RemoreProvider hierarchy schema
Fig. 2. RemoteItem hierarchy schema
The following classes are used for contact synchronization:
- The ExchangeContactSyncProvider class is the service provider for the MS Exchange external storage. This class implements the logic of selecting data and saving changes in bpm'online and MS Exchange.
- The ExchangeContact class implements the IRemoteItem interface. The logic of filling in data in the corresponding systems is implemented in it.
- The ExchangeAddressDetailsSynchronizer class contains methods for converting contact addresses.
- The ExchangeEmailAddressDetailsSynchronizer class contains methods for converting contact email addresses.
- The ExchangePhoneNumbersDetailsSynchronizer class contains methods for convertingcontacts phones.
The logic of filling in details is located in separate classes, as there are significant differences in the formats of data storage in bpm'online and MS Exchange. Additional conversion is required.
Synchronized data
The correspondence of bpm'online objects to the Contact MS Exchange class fields is shown on table 1.
Table 1. The correspondence of bpm'online objects to the Contact MS Exchange class fields
Bpm'online object | Object field | The Contact MS Exchange class field |
---|---|---|
Contact | Name | DisplayName |
Surname | Surname | |
GivenName | GivenName | |
MiddleName | MiddleName | |
Account | CompanyName | |
JobTitle | JobTitle | |
Department | Department | |
BirthDate | Birthday | |
SalutationType | TitleTag | |
Gender | GenderTag | |
ContactCommunication | Number | The PhoneNumbers collection values |
CommunitactionType | The PhoneNumbers collection value key | |
ContactAddresses | City | The PhysicalAddresses collection element City field |
Country | The PhysicalAddresses collection element CountryOfOrigin field | |
Region | The PhysicalAddresses collection element State field | |
Address | The PhysicalAddresses collection element Street field | |
Zip | The PhysicalAddresses collection element PostalCode field | |
AddressType | The PhysicalAddresses collection value key |
The correspondence of communication types is shown in Table 2.
Table 2. The correspondence of communication types of bpm'online to MS Exchange
Bpm'online communication type | MS Exchange communication type |
---|---|
EmailAddress1, EmailAddress2, EmailAddress3 | |
WorkPhone | BusinessPhone, BusinessPhone2 |
HomePhone | HomePhone |
MobilePhone | MobilePhone |
The correspondence of addresses is shown in Table 3.
Table 3. The correspondence of addresses of bpm'online to MS Exchange
Bpm'online address type | MS Exchange address type |
---|---|
HomeAddress | Home |
BusinessAddress | Business |
Logic of selecting data for synchronization
To select changes to the list of contacts selected for MS Exchange folder synchronization, use the following terms: select contacts for MS Exchange, which were modified after the last contact synchronization or an MS Exchange contact, which was not marked as synced. The contacts which were modified have corresponding contacts in bpm'online. The updated changes are applied in the corresponding system.
When you select bpm'online contacts for synchronization, select the following:
- contacts that have the current user as an author
- contacts with a date of last modification that does not correspond to the date of the last synchronization.
- contacts that were not used on the first step of synchronization
User settings also affect the rules for selecting new contacts in bpm'online. Three settings are available:
- Synchronize employees contacts. When you select this setting, the "Contact type" filter will be added to the request, and only the "Employee" type contacts will be synchronized.
- Synchronize customers contacts. When you select this setting, the "Contact type" filter will be added to the request, and only the "Customer" type contacts will be synchronized.
- Sync contacts from certain groups. When you select this setting, the selected contact group filters will be added to the request.
Additional features
Binding contact and account
If an MS Exchange contact has the CompanyName field filled in, then there are three possible options for filling in the [Account] lookup field:
- Always bind. If a nonexistent account is set, it will be created. This is the default option.
- Bind, if an account exists. Same as above, but nonexistent accounts are not created.
- Never bind. The [Account] field will not be filled in during synchronization.
Using the advanced contact keys in external storage
A situation may occur when there is a large number of MS Exchange contacts and of them will receive the same ID. As a result, synchronization may not correctly identify the appropriate contact in bpm'online. To work around this situation, there are advanced external keys, which can be enabled by the [Use composite IDs for MS Exchange synchronized contacts] setting. Setting code - UseComplexExchangeContactId. After enabling it, you may need to resynchronize.