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
# 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.
# 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.
1) 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
# 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.
#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
# 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
Copy 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
# 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
# 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.
# 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