# Genesys Quality Management Suite 8.1.520 : Synchro Tool

Synchro tool provides simple, but crucial operation in deployments where a replay server is deployed. The tool can also be configured between two solutions in order to guarantee data redundancy.

Synchro tool periodically queries all recording clusters and replicates the data from there to the Replay Server. The replication operation consists of several steps:

1. Synchro connects to one of the recording servers and loads all the recordings that have not been synchronized yet.
2. It compares the media status and the metadata with the existing once on Replay Server. If these media and metadata do not exist there, it copies all of them.
3. If there are the same media already existing on the Replay, but they are worse quality (there were not correctly recorded/processed or there were less data captured), they are replaced by the better ones from the source recording server.
4. If there are any metadata on the source recording server that are not yet present on the Replay Server, they are attached next to the existing ones.
5. The source records on the recording servers are marked as 'Synchronized'
6. The tool is designed to make sure that the data being synchronized is unique. Therefore if all data is already available and it's in the best quality then it marks the calls as "Synchronized but not used" on the recorder cluster and continues processing further. I.e. it doesn't create duplicates of the calls.
7. Then the Synchro connects to another recording server and the whole process repeats.

This process repeats again and again so it is ensured that all the recorded conversations and associated metadata get consolidated on the Replay Server as soon as it is technically possible, close to the real time in most cases.

There are also all the other Media Lifecycle Management Tools running on the Replay Server providing backup of the media, purging and restore in case they reached their retention period or need to be restored back and accessible and so on.

To enable all of this features there are various steps that need to be taken and various tools that need to be in place. The following chapters discuss necessary tools and procedures.

Synchro is required only if a replay server is used. In a multi server installation Speech Tags and Phrases are managed by the Scorecard User Interface on the replay server. Synchro distributes the Speech Tags and Phrases to the recorders from the replay server. It is important that all the recorders use the same definitions for the Speech Tags and Phrases. The replay server uses Synchro to collect sound and video files, voice tags and indexes, and database records from remote recorders for centralized playback, storage, life cycle management, and user access.

Synchro always runs as a daemon.

## Configuring the Replay Server Synchro Settings

To set up the Synchro to the replay server, navigate to Settings > Configuration > Maintenance > Synchro.

1. Select the Enabled checkbox to enable Synchro.
2. Set a Daemon sleep period (sec.) in seconds. The default is 10 seconds. If this field is empty when Save configuration is selected, the validation fails. The daemon sleep period affects how often the daemon runs and therefore the load on the processor. Increasing the sleep period decreases the load on the processor.
3. Set the number of Calls to process in one period. The default is 200.
   Do not enable the Synchronize couples without streams option.
   Although not present in the Web GUI screen, the `onlyfinished` option present in the `/opt/callrec/etc/tools.xml` configuration file, `synchro` section must be set to true, as it is by default, otherwise Synchro attempts to synchronize calls before the MP3 is created, and potentially causes major problems in operation.
4. Select Synchronize voice tags to synchronize voice tags. This is enabled by default.

Only enable Mark Erroneous if there are problems synchronizing. Mark Erroneous marks calls that failed during synchronization, and the daemon ignores these for the next run. This prevents the daemon from attempting to synchronize the same damaged calls over and over again.

With Only processed calls enabled, only processed recordings, not raw data, are synchronized (set as default). Disabling Only processed calls can only be done in the configuration, and is only used for trouble shooting purposes.

### Adding a New Source

Navigate to Settings > Configuration > Maintenance > Synchro.

Add each recording server to be synchronized as a new source.

Type a unique name for the recording server in Source Sysname, for example `src1`.

Click New. A new section displays as below.

To set the source parameters.

1. Select the Enabled checkbox to enable the source.
2. Select a group from the drop-down list Run synchronous in group.
3. Select one of the predefined intervals for synchronizing this recording server with the replay server from the Interval Period drop-down list. The options are: Yesterday, Last Week, Last Month, or Use custom interval period. If Use custom interval period was selected, then type the Custom interval period in the field that displays.

   Synchronized already synchronized: By default this option is off. It is not recommended except for special situations where calls have been marked as erroneous. Contact Genesys Tech Support.

4. The Database pool should be set to callrec this is the default. Note that before version 8.1.520. Maintenance had its own pool.
5. Type the Mount Path. The Mount Path is a prefix that identifies this recording server as a source for the Replay server. The file system that holds the calls in each server has the same structure but each source must have a different prefix, and hence absolute mount path. This is the remote drive predefined in Linux that is used for additional archive storage for example.

Copy files default is enabled. When enabled, both files and database records are copied to the replay server. If disabled, only database entries are added to the master database, pointing to the original source files. Disabling Copy files reduces the amount of data stored on the replay server where a large amount of storage is available at the Recorder server. Disabling Copy files can add a significant delay when playing back, and for this reason normal practice is to leave this option enabled.

Only mixed: If enabled, this copies only Screen Capture video with accompanying audio tracks. If there is no audio, the Screen Capture video is ignored.

Synchronize audio: Enable audio synchronization.

Synchronize video: Enable video synchronization.

Synchronize screens in RECD format: enable RECD screens synchronization.

Synchronize index files : enable index file and Voice Tag synchronisation.

Click Save Configuration.

### Setting up the Target

The target or replay server is where calls from all recorder servers are stored. There can only be one target. Navigate to Settings > Configuration > Maintenance > Synchro.

### Target Parameters:

- Target Sysname: the name of the target server used by Call Recording for identification. Has to be unique.
- Target Database: should be set to callrec this is the default.
- Default Target Path : where to store synchronized files.
- Additional Paths: designate alternative storage paths for files synchronized in this task.
  Priority : sets the priority for the target path.
  Balance: sets the load balancing for the restore task.
  Watermark: sets the capacity trigger for file storage.
- Synchro video target paths (optional): set default and additional video target paths for synchronization.
- Synchro Source and Target Duplication: the target database cannot be the same as a source database. Configuring the system in this way is not supported.

### Restarting the Synchro Tool

Use an SSH client. Log in as `admin`. Enter `su` - to log in as the root user. Enter the password, the default is `zoomcallrec.`

To restart the Synchro tool use the following command:

    /opt/callrec/bin/rc.callrec_synchro restart

## File sharing configuration

Synchro module makes sure that information in the Replay server is unique and also provides comparisons of the same recordings to make sure that the highest quality recording is available at the Replay server.

In the following sections the actual server names and IP addresses have been replaced by the following placeholders:

- `[recordingserver1name]` is the configured name of the first recording server.
- `[recordingserver2name]` is the configured name of the second recording server.
- `[replayservername]` is the configured name of the first replay server.
- `[recordingserver1_IP_address]` is the IP address of the first recording server.
- `[recordingserver2_IP_address]` is the IP address of the second recording server.
- `[replayserver_IP_Address]` is the IP address of the replay server.

### Synchronizing Network File Sharing

The figure above shows independent recording servers in the same cluster note that for the second server the call's data has a 2 appended.

If they are in different clusters then they need different mount points because the default names of the calls' data are the same.

The Replay server must mount all folders with media files (mp3, recd, mp4) that will be synchronized from the source servers.

- /opt/callrec/data/calls from`[recordingserver1name]` to `[replayservername]`
- /opt/callrec/data/calls from`[recordingserver2name]` to`[replayservername]`
- /opt/callrec/data/screens from`[recordingserver2name]` to`[replayservername]`

### On Recording Server 1

    vim /etc/exports

Add the following line:

    /opt/callrec/data/calls[replayserver_IP_Address](rw,sync,no_root_squash)

The result

    /opt/callrec/data/calls
    [replayserver_IP_address](rw,sync,no_root_squash)

Save and close the file.

Restart NFS.

    /etc/init.d/nfs restart

Enable NFS on startup.

    chkconfig nfs on

### On Recording server 2

    vim /etc/exports

Add the following lines:

    /opt/callrec/data/screens [replayserver_IP_Address](rw,sync,no_root_squash)
    /opt/callrec/data/calls [replayserver_IP_Address](rw,sync,no_root_squash)

The result

    /opt/callrec/data/screens
    [replayserver_IP_address](rw,sync,no_root_squash)
    /opt/callrec/data/calls2
    [replayserver_IP_address](rw,sync,no_root_squash)

Save and close the file.

Restart NFS.

    /etc/init.d/nfs restart

Enable NFS on startup.

    chkconfig nfs on

### On the replay server

Create the directories that the shared folders mount to:

    mkdir -p /mnt/rec_cluster_A/opt/callrec/data/calls
    mkdir -p /mnt/rec_cluster_B/opt/callrec/data/calls
    mkdir -p /mnt/rec_cluster_B/opt/callrec/data/screens
    chown -R callrec.callrec /mnt/rec_cluster_A
    chown -R callrec.callrec /mnt/rec_cluster_B

Add the mount point configuration into /etc/fstab:

    vim /etc/fstab

Add the following lines:

    [recordingserver1_IP_address]:/opt/callrec/data/calls /mnt/rec_cluster_A/opt/callrec/data/calls nfs rw,bg,soft,intr,noatime,rsize=8192,wsize=8192,timeo=15 0 0
    [recordingserver2_IP_address]:/opt/callrec/data/calls2 /mnt/rec_cluster_B/opt/callrec/data/calls nfs rw,bg,soft,intr,noatime,rsize=8192,wsize=8192,timeo=15 0 0
    [recordingserver2_IP_address]:/opt/callrec/data/screens /mnt/rec_cluster_B/opt/callrec/data/screens nfs rw,bg,soft,intr,noatime,rsize=8192,wsize=8192,timeo=15 0 0

Then save and close the file.

Mount the remote folders:

    mount -at nfs

And verify that the mount was successful:

    mount -t nfs

The result

    [recordingserver1_IP_address]:/opt/callrec/data/calls on /mnt/rec_cluster_A/opt/callrec/data/calls type nfs (rw,noatime,bg,soft,intr,rsize=8192,wsize=8192,
    timeo=15,vers=4,addr=[recordingserver1_IP_address],clientaddr=[recordingserver1_IP_address])
    [recordingserver2_IP_address]:/opt/callrec/data/calls2 on /mnt/rec_cluster_B/opt/callrec/data/calls type nfs (rw,noatime,bg,soft,intr,rsize=8192,wsize=8192,
    timeo=15,vers=4,addr=[recordingserver2_IP_address],clientaddr=[recordingserver2_IP_Address])
    [recordingserver2_IP_address]:/opt/callrec/data/screens on /mnt/rec_clusterB/opt/callrec/data/screens type nfs (rw,noatime,bg,soft,intr,rsize=8192,wsize=8192,
    timeo=15,vers=4,addr=[recordingserver1_IP_address],clientaddr=[recordingserver2_IP_Address])

or

    df -h

The result

    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/vg_sascr008-lv_root
    36G 5.0G 30G 15% /
    tmpfs 758M 0 758M 0% /dev/shm
    /dev/sda1 485M 31M 430M 7% /boot
    [recordingserver1_IP_address]:/opt/callrec/data/calls
    18G 5.0G 12G 31% /mnt/rec_cluster_A/opt/callrec/data/calls
    [recordingserver2_IP_address]:/opt/callrec/data/calls
    26G 5.1G 19G 22% /mnt/rec_cluster_B/opt/callrec/data/calls
    [recordingserver2_IP_address]:/opt/callrec/data/screens
    26G 5.1G 19G 22% /mnt/rec_cluster_B/opt/callrec/data/screens

Important: It is important that the recording servers do not delete the recd files until after they have been synchronized to the replay server. Quality Manager requires the recd files so that Universal Player can play the video. The replay server can still export mixed MP4s because it has its own Media encoder (mixer).

## Allowing Database Access for Synchro

The Synchro module on the replay server must be able to access the database of each source server or cluster, otherwise it can't synchronize anything from that source.

On each recording the Server performs the following actions:

1. Open the`/opt/callrec/data/psql/pg_hba.conf` file.

2. Add the following line, replacing`[replayserver_IP_Address]` with the IP address of the replay server.

       host all all [replayserver_IP_Address]/32 trust

   The bottom of the file looks like this:

       # TYPE DATABASE USER ADDRESS METHOD

       # "local" is for Unix domain socket connections only
       local all all trust
       # IPv4 local connections:
       host all all 127.0.0.1/32 trust
       # IPv6 local connections:
       host all all ::1/128 trust
       # Allow replication connections from localhost, by a user with the
       # replication privilege.
       #local replication postgres trust
       #host replication postgres 127.0.0.1/32 trust
       #host replication postgres ::1/128 trust
       host all all [recordingserver2_IP_address]/32 trust
       host all all [recordingserver1_IP_address]/32 trust
       host all all [replayserver_IP_address]/32 trust

3. Save and close the file.

4. Then reload the PSQL service:

       [recordingservername]$ /etc/init.d/postgresql-9.1 reload

On the replay server:

1. Verifies that the database is now accessible from the Replay server.

       [replayservername]$ psql -U postgres -h [recordingserver_IP_address] callrec

   The result is that the PSQL console opens with no errors.

       psql (9.1.7)

       Type "help" for help.
       callrec=#

2. Repeats this procedure for all recording servers.

## Creating a New Database Pool for Synchro

Create a new database pool for each database source.

Navigate to Settings > CallREC Core > Database.

1. Scroll down to Add New Pool.
2. Type a pool name that doesn't include spaces and click New.
3. Select the Pool type Ibatis pool.
4. Select the SQL map Callstorage (PostgreSQL).
5. Change the Host to the IP address of the source DB.
6. Change the Port to 5432.
7. Click Save configuration.

### Configuring Live Monitoring in the Replay Server

Configure the recording servers. Each machine has its own IP address.

Navigate to Settings > Configuration > CallREC Core > Servers > Add new server.

Add a new server for each recording server in the cluster:

1. Type a Server name to identify the server. Do not use spaces in the name. Record these names because they are needed for further configuration for the`bindServer`.
2. Type the Server IP address and Port number for each server.

Record these names because they are needed for further configuration for the `bindServer`.

Enter the Server IP address and port number for each server in the cluster.

### Configuring Recorders in the Replay Server

As the replay server doesn't have its own recorders it has to be able to see the recorders from the recording servers.

On the Replay server's Web UI Navigate to Settings > Configuration > Recorders > Recorder Server Communicator > Standalone Recorders.

Add a Standalone Recorder for each of the recording servers.

To add a standalone recorder:

1. Type a unique Recorder name.
2. Select the server from the Server drop down list.
3. Enter the Identification for the Recorder.
4. Click New. The new Recorder server is added.
5. Click Save Configuration.

After the servers, Restart Call Recording to affect changes.

### For MSR Only Adding the Sniffer into the Configuration

Navigate to Settings > Configuration > CallREC Core > Drivers and Readers

MSR

Change the Server to point to the Recorder server. If there is more than one.

Creating a Do Not Record Rule on the Replay Server

Create a "Do not record" rule with a mask '*' in the Recording rules section on the Replay server.

Log on to the replay server using an SSH client such as Putty and restart Call Recording.

    /etc/init.d/callrec restart

Log in to the Web UI and verify that the Live Monitor tab has appeared in the top menu