Upgrade Guide CX-4.4.10 to CX-4.7
This upgrade guide serves for Non-Helm to Helm-based deployments
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
Retain External Components
WARNING:
After completing the cut-over using this migration guide from 4.4.10 to 4.7 CX Release, External components for example redis, minio, mongo and redis deployments are still referenced from the 4.4.10 release folders.
Clone the CX-4.7 revision
git clone -b CX-4.7 https://efcx:RecRpsuH34yqp56YRFUb@gitlab.expertflow.com/cim/cim-solution.git $HOME/CX-4.7
Add helm repository
helm repo add expertflow https://expertflow.github.io/charts/
update helm repo
helm repo update expertflow
TLS Enablement for Stateful Components
Enable TLS and Auth using the following guide TLS Enablement for Stateful Components
Expertflow ETL
For Expertflow ETL deployment please refer to Expertflow ETL Deployment
For MongoDB data migration refer to this guide
WARNING:
After the MongoDB data migration, please verify the associated MRD type and the Interruptible flag for MRDs (Unified Admin → Routing Engine → Channel Category Settings). Below are the default values for the three system-configured MRDs:
CHAT
MRD Type: CHAT
Interruptible: TRUE
CX VOICE
MRD Type: CX_VOICE
Interruptible: FALSE
CISCO CC
MRD Type: CISCO_CC
Interruptible: FALSE
Bring down the CX solution by following these steps
Change the directory to the folder containing the 4.4.10 release
cd CX-4.4.10/cim-solution/kubernetes
Delete deployments
kubectl delete -f cim/Deployments
Delete config-maps
kubectl delete -f cim/ConfigMaps
Delete services
kubectl delete -f cim/Services
Delete ActiveMQ Statefulset
kubectl delete -f cim/StatefulSet
Delete ingress resources (for ingress-nginx )
kubectl delete -f cim/Ingresses/nginx
OR if Traefik Ingress Controller is used then delete ingress resources ( for Traefik )
kubectl delete -f cim/Ingresses/traefik
Uninstall the grafana helm charts as it is now part of the AgentDesk group chart in expertflow namespace
helm -n ef-external uninstall grafana
Delete the crons
kubectl -n expertflow delete -f pre-deployment/reportingConnector/ef-reporting-connector-cron.yaml
kubectl -n expertflow delete -f pre-deployment/team-announcement/ef-team-announcement-cronjob.yaml
Delete old deployment of CX Surveys (if deployed):
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 )
kubectl delete -f cx-surveys/Ingresses/traefik
Delete old deployment of CX Campaigns (if deployed):
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 )
kubectl delete -f cx-campaigns/Ingresses/traefik
Delete Conversation Controller ConfigMaps
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 |
|
PostgreSQL |
|
minio |
|
Redis |
|
keycloak | N/A |
activeMQ | N/A |
Deploy ActiveMQ using helm
Change to 4.7 release directory
cd $HOME/CX-4.7
create a folder to hold the helm values files
mkdir helm-values
clone the values file to update the parameters required
helm show values expertflow/activemq > helm-values/ef-activemq-custom-values.yaml
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
kubectl wait pods activemq-0 -n ef-external --for condition=Ready --timeout=600s
CX Core
Apply Conversation Controller ConfigMaps
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__
Create Logback cm
kubectl apply -f pre-deployment/logback/
kubectl -n expertflow create configmap ef-logback-cm --from-file=pre-deployment/logback/logback-spring.xml
Apply https-certificates for unified-admin
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
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
global:
ingressRouter: <DEFAULT-FQDN>
To enable the ReplicaSet
Comment the MONGODB_HOST for standalone
#MONGODB_HOST: "mongo-mongodb.ef-external.svc:27017"
Un-comment the MONGODB_HOST for replicaSet
MONGODB_HOST: mongo-mongodb-0.mongo-mongodb-headless.ef-external.svc.cluster.local:27017,mongo-mongodb-1.mongo-mongodb-headless.ef-external.svc.cluster.local:27017
Update MONGODB_REPLICASET_ENABLED value to true
MONGODB_REPLICASET_ENABLED: "false" to MONGODB_REPLICASET_ENABLED: "true"
Deploy the CX Core using default values.
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
kubectl delete cm ef-app-translations-cm -n expertflow
now run the following commands
kubectl -n expertflow create configmap ef-app-translations-cm --from-file=pre-deployment/app-translations/unified-agent/i18n/
kubectl -n expertflow create configmap ef-canned-messages-cm --from-file=pre-deployment/app-translations/unified-agent/canned-messages
kubectl -n expertflow create configmap ef-crm-service-cm --from-file=pre-deployment/crm-service/
Apply the grafana data-source manifest.
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.
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.
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
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
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
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.
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
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
global:
ingressRouter: <DEFAULT-FQDN>
Install the AgentDesk using helm chart
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.
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
global:
ingressRouter: <DEFAULT-FQDN>
Deploy the Channels helm chart by
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.
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
global:
ingressRouter: <DEFAULT-FQDN>
Deploy the CX Surveys helm chart by
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.
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
global:
ingressRouter: <DEFAULT-FQDN>
Deploy the CX Surveys helm chart by
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
kubectl -n expertflow delete configmap ef-reporting-connector-conf
Reporting Connector Config-Map Setup
To Upgrade the SQL DB
run the following upgrade script
kubernetes/pre-deployment/reportingConnector/dbScripts/dbupdate/historical_reports_db_update_script_MYSQL_4.4.10_to_4.7.sql
To Create a New DB
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 | Please use the ouput of `kubectl -n expertflow get svc | grep historical ` |
browser_language | en or ar |
connection_type | mysql or mssql |
sql_dbms_server_ip | <IP> of the MySQL/MSSQL Server |
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
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.
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
global:
ingressRouter: <DEFAULT-FQDN>
and deploy the Reporting Scheduler
helm upgrade --install --namespace expertflow --set global.efCxReleaseName="ef-cx" cx-reporting --debug --values helm-values/cx-reporting-scheduler-custom-values.yaml expertflow/reporting
To update the superset reports, use the following guide Configure and import historical report templates
CX Eleveo(skip if CX Eleveo is not deployed)
Customize the deployment by fetching the values.yaml file and edit it as per requirements.
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
global:
ingressRouter: <DEFAULT-FQDN>
and deploy the eleveo
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.
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
global:
ingressRouter: <DEFAULT-FQDN>
Edit the values.yaml
file and adjust the Cronjob schedule and other parameters.
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
cd $HOME/CX-4.6/cim-solution/kubernetes
Re-apply the keycloak resources
kubectl apply -f cim/Ingresses/nginx/ef-keycloak-Ingress.yaml
Upgrade Upgrading Permissions On Keycloak
Guide for migrating Keycloak Groups/Teams to CX Teams Guide for migrating Keycloak Groups/Teams to CX Teams
Update Provider Webhooks
Update the channel Provider on the unified admin
Goto channel provider menu and update all Provider Webhooks with the updated service name
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