Jump to: navigation, search

Deploying CX Contact

This page describes how to complete an on-premise deployment of CX Contact. The steps are as follows:

  1. Create the Outbound Database
  2. Start OCS
  3. Set up the standalone Docker environment
  4. Start Portainer
  5. Set up CX Contact on Kubernetes
Configuration objects are created automatically via scripts. Manual configuration is not required in a CX Contact deployment.

Create the Outbound Database

Create the Outbound Database to store calling lists and suppression lists. It should be manually created on the same Postgre DBMS in which CME resides.

Execute the following set of SQL statements to create the Outbound Database and a user (note that the database name, username, and password must match the settings configured in OCS DAP).

CREATE DATABASE cc_outbound;
ALTER DATABASE cc_outbound SET bytea_output TO 'escape';
ALTER DATABASE cc_outbound SET standard_conforming_strings TO 'off';
CREATE USER cc_outbound WITH PASSWORD 'cc_outbound';
GRANT ALL PRIVILEGES ON DATABASE cc_outbound TO cc_outbound;
ALTER DATABASE cc_outbound OWNER TO cc_outbound;

Start OCS

In the Solution Control Interface, go to applications/OCS to start OCS.

Set Up the Standalone Docker Environment

Before you can use the docker-compose.yaml file with Docker Compose, you must first manually edit the file to satisfy the user's environment.

Get the docker-compose.yaml file from the repository link.

In the folder containing env.docker-compose.yaml, enter the following:

 docker-compose -f env.docker-compose.yaml up -d

Start Portainer

Genesys recommends you use Portainer to view the status of all containers and to access logs. Use the following command to start Portainer on the same VM where all containers are started:

docker volume create portainer_data
docker run --restart=always -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer --no-auth

Next, go to http://<your-vm-ip>:9000. The user interface will display the state of all containers. You can open each container and click logs to see the stdout / stderr logs.


CX Contact components should never use Docker bridge networks or swarms, which severely impact performance of the production systems. Instead, the components should use the Docker host network mode.

CX Contact components use the following ports:

Service Ports used
User Interface (UI) 8101 - Nignx listener port (static content served)
API Aggregator
  • 8102 - API main
  • 9102 - API management
List Builder
  • 3004 - API main
  • 3101 - API management
Compliance Manager
  • 3007 - API main
  • 3107 - API management
List Manager
  • 3005 - API main
  • 3105 - API management

Set up CX Contact on Kubernetes

The Genesys Kubernetes manifests are packaged as Helm charts, which are in .tgz format. Helm is a package and deployment manager for Kubernetes, and a chart contains a bundle of Kubernetes resources.

To access the CX Contact Helm chart, go to the Helm repository. If you do not have access to this repository, contact your Genesys representative to request the chart via a secure file transfer.

Once you've located the chart, use the wget command to download it.

Finally, install the chart using the helm install command, as follows: Docker chart install.png

For more detailed information about Helm installation, refer to the Docker Deployment Guide.

High Availability and Disaster Recovery

In a Kubernetes deployment, you can specify the replicas for each CX Contact microservice, as follows:

apiVersion: extensions/v1beta1
kind: Deployment
  creationTimestamp: null
    io.kompose.service: campaign-manager
  name: campaign-manager
  replicas: 2
    type: Recreate
      creationTimestamp: null
        io.kompose.service: campaign-manager
  • In case of a pod failure, Kubernetes will automatically reschedule the pods with the desired number of replicas.
  • In case of node failure, Kubernetes will reschedule the pods to run on a healthy node. Use the node-affinity tag to specify the desired node for the pods.


Comment on this article:

blog comments powered by Disqus
This page was last modified on 11 October 2018, at 11:34.