Upgrade guide CX-4.5.1 to CX-4.5.2
Before upgrading, ensure that the system is idle, i.e; all agents are logged out from the AgentDesk.
Make sure the system is idle for 30 minutes, to sync the reporting data.
Clone the CX repository on the target server
CODE# Create CX-4.5.2 directory from root mkdir CX-4.5.2 # Navigate to CX-4.5.2 cd CX-4.5.2 # Clone the CX-4.5.2 branch of cim-solution repository git clone -b CX-4.5.2 https://efcx:RecRpsuH34yqp56YRFUb@gitlab.expertflow.com/cim/cim-solution.git # Navigate to root(previous) directory cd ..
Stop all core components.
CODE# Navigate to the following folder of the existing release i.e. CX-4.5.1 cd cim-solution/kubernetes kubectl delete -f cim/Deployments kubectl delete -f cim/StatefulSet/ef-amq-statefulset.yaml # Stop reporting connector kubectl delete -f pre-deployment/reportingConnector/ef-reporting-connector-cron.yaml -n expertflow # delete configmap for reporting connector kubectl -n expertflow delete configmap ef-reporting-connector-conf # Stop team-announcement cron job kubectl delete -f pre-deployment/team-announcement/ef-team-announcement-cronjob.yaml -n expertflow
Enable TLS and Auth using the following guide TLS Enablement for Stateful Components
Update the AMQ deployment.
CODE1) Open cim/StatefulSet/ef-amq-statefulset.yaml file. 2) Update AMQ Tag gitimages.expertflow.com/general/activemq-k8s:5.17.1-alpine-zulu-K8s-4.5.2-4.5.2 3) Add following new environment variables - name: REDIS_CLIENT_CERT value: "/redis/tls.crt" - name: REDIS_CLIENT_KEY value: "/redis/tls.key" - name: REDIS_CA_CERT value : "/redis/ca.crt" - name: TRUST_STORE_PASSWORD value: "Expertflow123" - name: KEY_STORE_PASSWORD value: "Expertflow123" 4) Update following exiting environment variables - name: REDIS_SSL_ENABLED value: "true" - name: REDIS_MAX_ACTIVE value: "200" - name: REDIS_MAX_IDLE value: "200" - name: REDIS_MIN_IDLE value: "100" 5) Add following Volumes "redis-crt" spec: replicas: 1 serviceName: ef-amq-svc selector: matchLabels: app: ef-amq template: metadata: labels: app: ef-amq ef: expertflow spec: volumes: # Add following lines - name: redis-crt secret: secretName: redis-crt 6) Add following VolumeMounts "redis-crt" env: - name: ACTIVEMQ_OPTS_MEMORY value: "-Xms512M -Xmx4G" - name: MAX_CONNECTIONS value: "5000" volumeMounts: - name: activemq-data mountPath: "/opt/activemq/data" # Add following lines - name: redis-crt mountPath: "/redis" 7) Apply ActiveMQ deployment kubectl apply -f cim/StatefulSet/ef-amq-statefulset.yaml
Update the ConfigMaps
CODE# Update ef-connection-env-configmap.yaml 1) kubectl delete -f cim/ConfigMaps/ef-connection-env-configmap.yaml 2) Open cim/ConfigMaps/ef-connection-env-configmap.yaml 3) Add following new environment variables MONGODB_CLIENT_CERT: /mongo/client-pem MONGODB_CA_CERT: /mongo/mongodb-ca-cert TRUST_STORE_PASSWORD: "Expertflow123" KEY_STORE_PASSWORD: "Expertflow123" REDIS_CLIENT_CERT: /redis/tls.crt REDIS_CLIENT_KEY: /redis/tls.key REDIS_CA_CERT: /redis/ca.crt 4) Update following existing environment variables From MONGODB_ENABLE_SSL: "false" to MONGODB_ENABLE_SSL: "true" From REDIS_SSL_ENABLED: "false" to REDIS_SSL_ENABLED: "true" From MONGO_HOST: mongodb://mongo-mongodb.ef-external.svc.cluster.local to MONGO_HOST: mongo-mongodb.ef-external.svc.cluster.local From MONGODB_PASSWORD: da17deWHI0 to MONGODB_PASSWORD: Expertflow123 # Update ef-realtime-reporting-configmap.yaml 1) kubectl delete -f cim/ConfigMaps/ef-realtime-reporting-configmap.yaml 2) Open cim/ConfigMaps/ef-realtime-reporting-configmap.yaml 3) Update following existing environment variables DATASOURCE_USERNAME: elonmusk DATASOURCE_PASSWORD: 68i3nj7t # Update ef-license-manager-configmap.yaml 1) kubectl delete -f cim/ConfigMaps/ef-license-manager-configmap.yaml 2) Open cim/ConfigMaps/ef-license-manager-configmap.yaml 3) Update following existing environment variables From jdbc:postgresql://ef-postgresql.ef-external.svc.cluster.local:5432/licenseManager to jdbc:postgresql://ef-postgresql.ef-external.svc.cluster.local:5432/licenseManager?sslmode=verify-ca&sslrootcert=/postgresql/ca.crt # Update ef-scheduled-activities-configmap.yaml 1) kubectl delete -f cim/ConfigMaps/ef-scheduled-activities-configmap.yaml 2) Open cim/ConfigMaps/ef-scheduled-activities-configmap.yaml 3) Delete following environment variables COUNT_OF_WEBHOOK_NOTIFICATION_RETRY_ATTEMPTS WEBHOOK_NOTIFICATION_RETRY_TIMEOUT_IN_SECONDS 4) Add following new environment variables THIRD_PARTY_COMPONENTS_NEXT_RETRY_TIMEOUT_DURATION_IN_SECONDS : "600" THIRD_PARTY_COMPONENTS_RETRY_COUNT_ATTEMPTS_LIMIT : "5" # Update ef-unified-agent-configmap.yaml 1) kubectl delete -f cim/ConfigMaps/ef-unified-agent-configmap.yaml 2) Open cim/ConfigMaps/ef-unified-agent-configmap.yaml 3) Add following new environment variable SIP_MONITORING_DN: "*44" 4) Copy Agent desk translation files 5) From CX-4.5.2/cim-solution/kubernetes/pre-deployment/app-translations/unified-agent/i18n To pre-deployment/app-translations/unified-agent 6) Delete and Create the ConfigMap kubectl delete cm ef-app-translations-cm -n expertflow kubectl -n expertflow create configmap ef-app-translations-cm --from-file=pre-deployment/app-translations/unified-agent/i18n/ 7) Copy Canned messages From CX-4.5.2/cim-solution/kubernetes/pre-deployment/app-translations/unified-agent/canned-messages/canned-messages.json To pre-deployment/app-translations/unified-agent/canned-messages 8) Delete and Create the ConfigMap kubectl delete cm ef-canned-messages-cm -n expertflow kubectl -n expertflow create configmap ef-canned-messages-cm --from-file=pre-deployment/app-translations/unified-agent/canned-messages
Update following core deployments.
CODE#sample for adding volume spec: replicas: 1 selector: matchLabels: ef.service: ef-ccm strategy: {} template: metadata: labels: ef.service: ef-ccm ef: expertflow spec: #add the volume here volumes: - name: mongo-mongodb-ca secret: secretName: mongo-mongodb-ca - name: redis-crt secret: secretName: redis-crt #sample for adding volume mount image: gitimages.expertflow.com/cim/customer-channel-manager:4.5.1_f-CIM-14005 name: ef-ccm volumeMounts: - name: mongo-mongodb-ca mountPath: /mongo - name: redis-crt mountPath: /redis # Add following new environment variables, Volumes and VolumeMounts in below mentioned core components deployment file - name: MONGODB_CLIENT_CERT valueFrom: configMapKeyRef: key: MONGODB_CLIENT_CERT name: ef-connection-env-cm - name: MONGODB_CA_CERT valueFrom: configMapKeyRef: key: MONGODB_CA_CERT name: ef-connection-env-cm - name: TRUST_STORE_PASSWORD valueFrom: configMapKeyRef: key: TRUST_STORE_PASSWORD name: ef-connection-env-cm - name: KEY_STORE_PASSWORD valueFrom: configMapKeyRef: key: KEY_STORE_PASSWORD name: ef-connection-env-cm - name: REDIS_CA_CERT valueFrom: configMapKeyRef: key: REDIS_CA_CERT name: ef-connection-env-cm - name: REDIS_CLIENT_CERT valueFrom: configMapKeyRef: key: REDIS_CLIENT_CERT name: ef-connection-env-cm - name: REDIS_CLIENT_KEY valueFrom: configMapKeyRef: key: REDIS_CLIENT_KEY name: ef-connection-env-cm volumes: - name: mongo-mongodb-ca secret: secretName: mongo-mongodb-ca - name: redis-crt secret: secretName: redis-crt volumeMounts: - name: mongo-mongodb-ca mountPath: /mongo - name: redis-crt mountPath: /redis # core components list to add above variables, volumes and volumeMounts Customer Channel Manager Conversation Manager (update only volumes and volumeMounts) Conversation-controller (only add redis volumeMount) Routing Engine Bot Framework State Events Logger Campaign Scheduler Realtime Reports Manager Historical Reports Manager Agent manager Cim backend Team announcement Unified admin # Update ef-licence-manager-deployment.yaml 1) Open cim/Deployments/ef-licence-manager-deployment.yaml 2) Update tag: gitimages.expertflow.com/license-mangement/license-manager:4.5.2 3) Update Volumes volumes: - name: ef-postgresql-crt secret: secretName: ef-postgresql-crt 4) Update VolumeMounts volumeMounts: - name: ef-postgresql-crt mountPath: /postgresql # Update channel-manager tag 1) Open cim/Deployments/ef-ccm-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/customer-channel-manager:4.5.2 # Update Conversation Manager Deployment 1) Open cim/Deployments/ef-conversation-manager-deployment.yaml 2) Update following tags in conversation-manager deployment gitimages.expertflow.com/cim/conversation-controller:4.5.2 gitimages.expertflow.com/cim/conversation-manager:4.5.2 # Update routing-engine tag 1) Open cim/Deployments/ef-routing-engine-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/media-routing-engine:4.5.2 # Update Bot-framework tag 1) Open cim/Deployments/ef-bot-framework-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/bot-framework:4.5.2 # Update StateEvents-Logger tag 1) Open cim/Deployments/ef-state-events-logger-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/state-events-logger:4.5.2 # Update Realtime Reports tag 1) Open cim/Deployments/ef-realtime-reports-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/realtime-reports-manager:4.5.2 # Update Campaign Scheduler tag 1) Open cim/Deployments/ef-scheduled-activities-deployment.yaml file. 2) Update tag gitimages.expertflow.com/campaign-manager/campaign-scheduler:4.5.2 3) Delete following environment variables - name: COUNT_OF_WEBHOOK_NOTIFICATION_RETRY_ATTEMPTS valueFrom: configMapKeyRef: key: COUNT_OF_WEBHOOK_NOTIFICATION_RETRY_ATTEMPTS name: ef-scheduled-activities-cm - name: WEBHOOK_NOTIFICATION_RETRY_TIMEOUT_IN_SECONDS valueFrom: configMapKeyRef: key: WEBHOOK_NOTIFICATION_RETRY_TIMEOUT_IN_SECONDS name: ef-scheduled-activities-cm 4) Add following new variables - name: THIRD_PARTY_COMPONENTS_RETRY_COUNT_ATTEMPTS_LIMIT valueFrom: configMapKeyRef: key: THIRD_PARTY_COMPONENTS_RETRY_COUNT_ATTEMPTS_LIMIT name: ef-scheduled-activities-cm - name: THIRD_PARTY_COMPONENTS_NEXT_RETRY_TIMEOUT_DURATION_IN_SECONDS valueFrom: configMapKeyRef: key: THIRD_PARTY_COMPONENTS_NEXT_RETRY_TIMEOUT_DURATION_IN_SECONDS name: ef-scheduled-activities-cm # Update Historical Reports Manager tag 1) Open cim/Deployments/ef-historical-reports-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/historical-reports-manager:4.5.2 # Update Cim Customer tag 1) Open cim/Deployments/ef-cim-customer-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/cim-backend:4.5.2 # Update Customer Widget tag 1) Open cim/Deployments/ef-customer-widget-deployment.yaml file. 2) Update tag gitimages.expertflow.com/efpublic/customer-widget:4.5.2 # Update Unified Admin tag 1) Open cim/Deployments/ef-unified-admin-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/unified-admin:4.5.2 # Update Unified Agent tag 1) Open cim/Deployments/ef-unified-agent-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/unified-agent:4.5.2 3) Add the following env in ef-unified-agent-deployment.yaml - name: SIP_MONITORING_DN valueFrom: configMapKeyRef: key: SIP_MONITORING_DN name: ef-unified-agent-cm # Update Team Announcement tag 1) Open cim/Deployments/ef-team-announcement-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/team-announcement:4.5.2 # Update agent-manager tag 1) Open cim/Deployments/ef-agent-manager-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/agent-manager:4.5.2 # Update 360Connector tag 1) Open cim/Deployments/ef-360-connector-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/360-connector:4.5.2 # Update Facebook-Connector tag 1) Open cim/Deployments/ef-facebook-connector-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/facebook-connector:4.5.2 # Update Instagram-Connector tag 1) Open cim/Deployments/ef-instagram-connector-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/instagram-connector:4.5.2 # Update SMPP-Connector tag 1) Open cim/Deployments/ef-smpp-connector-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cti/hc_smpp_connector:4.5.2 # Update Telegram-Connector tag 1) Open cim/Deployments/ef-telegram-connector-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/telegram-connector:4.5.2 # Update Twilio-Connector tag 1) Open cim/Deployments/ef-twilio-connector-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/twilio-connector:4.5.2 # Update Twitter-Connector tag 1) Open cim/Deployments/ef-twitter-connector-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/twitter-connector:4.5.2 # Update Viber-Connector tag 1) Open cim/Deployments/ef-viber-connector-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/viber-connector:4.5.2 # Update Web Channel Manager tag 1) Open cim/Deployments/ef-web-channel-manager-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/web-channel-manager:4.5.2 # Update File-Engine tag 1) Open cim/Deployments/ef-file-engine-deployment.yaml file. 2) Update tag gitimages.expertflow.com/chat-solution/file-engine:4.5.2
Update Controller training
CODE# Update the controller training 1) Delete controller configmaps kubectl -n expertflow delete configmap ef-conversation-controller-actions-cm kubectl -n expertflow delete configmap ef-conversation-controller-actions-utils-cm 2) Copy actions and utils folder Copy CX-4.5.2/cim-solution/kubernetes/pre-deployment/conversation-Controller/actions into current release cim-solution/kubernetes/pre-deployment/conversation-Controller Copy CX-4.5.2/cim-solution/kubernetes/pre-deployment/conversation-Controller/utils into current release cim-solution/kubernetes/pre-deployment/conversation-Controller 3) Create 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
Add new component Conversation Monitor
CODECopy the ConfigMap, Deployment, Service and Ingress for new component from CX-4.5.2 to your current release # Add ConfigMap Copy from CX-4.5.2/cim-solution/kubernetes/cim/ConfigMaps/ef-conversation-monitor-configmap.yaml to cim-solution/kubernetes/cim/ConfigMaps # Add Service Copy from CX-4.5.2/cim-solution/kubernetes/cim/Services/ef-conversation-monitor-service.yaml to cim-solution/kubernetes/cim/Services # Add Deployment Copy from CX-4.5.2/cim-solution/kubernetes/cim/Deployments/ef-conversation-monitor-deployment.yaml to cim-solution/kubernetes/cim/Deployments 1) Open cim/Deployments/ef-conversation-monitor-deployment.yaml file. 2) Update tag gitimages.expertflow.com/cim/conversation-monitor:4.5.2 # Add Ingress, copy nginx or traefik as per your deployment For RKE2 Copy from CX-4.5.2/cim-solution/kubernetes/cim/Ingresses/nginx/ef-conversation-monitor-Ingress.yaml to cim-solution/kubernetes/cim/Ingresses/nginx For K3s Copy from CX-4.5.2/cim-solution/kubernetes/cim/Ingresses/traefik/ef-conversation-monitor-Ingress.yaml to cim-solution/kubernetes/cim/Ingresses/traefik
Update Reporting connector
CODE# Update reporting-connector.conf 1) Open pre-deployment/reportingConnector/reporting-connector.conf 2) Add following new environment variables mongodb_username=root mongodb_password=Expertflow123 mongodb_truststore_path=./mongo_truststore.p12 mongodb_truststore_password=Expertflow123 mongodb_keystore_path=./mongo_keystore.p12 mongodb_keystore_password=Expertflow123 admin_panel_db_name=adminPanel 3) Update following existing environment variables mysql_dbms_additional_params=noDatetimeStringSync=true&useSSL=true&requireSSL=true&trustServerCertificate=true&clientCertificateKeyStoreUrl=file:///root/config/certs/mykeystore.jks&clientCertificateKeyStorePassword=changeit upper_limit=100 4) Create reporting connector configMap kubectl -n expertflow create configmap ef-reporting-connector-conf --from-file=pre-deployment/reportingConnector/reporting-connector.conf # Update ef-reporting-connector-cron.yaml 1) Open pre-deployment/reportingConnector/ef-reporting-connector-cron.yaml 2) Update Tag: gitimages.expertflow.com/cim/reporting-connector:4.5.2 3) Add following environment variables - name: MONGODB_ENABLE_SSL valueFrom: configMapKeyRef: key: MONGODB_ENABLE_SSL name: ef-connection-env-cm - name: MONGODB_CLIENT_CERT valueFrom: configMapKeyRef: key: MONGODB_CLIENT_CERT name: ef-connection-env-cm - name: MONGODB_CA_CERT valueFrom: configMapKeyRef: key: MONGODB_CA_CERT name: ef-connection-env-cm - name: TRUST_STORE_PASSWORD valueFrom: configMapKeyRef: key: TRUST_STORE_PASSWORD name: ef-connection-env-cm - name: KEY_STORE_PASSWORD valueFrom: configMapKeyRef: key: KEY_STORE_PASSWORD name: ef-connection-env-cm 4) Add following Volumes volumes: - name: mongo-mongodb-ca secret: secretName: mongo-mongodb-ca 5) Add following VolumeMounts volumeMounts: - name: mongo-mongodb-ca mountPath: /mongo
Run the MySQL/MSSQL update script on top of the current historical database
CODE# Run the script as per your configured DB # MySQL Script CX-4.5.2/cim-solution/kubernetes/pre-deployment/reportingConnector/dbScripts/dbupdate/historical_reports_db_update_script_MYSQL.sql.sql Or # MSSQL CX-4.5.2/cim-solution/kubernetes/pre-deployment/reportingConnector/dbScripts/dbupdate/historical_reports_db_update_script_MSSQL.sql.sql
Start all core components.
CODE# Apply all ConfigMaps kubectl apply -f cim/ConfigMaps # Apply all deployments kubectl apply -f cim/Deployments # Apply service for conversation-monitor kubectl apply -f cim/Services/ef-conversation-monitor-service.yaml # Apply Ingress for conversation-monitor For RKE2 kubectl apply -f cim/Ingresses/nginx/ef-conversation-monitor-Ingress.yaml For K3s kubectl apply -f cim/Ingresses/traefik/ef-conversation-monitor-Ingress.yaml # Apply reporting-connector cron job kubectl apply -f pre-deployment/reportingConnector/ef-reporting-connector-cron.yaml -n expertflow # Apply team-announcement cron job kubectl apply -f pre-deployment/team-announcement/ef-team-announcement-cronjob.yaml -n expertflow
Upgrade KeyCloak permissions
Upgrade Grafana
Upgrade guide for reports