Document toolboxDocument toolbox

.Deployment Guide 13.2.1 v13.2

Solution Prerequisites

The following are the solution setup prerequisites.

Hardware requirements

For HA deployment, each machine in the cluster should have the following hardware specifications.


Minimum requirement

CPU

2 cores vCPU (4 cores for non-HA deployment)

RAM

4 GB (8 GB for non-HA deployment)

Disk

100 GB mounted on /

NICs

1 NIC

Software Requirements

OS Compatibility

We require the customer/partner to install the following software on the server.

OS

VersionNotes

CentOS 

7

Administrative privileges (root) are required to follow the deployment steps.

Redhat 8.2 (Enterprise)Deployment can be done by Non-root user and on Non-root path, by following the deployment guide 

Database Requirements

Item

Notes

MS SQL Server 2014, 2016 Express/ Standard/ Enterprise

For database failover, the client needs to set up an MS SQL failover cluster.

Docker Engine Requirements

ItemNotes

Docker CE

Docker CE 18+ and docker-compose (in case of CentOS)

GitGit install

Browser Compatibility

Item

Version

Notes

Firefox

the latest


Chrome

the latest


IENot testedAn on-demand testing cycle can be planned

Cisco Unified CCE Compatibility

UCCE 11.5


Installation Steps

Internet should be available on the machine where the application is being installed and connections on port 9242 should be allowed in the network firewall to carry out the installation steps. Trailing # is not a part of the command.

Allow ports in the firewall

For internal communication of docker swarm, you'll need to allow the communication (both inbound and outbound) on the ports: 7575/tcp,7676/tcp , 8090/tcp, 8091/tcp and 7077/tcp.

To start the firewall on CentOS (if it isn't started already), execute the following commands. You'll have to execute these commands on all the cluster machines.: 

# systemctl enable firewalld
# systemctl start firewalld

To allow the ports on CentOS firewall, you can execute the following commands. You'll have to execute these commands on all the cluster machines.

# firewall-cmd --add-port=7575/tcp --permanent
# firewall-cmd --add-port=7676/tcp --permanent
# firewall-cmd --add-port=8090/tcp --permanent
# firewall-cmd --add-port=8091/tcp --permanent
# firewall-cmd --add-port=7077/tcp --permanent
# firewall-cmd --reload

Configure Log Rotation

Add the following lines in /etc/docker/daemon.json file (create the file if not there already) and restart the docker daemon using systemctl restart docker. Perform this step on all the machines in the cluster in case of HA deployment.

{  
    "log-driver": "json-file"
    "log-opts": {
        "max-size": "50m",
        "max-file": "3"
    
}


Creating Databases

Create two databases i:e (For UMM & ECM) in the MSSQL/MYSQL server with a suitable name and follow the application installation steps.

Installing Application

  1. Download the deployment script ecm-deployment.sh and place it in any directory. This script will:
    1. delete the ecm-deployment directory in the present working directory if it exists.
    2. clone the ecm-deployment repository from gitlab in the present working directory.
  2. To execute the script, give it the execute permissions and execute it. (on RHEL, run commands with sudo)

    # chmod +x ecm-deployment.sh
    # ./ecm-deployment.sh

  3. In case of UCCX deployment and if only communication with UCCX is required to be over SSL, do this step.
    Export Finesse SSL certificate by opening UCCX URL in a browser and add the certificate in truststore.jks inside /ecm-deployment/docker/
    certificates folder. Certificate can be added to the same truststore or new truststore can be generated with the same name.
    Default truststore password is Expertflow464. If the same truststore is used then it will prompt for this password. Below is the command to add a certificate in truststore.  Or follow this linkto add the certificate. Update the SSL_TRUST_STORE_PASSWORD variable if a new truststore in created and a different password is chosen.

    keytool -importcert -file finesse-certificate-name.crt -keystore truststore.jks -alias "finesse"
    
    
  4. Update environment variables  in the following files inside ecm-deployment/docker/environment_variables folder.

    1. environment-variables.env

      NameDescription
      Do not change the default values for non-HA deployment. For HA, use SQL server cluster settings instead of the defaults.
      DB_URL

      Database connection url

      For example:

      DB_USERdatabase user
      DB_PASSdatabase password
      DB_DRIVERJDBC driver e.g., net.sourceforge.jtds.jdbc.Driver
      DB_DIALECTDatabase dialect e.g., org.hibernate.dialect.SQLServer2008Dialect
      Change the following variables for ECM services
      DATABASE_ENGINEsqlServer
      UCCX_HRDB_PASSWORDUCCX reporting user database password, only used of UCCX deployments
      SYNC_ENABLEDYES
      SYNC_INTERVAL

      Interval in minutes between every sync job, default is 5


      FEED_INTERVALInterval in minutes between every sync job, default is 1
      FETCH_DELAY2, do not change.
      OUTDATED_INTERVAL24, this is number of hours a contact is closed in ECM with Dangling status if it is not synced 
      REDUNDANT_DEPLOYMENTDecides if synchronizer deployment is redundant. Set it to "true". Holds strings "true" or "false". Default is false 
      INSTANCE_NAMEUsed for differentiation of instances when deployed redundant, could be any string. It should be different on both machines.
      UCCE_SHARED_PATH_DOMAINDialer import folder machine domain
      UCCE_SHARED_PATH_USERDialer import folder machine username
      UCCE_SHARED_PATH_PASSWORDDialer import folder machine password
      UCCE_SHARED_PATH_IPDialer import folder machine IP
      Change the following variables as per your environment For UMM
      PRIM_FINESSE_IP

      Primary Finesse URL including port (if not 80 or 443)

      For example:

      SEC_FINESSE_IP

      Secondary Finesse URL including port (if not 80 or 443)

      For example:

      FINESSE_USERFinesse administrator user
      FINESSE_PASSFinesse administrator password
      UMM_DB_URLUMM Database
      UMM_DB_DRIVERUMM Database driver

      UMM_DB_DIALECT

      UMM Database dialect
      UMM_DB_PASSUMM Database password
      UMM_DB_USERUMM Database username

      ADMIN_PASS

      The password of the admin user

      SSO_ENABLED
      it should be set to 'false' by default. No need to change this.

      SSL_TRUST_STORE_PATH

      keep default
      SSL_TRUST_STORE_PASSWORDTruststore password generated in step 3
      Change the following variables for Frontend (ECM and UMM)
      SERVER_URL

      Provide the URL of Umm :
      http://<machine_IP>:<PORT>

      For Example

      In the case of HA, machine_IP should be the virtual IP of HA

      CISCO_TYPEUCCE/UCCX (capital case without quotes) 
      SOO_AUTO_LOGIN
      it should be set to 'false' by default. No need to change this.
      SUP_VERSION
      No need to change its default value.
      PCS_URL

      http://<MACHINE-IP or FQDN>:PORT

      For Example

      PCS_USERNAMEdatabase username
      PCS_PASSWORDdatabase password
  5. Get domain/CA signed SSL certificates for ecm FQDN/CN and place the files in ecm-deployment/docker/certificates folder. The file names should be server.crt and server.key.
  6. Copy the ecm-deployment directory to the second machine for HA. Execute below command 

    # scp -r ecm-deployment root@machine-ip:~/

  7. If the customer wants to run SMS campaigns has SMPP Server then add the following environment variables to /docker/environement-variables/environment-variables.env file and add image gitlab.expertflow.com:9242/campaign-manager/smpp-gateway:13.2 to docker/docker-compose.yml with env_file set to the same file as other containers.  Keep in mind this service will run on only one side. If it is an upgrade of previous version then run below query in database as well. 

    alter table survey_feedback alter column callback_id varchar(255) null
    NameDescription
    SMPP_HOSTSMPP Host, provided by SMPP Server provider
    SMPP_PORTSMPP Port number, default = 2775
    SMPP_CLIENT_IDSMPP User name
    SMPP_PASSWORDSMPP password
    SMPP_ADDRESS_RANGEThe number to which the customer will send the SMS response
    SMPP_SOURCE_ADDRESSThe number that will show on customer device as sender, address range and source address remain same in most cases
    BATCH_SIZEThe number of SMS that the service will fetch from database for sending, default = 0
    SMPP_DATA_CODINGThe data coding to be used for SMS, default=0, keep the default value
    SMPP_SOURCE_TONSource Type Of Number, keep it to default value = 0
    SMPP_DESTINATION_TONDestination Type Of Number, keep it to default value = 0
    SMPP_SOURCE_NPISource Number Plan Indicator, keep it to default value = 0
    SMPP_DESTINATION_NPIKeep it to default = 0
    SMPP_SYSTEM_TYPEKeep it default value = cp
    SMPP_VALIDITY_PERIODKeep it to default = 0
    SMPP_PRIORITY_FLAGKeep it to default = 0
  8. Go to the second machine and update the environment variables where necessary like INSTANCE_NAME and SERVER_URL
  9. Execute the following commands inside the ecm-deployment directory on both machines.

    # chmod 755 install.sh
    # ./install.sh

  10. Run the following command to ensure that all the components are up and running. The screenshot below shows a sample response for a standalone non-HA deployment. 

    # docker ps


Virtual IP configuration

Repeat the following steps for all the machines in the HA cluster.

  1. Download keepalived.sh script and place it in any directory.
  2. Give execute permission and execute the script. This will create a keep-alived directory.

    # chmod +x keepalived.sh
    # ./keepalived.sh

  3. Configure keep.env file inside keep-alived directory

    Name

    Description

    KEEPALIVED_UNICAST_PEERS

    IPs of the machines in the cluster. On each machine, this variable should have a list of IPs of all the other machines in the cluster. The format of the list is as below: 

    192.168.1.80

    KEEPALIVED_VIRTUAL_IPSVirtual IP of the cluster. It should be available in the LAN. For example: 192.168.1.245
    KEEPALIVED_PRIORITYPriority of the node. Instance with lower number will have a higher priority. It can take any value from 1-255. 
    KEEPALIVED_INTERFACEName of the network interface with which your machine is connected to the network. On CentOS, ifconfig or ip addr sh will show all the network interfaces and assigned addresses. 
    CLEARANCE_TIMEOUTCorresponds to the initial startup time of the application in seconds which is being monitored by keepalived. A nominal value of 60-120 is good enough
    KEEPALIVED_ROUTER_IDDo not change this value.
    SCRIPT_VAR

    This script is continuously polled after 2 seconds. Keepalived relinquishes control if this shell script returns a non-zero response. It could be either umm or ECM backend API.

    pidof dockerd && wget -O index.html http://localhost:7575/

  4. Give the execute permission and execute the script: 

    # chmod +x keep-command.sh
    # ./keep-command.sh


Adding License and Application Settings

  1. Browse to http://<MACHINE_IP or FQDN:UMM_Port>/umm in your browser (FQDN will be the domain name assigned to the IP/VIP). 
  2. Click on the red warning icon on right, paste the license in the field and click save. 




  3. Once license is added, go to http://<MACHINE_IP or FQDN>/#/applicationSetting and define application settings.
  4. Restart the services after application settings are defined using below commands inside ecm-deployment directory

    docker-compose -f docker/docker-compose.yml down
    docker-compose -f docker/docker-compose.yml up -d