Skip to main content
Skip table of contents

Upgrade Guide CX4.6/4.6.1 to CX4.7

This upgrade guide serves for Non-Helm to Helm-based deployments.

For this upgrade, the following Kubernetes version range is compatible v1.29.13+rke2r1 to v1.31.4+rke2r1

Existing CX deployment along with other groups ( for details about groups see CX Deployment Groups ) must be converted to their helm-based deployments. For this to work properly two approaches are possible

  • Retain External Components – Recommended

  • Migrate the complete solution – resulting longer downtime

This guide focuses on the Retain External Components approach

Clone the CX-4.7 revision

CODE
git clone -b CX-4.7 https://efcx:RecRpsuH34yqp56YRFUb@gitlab.expertflow.com/cim/cim-solution.git $HOME/CX-4.7

Retain External Components

WARNING:

After completing the cut-over using this migration guide from 4.6/4.6.1 to 4.7 CX Release, External components for example redis, minio, mongo and redis deployments are still referenced from the 4.6/4.6.1 release folders.

Bring down the CX solution by following these steps

Change directory to the folder containing 4.6/4.6.1 release

CODE
cd CX-4.6/cim-solution/kubernetes

Delete deployments

CODE
kubectl delete -f cim/Deployments

Delete config-maps

CODE
kubectl delete -f cim/ConfigMaps 

Delete services

CODE
kubectl delete -f cim/Services 

Delete ActiveMQ Statefulset

CODE
kubectl delete -f cim/StatefulSet

Delete ingress resources (for ingress-nginx )

CODE
kubectl delete  -f cim/Ingresses/nginx

OR if Traefik Ingress Controller is used then delete ingress resources ( for Traefik )

CODE
kubectl delete  -f cim/Ingresses/traefik

Uninstall the grafana helm charts as it is now part of the AgentDesk group chart in expertflow namespace

CODE
helm -n ef-external uninstall grafana

Delete the crons

CODE
kubectl -n expertflow delete -f pre-deployment/reportingConnector/ef-reporting-connector-cron.yaml 
CODE
kubectl -n expertflow delete -f pre-deployment/team-announcement/ef-team-announcement-cronjob.yaml

Delete old deployment of CX Surveys (if deployed):

CODE
kubectl delete -f cx-surveys/ConfigMaps -f cx-surveys/Ingresses/nginx -f cx-surveys/Services -f cx-surveys/Deployments

OR if Traefik Ingress Controller is used then delete ingress resources ( for Traefik )

CODE
kubectl delete  -f cx-surveys/Ingresses/traefik

Delete old deployment of CX Campaigns (if deployed):

CODE
kubectl delete -f cx-campaigns/ConfigMaps -f cx-campaigns/Ingresses/nginx -f cx-campaigns/Services -f cx-campaigns/Deployments

OR if Traefik Ingress Controller is used then delete ingress resources ( for Traefik )

CODE
kubectl delete  -f cx-campaigns/Ingresses/traefik

Delete Conversation Controller ConfigMaps

CODE
kubectl -n expertflow delete configmap ef-conversation-controller-actions-utils-cm
kubectl -n expertflow delete configmap ef-conversation-controller-actions-cm
kubectl -n expertflow delete configmap ef-conversation-controller-actions-pycache-cm

Custom Password Interpolations

Below are the interpolations when using custom or not-default password for mongodb, minio, redis, postgresql and activeMQ

Component with custom password

update required in

MongoDB

  1. Update CX -> values.yaml -> efConnectionVars -> MONGODB_PASSWORD

PostgreSQL

  1. Update keycloak -> keycloak-custom-values.yaml -> externalDatabase -> password

  2. Update CX -> values.yaml -> license-manager -> extraEnvVars-> DB_PASS

minio

  1. Update CX -> values.yaml -> file-engin -> extraEnvVars -> ACCESSKEY,SECRETKEY

Redis

  1. Update CX -> values.yaml -> efConnectionVars ->

  2. update ActiveMQ -> active-custom-values.yaml -> extraEnvVars -> REDIS_PASSWORD

keycloak

N/A

activeMQ

N/A

Add helm repository

CODE
helm repo add expertflow https://expertflow.github.io/charts/

update helm repo

CODE
helm repo update expertflow

Deploy ActiveMQ using helm

Change to 4.7 release directory

CODE
cd $HOME/CX-4.7

create a folder to hold the helm values files

CODE
mkdir helm-values

clone the values file to update the parameters required

CODE
helm show values expertflow/activemq > helm-values/ef-activemq-custom-values.yaml
CODE
helm upgrade --install=true  --namespace=ef-external --values=helm-values/ef-activemq-custom-values.yaml activemq expertflow/activemq

Wait for the ActiveMQ to start running

CODE
kubectl wait pods activemq-0 -n ef-external --for condition=Ready --timeout=600s

CX Core

Apply Conversation Controller ConfigMaps

CODE
kubectl -n expertflow create configmap ef-conversation-controller-actions-cm --from-file=pre-deployment/conversation-Controller/actions
kubectl -n expertflow create configmap ef-conversation-controller-actions-utils-cm --from-file=pre-deployment/conversation-Controller/utils
kubectl -n expertflow create configmap ef-conversation-controller-actions-pycache-cm --from-file=pre-deployment/conversation-Controller/__pycache__ 

Apply https-certificates for unified-admin

CODE
kubectl apply -f pre-deployment/static-tls/ef-unified-admin-https-certs.yaml

clone the values file for CX core and update all the site specific parameters in the values file

CODE
helm show values expertflow/cx > helm-values/ef-cx-custom-values.yaml

Edit/update the values file helm-values/ef-cx-custom-values.yaml with

CODE
global:
  ingressRouter: <DEFAULT-FQDN>

Deploy the CX Core using default values.

CODE
helm upgrade --install --namespace expertflow --create-namespace   ef-cx  --debug --values helm-values/ef-cx-custom-values.yaml expertflow/cx

CX AgentDesk

Delete the exiting translations config-map

CODE
kubectl delete cm ef-app-translations-cm -n expertflow

now run the following commands

CODE
kubectl -n expertflow create configmap ef-app-translations-cm --from-file=pre-deployment/app-translations/unified-agent/i18n/  

Apply the grafana data-source manifest.

CODE
kubectl -n expertflow  create secret generic ef-grafana-datasource-secret --from-file=post-deployment/config/grafana/supervisor-dashboards/datasource.yml

Create the grafana dashboard configs for grafana by applying the config-map manifest.

CODE
kubectl -n expertflow create cm ef-grafana-dashboard-provider-cm --from-file=post-deployment/config/grafana/supervisor-dashboards/dashboard.yml
For MySQL

Apply config-map for the MySQL supervisor and agent dashboard files using the steps below.

CODE
kubectl -n expertflow   create configmap ef-grafana-supervisor-dashboard-mysql --from-file=post-deployment/config/grafana/supervisor-dashboards/Supervisor_Dashboard_CIM-mysql.json

Add Agent Dashboard for MySQL

CODE
kubectl -n expertflow create configmap ef-grafana-agent-dashboard-mysql --from-file=post-deployment/config/grafana/supervisor-dashboards/Agent_Dashboard_CIM-mysql.json
For MSSQL Server

Apply config-map for the MSSQL supervisor dashboard files

CODE
kubectl -n expertflow create configmap ef-grafana-supervisor-dashboard-mssql  --from-file=post-deployment/config/grafana/supervisor-dashboards/Supervisor_Dashboard_CIM-mssql.json

Add config-map for agent dashboard MSSQL

CODE
kubectl  -n expertflow  create configmap ef-grafana-agent-dashboard-mssql --from-file=post-deployment/config/grafana/supervisor-dashboards/Agent_Dashboard_CIM-mssql.json

change these tags in helm-values/cx-agent-desk-custom-values.yaml for MSSQL Server Only in global section at the top of the file created in next step.

CODE
  efGrafanaSupervisorDashboardConfigMap: "ef-grafana-supervisor-dashboard-mssql"
  efGrafanaSupervisorDashboardFilename: "Supervisor_Dashboard_CIM-mssql.json"
  efGrafanaAgentDashboardConfigMap: "ef-grafana-agent-dashboard-mssql"
  efGrafanaAgentDashboardFilename: "Agent_Dashboard_CIM-mssql.json"

Clone the values file for CX AgentDesk and customize the file to accommodate the site specific details

CODE
helm show values expertflow/agent-desk > helm-values/cx-agent-desk-custom-values.yaml

Edit/update the values file helm-values/cx-agent-desk-custom-values.yaml with

CODE
global:
  ingressRouter: <DEFAULT-FQDN>

Install the AgentDesk using helm chart

CODE
helm upgrade --install --namespace expertflow   --set global.efCxReleaseName="ef-cx"   cx-agent-desk  --debug --values=helm-values/cx-agent-desk-custom-values.yaml expertflow/agent-desk

CX Channels

Customize the deployment by fetching the values file and edit it as per requirements.

CODE
helm show values expertflow/channels > helm-values/cx-channels-custom-values.yaml

Edit/update the values file helm-values/cx-channels-custom-values.yaml with

CODE
global:
  ingressRouter: <DEFAULT-FQDN>

Deploy the Channels helm chart by

CODE
helm upgrade --install --namespace expertflow  --set global.efCxReleaseName="ef-cx"  --debug   cx-channels --values  helm-values/cx-channels-custom-values.yaml  expertflow/channels

CX Surveys (skip if CX Surveys is not deployed)

Customize the deployment by fetching the values.yaml file and edit it as per requirements.

CODE
helm show values expertflow/surveys  > helm-values/cx-surveys-custom-values.yaml

Edit/update the values file helm-values/cx-surveys-custom-values.yaml with

CODE
global:
  ingressRouter: <DEFAULT-FQDN>

Deploy the CX Surveys helm chart by

CODE
helm upgrade --install --namespace expertflow  --set global.efCxReleaseName="ef-cx"   cx-surveys  --debug --values helm-values/cx-surveys-custom-values.yaml expertflow/surveys

CX Campaigns(skip if CX Campaigns is not deployed)

Customize the deployment by fetching the helm values file and edit it as per requirements.

CODE
helm show values expertflow/campaigns  > helm-values/cx-campaigns-custom-values.yaml

Edit/update the values file helm-values/cx-campaigns-custom-values.yaml with

CODE
global:
  ingressRouter: <DEFAULT-FQDN>

Deploy the CX Surveys helm chart by

CODE
helm upgrade --install --namespace expertflow   --set global.efCxReleaseName="ef-cx"   cx-campaigns --debug --values helm-values/cx-campaigns-custom-values.yaml expertflow/campaigns

CX Reporting

Delete the existing configmap containing Reporting-Connector configurations

CODE
kubectl -n expertflow delete configmap ef-reporting-connector-conf

Reporting Connector Config-Map Setup

Create the the database in target Database Management System using the scripts from cim-solution/kubernetes/pre-deployment/reportingConnector/SQLScripts/dbcreation directory.

Update below parameters in the file pre-deployment/reportingConnector/reporting-connector.conf

Parameter

Requirement

fqdn

 FQDN of the CX Solution

svc_name

k get svc -n expertflow | grep historical http://ef-cx-historical-reports-svc.expertflow.svc:8081

browser_language

 en or ar

connection_type

 mysql or mssql

sql_dbms_server_ip

<IP>

sql_dbms_port

for mysql 3306 / for msql 1433

sql_dbms_username

<username>

sql_dbms_password

<password>

sql_database_name

<database name>

Apply configuration for Reporting-Connector

CODE
kubectl -n expertflow create configmap ef-reporting-connector-conf-cm --from-file=pre-deployment/reportingConnector/reporting-connector.conf

Customize the deployment by fetching the helm values file and edit it as per requirements.

CODE
helm show values expertflow/reporting > helm-values/cx-reporting-scheduler-custom-values.yaml 

Edit/update the values file helm-values/cx-reporting-scheduler-custom-values.yaml with

CODE
global:
  ingressRouter: <DEFAULT-FQDN>

and deploy the Reporting Scheduler

CODE
helm upgrade --install --namespace expertflow --set global.efCxReleaseName="ef-cx"   cx-reporting --debug --values helm-values/cx-reporting-scheduler-custom-values.yaml  expertflow/reporting

CX Eleveo(skip if CX Eleveo is not deployed)

Customize the deployment by fetching the values.yaml file and edit it as per requirements.

CODE
helm show values expertflow/eleveo  > helm-values/ef-cx-eleveo-custom-values.yaml 

Edit/update the values file helm-values/ef-cx-eleveo-custom-values.yaml with

CODE
global:
  ingressRouter: <DEFAULT-FQDN>

and deploy the eleveo

CODE
helm upgrade --install --namespace expertflow  --set global.efCxReleaseName="ef-cx"   cx-eleveo --debug --values helm-values/ef-cx-eleveo-custom-values.yaml  expertflow/eleveo

CX CiscoScheduler (skip if CX CiscoScheduler is not deployed)

Customize the deployment by fetching the values.yaml file and edit it as per requirements.

CODE
helm show values expertflow/cisco-scheduler  > helm-values/cx-cisco-scheduler-custom-values.yaml 

Edit/update the values file helm-values/cx-cisco-scheduler-custom-values.yaml with

CODE
global:
  ingressRouter: <DEFAULT-FQDN>

Edit the values.yaml file and adjust the Cronjob schedule and other parameters.

CODE
helm upgrade --install --namespace expertflow   --set global.efCxReleaseName="ef-cx"  cx-ciscoscheduler --debug --values helm-values/cx-cisco-scheduler-custom-values.yaml expertflow/cisco-scheduler

change the directory

CODE
cd $HOME/CX-4.6/cim-solution/kubernetes

Re-apply the keycloak resources

CODE
kubectl apply -f cim/Ingresses/nginx/ef-keycloak-Ingress.yaml

Upgrade Upgrading Permissions On Keycloak For 4.7

Guide for migrating Keycloak Groups/Teams to CX Teams Guide for migrating Keycloak Groups/Teams to CX Teams

Update the channel Provider on unified admin

Goto channel provider menu and update all Provider Webhook with the following service name

CODE
for web channel, replace ef with ef-cx in the service name e.g.
from http://ef-web-channel-manager-svc:7000
To http://ef-cx-web-channel-manager-svc:7000
for any other channel deployed via cx-channels, replace ef with cx-channels in the service name e.g.
From http://ef-twilio-connector-svc:8085
To http://cx-channels-twilio-connector-svc:8085
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.