Exchange Listener synchronization service
Glossary Item Box
Introduction
The Exchange Listener synchronization service enables synchronizing Creatio with MS Exchange via the EWS (Exchange Web Services) protocol. This article covers deploying the Exchange Listener component for Creatio installed on-site.
The service consists of two required components:
- The Exchange Listener primary module;
- NoSQL DBMS Redis.
The Exchange Listener module initiates the outgoing connection to EWS API using the mailbox credentials and creates a subscription for catching events when new emails arrive. An open subscription remains in the component memory to ensure the quickest possible reaction to receiving a new email. When an event about a new email is received, the email sample downloads.
Redis DBMS enables creating a scalable and fault-tolerant system of processing nodes. Redis repository contains information about the mailboxes that are served. This lets any container process Creatio queries for adding a new subscription or check the status of a specific subscription regardless of the subscription node.
Requirements to Redis:
- anonymous access allowed
- separate database available for the Exchange Listener service operation
Using an in-memory repository will be enough for deploying the Exchange Listener service.
Service deployment (recommended)
We recommend using the Kubernetes orchestrator and Helm package manager to deploy the service.
Target environment:
- The Kubernetes cluster. Read more about how to set up and manage the cluster on the Kubernetes documentation website.
- The Helm package manager installed. Learn more about installing the package manager on the Helm documentation website.
After you configure the necessary environment, you can start deploying the service.
Step 1. Installing Redis
Use the GitHub website to learn more about how to install Redis using Helm.
Example of a command for installing Redis:
helm install --namespace <namespace name> --set usePassword=false --set=slave.persistence.enabled=false --set master.persistence.enabled=false --set cluster.enabled=false --name <redis_deployment_name> stable/redis
Step 2. Installing the Exchange Listener primary module
To install the module, download the helm package.
Find the available parameters of the helm package in the table 1 below:
ATTENTION
For newer Kubernetes versions, you will need to specify the API version and add the following parameter:
--set apiVersion=apps/v1
Example of a command for installing Exchange Listener using the service address and relative path:
helm install --set env.host=<redis_host> --set ApiUrl=<kubernetes_url> --set ingress.path=<listener_path> --set apiVersion=apps/v1 --namespace <namespace name> --name exchangelistener </path/to/helm/exchangelistener.tgz>
Exchange Listener address – <kubernetes_url>/<listener_path>.
You can check whether the service is enabled by making a query to the following address: <kubernetes_url>/<listener_path>/api/listeners/status (Fig. 1).
Example of installing the Exchange Listener using Node IP and port address:
helm install --set env.host==<redis_host> --set service.type=<node_IP> --set service.nodePort=<node_port> --set apiVersion=apps/v1 --namespace <namespace name> --name exchangelistener </path/to/helm/exchangelistener.tgz>
Exchange Listener address – <node_IP:node_port>.
You can check whether the service is enabled by making a query to the following address: <node_IP:node_port>/api/listeners/status (Fig. 1).
Fig. 1. Example of an Exchange Listener service response
Scaling
By default, separate nodes of the StatefulSet type process the queries based on 1 processor replica per 50 active mailboxes. The number of replicas depends on the replicaCount (table. 1) parameter. You can increase the number of processors by specifying the needed value. You can configure automatic scaling depending on the number of active subscriptions. To learn more, contact support@creatio.com.
Table 1. Available parameters of the Exchange Listener helm package
Parameter name | Parameter description | Default value |
---|---|---|
replicaCount | Number of StatefulSet query processors | 2 |
service.type | Service type (you can learn more about the Kubernetes service types in the corresponding documentation). | ClusterIP |
service.nodePort | If the service.type parameter equals NodePort, specify the external service port in this parameter (read more about the NodePort type in the Kubernetes documentation). | |
env.host | Host address for Redis | |
env.port | Host port for Redis | 6379 |
env.base | Database number for Redis | 0 |
ingress.enabled | Using address overriding via ingress | true |
ApiUrl | Service address if ingress.enabled=true | |
ingress.path | Service relative path | |
log4Net.level | Logging level by default | Info |
Setting up the Exchange Listener service on the side of Creatio
Step 1. Checking whether the anonymous ExchangeListenerService is enabled
The anonymous ExchangeListenerService must be available at [Creatio application address]/0/ServiceModel/ExchangeListenerService.svc (Fig. 2).
Fig. 2. An example of the response from the AnalyticsService service
Step 2. Correcting the system settings
ExchangeListenerServiceUri – [the service address used at installation]/api/listeners.
BpmonlineExchangeEventsEndpointUrl – [the address of the anonymous ExchangeListenerService]/NewEmail, for example https://mycreatio.com/0/ServiceModel/ExchangeListenerService.svc/NewEmail.
Step 3. Connecting additional functionality
On the additional functionality connection page, connect ExchangeListenerEnabled for all users.
Step 4. Deleting mail synchronization triggers
Step 5. Restarting the site