Upgrade Cisco VRS from 14.10.0 to 14.11.0
Follow these steps in order.
This guide is for Cisco VRS. The same image-tag and Keycloak role steps apply when you use the EFCX compose profile for your deployment.
Before you start
-
You have SSH/login access to the VRS server
-
You know your database type: PostgreSQL 14+ or SQL Server
-
You know the database host, username, and password (ask DBA if needed)
-
You can log in to the Keycloak Admin Console for the VRS realm
Step 1 - Backup your settings and database
Save a copy of your current settings file so nothing is lost:
cp recording-solution/docker/config.env ~/config.env.backup
Check the backup exists:
ls -l ~/config.env.backup
Also back up the VRS metadata database (vrs only — not keycloak_vrs) before you run the schema script. Ask your DBA if needed.
PostgreSQL example:
pg_dump -h <db_host> -U <db_user> -d vrs -F c -f ~/vrs-14.10-backup.dump
SQL Server example (adjust path/name as your DBA requires):
sqlcmd -S <db_host> -U <db_user> -P <db_password> -Q "BACKUP DATABASE [vrs] TO DISK = N'C:\\Backup\\vrs-14.10.bak' WITH INIT"
Step 2 - Stop VRS
cd ~
cd recording-solution
docker compose --env-file docker/config.env -f docker/docker-compose-cisco.yml down
For EFCX deployments, use your EFCX compose file instead of docker-compose-cisco.yml.
Wait until this command finishes.
Step 3 - Get the 14.11.0 files
Go to the directory that contains recording-solution (usually your home directory), keep the old folder as a backup, and clone the 14.11.0 branch:
cd ~
mv recording-solution recording-solution-14.10
git clone -b 14.11.0 https://gitlab.expertflow.com/voice-recording-solution/recording-solution.git
Check that you are on the 14.11.0 branch:
cd recording-solution
git branch --show-current
cd ..
It should print 14.11.0.
Put your settings back:
cp ~/config.env.backup recording-solution/docker/config.env
Open recording-solution/docker/config.env. Only if these labels are missing, add the call variable labels below. Change the text to match what your call variables hold:
CALL_VARIABLE1_LABEL=Customer Name
CALL_VARIABLE2_LABEL=Extension
CALL_VARIABLE3_LABEL=Account No.
CALL_VARIABLE4_LABEL=IVR Code
CALL_VARIABLE5_LABEL=Reference ID
CALL_VARIABLE6_LABEL=Customer Type
CALL_VARIABLE7_LABEL=Branch Code
CALL_VARIABLE8_LABEL=Service Type
CALL_VARIABLE9_LABEL=Priority Level
CALL_VARIABLE10_LABEL=Campaign/Source
If you use your own SSL certificates, copy them from the old folder:
cp recording-solution-14.10/config/certificates/server.crt recording-solution-14.10/config/certificates/server.key recording-solution/config/certificates/
The new docker/docker-compose-cisco.yml already uses :14.11.0 for every image, so you do not need to change image tags. If you changed the old compose file (for example, uncommented archival-process or consul, or changed volume paths), make the same changes in the new file. To see what you changed before:
diff recording-solution-14.10/docker/docker-compose-cisco.yml recording-solution/docker/docker-compose-cisco.yml
Step 4 - Update the database (required)
Run the 14.11.0 schema script on database vrs. This is required. The script:
-
Converts
Mixed_Sessions.tag_idto a multi-tag array (no longer a single integer) -
Adds the
hold_timecolumn
This does not delete your recordings or old data. You can run the script safely even if some objects already exist.
Important: Run the script only on database vrs. Do not run it on keycloak_vrs.
Ask your DBA which option you use, then run only one option below.
Option A - PostgreSQL
On a machine that has psql (often the database server):
cd recording-solution
psql -h <db_host> -U <db_user> -d vrs -f data/scripts/postgres.sql
Example:
psql -h 192.168.1.50 -U postgres -d vrs -f data/scripts/postgres.sql
Or in pgAdmin: open database vrs → Query Tool → open file data/scripts/postgres.sql → Run.
Option B - Microsoft SQL Server
cd recording-solution
sqlcmd -S <db_host> -U <db_user> -P <db_password> -d vrs -i data/scripts/sqlserver.sql
Or in SSMS: connect to database vrs → open data/scripts/sqlserver.sql → Execute.
If the script finishes without errors, the database part is done.
Step 5 - Keycloak roles (required for tagging)
From 14.11.0, all users can view tags. Only the evaluatetag role is needed to assign or unassign tags. The viewtag role is no longer required.
Cisco: use the VRS Keycloak realm (steps below). EFCX: EFCX does not use a separate VRS Keycloak — create and assign evaluatetag in the EFCX IAM / Keycloak realm that VRS already uses for that deployment.
-
Open the Keycloak Admin Console and select the VRS realm.
-
Under Realm roles, create
evaluatetagif it does not already exist. You do not need to createviewtag. -
For each user who should assign or unassign tags on Media Recordings, open the user → Role mapping → assign evaluatetag (keep default roles and
adminoragentas before). -
Optional: you may leave an existing
viewtagrole assigned; it is unused in 14.11.0.
Details: Setup Keycloak for VRS and VRS Authorization & Permissions.
Do not change your existing database password, Keycloak secret, or CUCM settings unless your team told you to.
Step 6 - Start VRS again
cd recording-solution
chmod 755 install-cisco.sh
./install-cisco.sh
docker ps
For EFCX, use your usual EFCX install script or compose up flow.
Wait until install finishes. In docker ps you should see containers such as:
-
frontend
-
backend
-
mixer
-
keycloak
-
jtapi-connector
Step 7 - Open VRS in the browser
Open:
https://<your-server-IP>/#/login
Example: https://192.168.1.187/#/login
Login with your usual VRS user, then confirm:
-
Operations Dashboard is available for
supervisor/adminusers (agents cannot open it) -
A
supervisoruser can open OD (tenant-wide metrics) and still sees department-scoped lists on Media Recordings when/Departments/<name>is configured -
Media Recordings can show multiple tags on a call and filter by more than one tag
-
Users with
evaluatetagcan assign/unassign tags; users without it can still view tags
What this upgrade gives you
-
Operations Dashboard for supervisors and admins
-
Multiple tags per call and multi-tag search on Media Recordings
-
Simpler tag roles: view tags without
viewtag; assign/unassign withevaluatetagonly
Rollback
If you must return to 14.10.0 after starting this upgrade:
-
Stop VRS (
docker compose ... downas in Step 2). -
Restore the
vrsdatabase from the backup taken in Step 1 (ask your DBA forpg_restore/ SQL Server restore). -
Point the deployment back to the previous files: for example remove or rename the 14.11.0
recording-solutionfolder and restorerecording-solution-14.10(and~/config.env.backupintodocker/config.envif needed). -
Start VRS again with your 14.10.0 install script / compose flow.
After the schema script has run, rolling back without restoring the database backup can leave tag_id / hold_time incompatible with 14.10.0. Always restore the DB backup taken before Step 4.