Installation with Docker Compose Single Site

Upgrading from 13.1

If Voice Recording Solution version 13.1 is already deployed then perform the following steps.

  1. Update core-recorder and front-end images tags to 13.1.1 from 13.1 in ~/recording-solution/docker/docker-compose.yml file. New images should look like below
  2. Run ./ inside ~/recording-solution directory

Solution Prerequisites

The following are the solution setup prerequisites.

Software requirements

Minimum requirement


CentOS 7



Docker CE


Docker compose



Hardware requirements

Minimum requirement


4 cores


4 GB


300 GB


1 NIC per VM

Installation Steps

  1. Install Docker and Docker Compose on the host operating system.
  2. Download the deployment script and place it in the user home or any desired directory. This script will:
    1. delete the recording-solution directory if it exists.
  3. To execute the script, give it the execute permissions and execute it. 

    $ chmod 755
    $ ./

  4. change to newly created directory with name recording-solution. This directory contains all the required files.

  5. Run SQL script in SqlServer to create database and tables.  (recording-solution/db_schema_sqlserver.sql).
  6. Create an Application User in CUCM with Standard CTI Enabled Permission group. Add all devices that are supposed to be recording enabled to this user controlled devices list. This user will be used add JTAPI Observer to observe the call END events.
  7. Update the following environment variables in the files inside recording-solution/environment-variables folder.





    VRS database connection URL



    JDBC driver


    CC_TYPECisco Contact center type (UCCX or UCCE)
    TZTimezone (Asia/Karachi)

    To enable/disable recorded file encryption

    true = enabled

    false = disabled

    AMQ_PRIMARYPrimary ActiveMQ URL, (VRS machine IP)
    AMQ_SECONDARYSecondary ActiveMQ URL, Keep it same as primary if ActiveMQ not available in HA
    AMQ_TIMEOUT3000, keep it same
    AMQ_RANDOMIZEfalse, keep it same
    AMQ_PRIORITY_BACKUPtrue, keep it same
    CUCM IPCisco Call Manager IP
    CUCM_APPLICATION_USER_NAMECUCM Application user's username created in step 6.
    CUCM_APPLICATION_USER_PASSWORDCUCM Application user's password created in step 6.
    TIME_CUSHIONThe number of seconds to add to the start and end time of call when calling API from CIM. There are few seconds difference between CIM interaction's start and end time and recording solution start and end time since CIM fetch interactions from Finesse while recording solution gets time from CUCM 
    MAX_RING_TIMEMaximum Call ring time on agent desktop, default is 30 seconds
    CALL_TIMEOUTSocket timeout for recording rtp packets, set it to 10
    THREAD_TIMEInterval in seconds between two jobs that clears completed calls, set it 10
    ENCODED_FILE_EXTENSIONExtension to use with encryption file. It should be set to "enc"
    DIRECTORY_PATH_TO_MONITORThis and following 9 variables are used for the archival process. This variable will hold the path of the recording
    ARCHIVED_MEDIA_FILES_EXTENSIONThe archival process will archive recordings with this extension, set it to "wav"
    NO_OF_DAYSThe number of days to keep recordings in the primary server. Recordings older than this value days will be archived
    SFTP_HOSTSFTP hostname or IP
    ARCHIVAL_JOB_INTERVALArchival process will run every this values seconds and archive any pending archival recordings
    RETRY_LIMITNumber of retries on pending archival recording folders
    ARCHIVE_PATHThe shared path on the archival server where archival process archive recordings
    ARCHIVE_PATH_USERArchive path's machine user
    ARCHIVE_PATH_PASSArchive path's machine password

    UCCE awdb database connection URL, used for UCCE deployment only.

    Used for UCCX deployment only...
    UCCX_URLUCCX URL, used for fetching agent details,
    UCCX_USERNAMEUCCX user,  should have privileges to fetch agents
    UCCX_PASSWORDUCCX user password
    DB_IPVRS database machine IP
    DB_USERVRS database user
    DB_PASSWORDDatabase password
    DB_NAMEDatabase name
  8. Execute following commands to allow specific port required for voice recording. 

    firewall-cmd --zone=public --permanent --add-port=5060/tcp
    firewall-cmd --zone=public --permanent --add-port=16384-18768/udp
    firewall-cmd --zone=public --permanent --add-port=16613-16617/tcp
    firewall-cmd --zone=public --permanent --add-port=8080-8081/tcp
    firewall-cmd --zone=public --permanent --add-port=8161-8162/tcp
    firewall-cmd --reload

  9. To change the default self-signed SSL certificates used with the application, replace server.crt and server.key files inside recording-solution/certificates folder.
  10. Having environment configurations done,  navigate to the recording-solution directory and execute the following commands: 

     chmod 755
    $ ./

  11. Run the following command to ensure that all the components are up and running: 

    $ docker ps -a

  12. Create a SIP trunk in Cisco Call Manager with recorder being VRS machine. Follow this steps to configure sip trunk. Seek help from Call Manager administrator if you don't know what this is.


  1. If calls are not recorded, check the following things
    1. Verify SIP events are logged in in core-recorder service when call is connected. If events are not logged then it means SIP trunk is not configured properly or recording is not enabled on device.
    2. If SIP events are logged but still no recordings, search for No RTP payload received error in recorder logs, if there are such error then check if Recording Media Source  is set to Phone Preferred  in phone settings on CUCM.
    3. Make sure Built-in Bridge is enabled on phones.
    4. Check for any errors in Mixer services logs, calls may be recorded but not properly mixed.
    5. if core-recorder and Mixer services logs are okay still not recordings on UI, check apis logs for any error