Deploying Genesys Interaction Recording in a Multi-Tenant Deployment
Installation Considerations
This section describes the deployment steps required to configure GIR in a multi-tenant environment.
Important
- If you are currently working with a single-tenant deployment do not follow the instructions on this page, instead following the instructions in the Migrate Genesys Interaction Recording from a Single Tenant to a Multi-Tenant Deployment page.
- Each component should be sized according to the tenant sizing needs.
- GIR does not support WWE, when configured with a multi-tenant deployment.
- If you are using Voice Processor instead of RPS, you must deploy separate instances of Voice Processor for each tenant.
Once the deployment steps are completed, each tenant will include the following items:
[+] Show items.
- Users (that is, only users within a tenant are allowed to access GIR).
- Permissions.
- Access control of voice and screen recordings for search, view and playback.
- The ability to view the agent hierarchy.
- Recording conditions (full time recording, selective recording).
- Recording retention policies.
- Recording storage location and policies.
- Recording backup policies.
- Audit logs.
- Use of encryption keys.
- Administration of encryption keys.
- Screen recording policies.
- Quality management functionalities.
Multi-tenant Components
The following is a list of the components that can be deployed as multi-tenant components:
[+] Show multi-tenant components.
Important
When working with shared components across multiple tenants, you must verify that the components are sized properly and that shared components can handle the aggregate recording volume for all tenants.
- Management Framework
- GAX
- SQL Server
- SQL Server Reporting Services
- Cassandra
- Elasticsearch
- GVP Resource Manager
- GVP Media Control Platform
Deploying Multi-Tenancy
This section provides the tasks required to install and configure the Genesys components and features for Genesys Interaction Recording (GIR).
For the following steps, substitute:
- Tenant-specific RPS load balancer URL = <loadbalancer>/t1/rp
- Tenant-specific RCS load balancer URL = <loadbalancer>/t1/rcs
- Tenant-specific SMIR load balancer URL = <loadbalancer>/t1/interactionreceiver
- Tenant-specific WebDAV load balancer URL = <loadbalancer>/t1/recordings
- Tenant-specific Interaction Recording Web Services load balancer URL = <loadbalancer>/t1
...where <loadbalancer>/t1 refers to the load balancer which is described in step 21 (Load Balancing), and t1 is a tenant-specific identifier—subsequent tenants will use t2, t3, and so on.
|
To successfully deploy GIR in a multi-tenant deployment, you must perform the following procedures in the order presented:
-
Genesys Administrator Extension
Follow the instructions on this page.
- Interaction Recording Web Services (or Web Services and Applications if you're using version 8.5.210.02 or earlier)
In a multi-tenanted deployment, each tenant must deploy a separate instance of Interaction Recording Web Services (Web Services). Consider and perform the following instructions while performing the steps in the Interaction Recording Web Services (Web Services and Applications) pages:
WebDAV [+] Show steps.
- In a multi-tenant deployment, GIR should deploy a separate instance of Interaction Recording Web Services (Web Services), to store and manage the recording files. Each tenant should deploy a separate WebDAV Server instance. For details, follow the instructions in the Deploy the WebDAV Storage Server section.
Cassandra [+] Show steps.
- Cassandra is a shared service across multiple tenants. To deploy Cassandra, follow the instructions in the Deploy the Cassandra Database section.
- Each tenant must have a separate keyspace for Interaction Recording Web Services on Cassandra. Follow the steps in Initializing Cassandra with the following exceptions:
- When deploying the ks-schema file, replace the keyspace name from sipfs to a tenant-specific name such as sipfs1, as follows:
CREATE KEYSPACE sipfs1 WITH replication = {'class':
'SimpleStrategy', 'replication_factor': '2'} AND durable_writes = true;
- After the keyspace is created, update the schema file cf-schema.cql by changing the first line from sipfs to the tenant-specific keyspace name sipfs1, as follows:
CREATE TABLE sipfs1.accounts (
key text,
column1 text,
value blob,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (column1 ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
AND comment = ''
AND compaction = {'class':
'org.apache.cassandra.db.compaction.SizeTieredCompactionStrate
gy'}
AND compression = {'sstable_compression':
'org.apache.cassandra.io.compress.SnappyCompressor'}
AND dclocal_read_repair_chance = 0.0
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.1
AND speculative_retry = 'NONE';
Elasticsearch [+] Show steps.
- In a multi-tenant deployment, the recommended deployment approach for Elasticsearch is a standalone Elasticsearch cluster shared across multiple tenants. By default, each tenant owns separate indexes. The minimum number of Elasticsearch nodes that should be deployed in a High Availability (HA) environment is 3. To deploy Elasticsearch properly for a multi-tenant deployment, refer to either the Elasticsearch page or to the Prerequisites section in the Web Services and Applications Deployment Guide (if you're using GIR version 8.5.210.02 or earlier).
Interaction Recording Web Services [+] Show steps.
- If you are deploying Interaction Recording Web Services (Web Services) for a multi-tenancy deployment, you must create a separate Interaction Recording Web Services (Web Services) instance for each tenant (Note: Each instance can be a cluster of 2 or more High Availability nodes):
- If you are using version 8.5.210.02 or earlier, follow the steps in the Installing section of the Web Services and Applications Deployment guide. Otherwise, follow the instructions in the Installing page in this guide. Note: that the RWS instructions are different depending on whether you are using Interaction Recording Web Services by itself, or Interaction Recording Web Services together with Web Services.
- You must create a separate Cluster application for each tenant (note that this is shared per tenant between Interaction Recording Web Services and Web Services if you are using both services), and a separate Node application per tenant per server instance.
- For the Cluster application:
Change the name to IRWS_Cluster_<tenant> or WS_Cluster_<tenant>, depending for which service the cluster is being created, where <tenant> is the tenant name.
In the Tenants tab, click Add, select the tenant object that you want to configure for Interaction Recording Web Services (or Web Services) and click OK.
- For the Node application:
For a standalone deployment of Interaction Recording Web Services, make the connection to the IRWS_Cluster_<Tenant> application and name the application IRWS_Node_<Tenant>, where <tenant> is the tenant name.
For Web Services (when using version 8.5.210.02 or earlier) or a deployment where Interaction Recording Web Services is being used together with Web Services, make the connection to the WS_Cluster_<Tenant> application and name the application WS_Node_<Tenant> (when using version 8.5.210.02 or earlier), or IRWS_Node_<Tenant> (when using Interaction Recording Web Services together with Web Services) where <tenant> is the tenant name.
- For each Interaction Recording Web Services (Web Services) tenant instance, the Jetty genconfig/application.yaml must have the following parameters:
- keyspace: <Cassandra keyspace assigned to this tenant as per “Create separate keyspace”>
- nodes: <the shared Cassandra nodes>
- For each Interaction Recording Web Services (Web Services) tenant instance, the Jetty genconfig/application.yaml must have the following parameters (if you are using Web Services and Application version 8.5.201.09 or earlier modify the server-settings.yaml and not application.yaml):
- externalApiUrlV2: http://<tenant-specific Interaction Recording Web Services load balancer URL>/api/v2
- internalApiUrlV2: http://<tenant-specific Interaction Recording Web Services load balancer URL>/internal-api
- '''undocumentedExternalApiUrl''': http://<tenant-specific Interaction Recording Web Services load balancer URL>/internal-api
- applicationName: <the WS_Node_<Tenant> name assigned for this tenant>
- crClusterName: <Elasticsearch cluster name as per cluster.name>
- crossOriginSettings/allowedOrigins: <tenant-specific Interaction Recording Web Services Servers>, <tenant-specific SpeechMiner Web Servers>
- Configure Voice Recordings: Follow the same instructions as the single tenant instructions. Whenever Interaction Recording Web Services server (Web Services server) is specified replace it with the tenant-specific Interaction Recording Web Services server (Web Services server) instance.
When reference is made to the storage credentials, use the tenant-specific WebDAV Server credentials as configured in the WebDAV Server section above.
- Configure Screen Recordings: Follow the same instructions as the single tenant instructions. Whenever Interaction Recording Web Services server (Web Services server) is specified replace it with the tenant-specific Interaction Recording Web Services server (Web Services server) instance.
When reference is made to the storage credentials, use the tenant-specific WebDAV Server credentials as configured in the WebDAV Server section above.
- SIP Server
In a multi-tenant deployment, each tenant must deploy a separate SIP Server tenant instance, each with its own tenant-specific switch object.
The GIR deployment instructions for SIP Server are the same as those for a single tenant.
- Interaction Concentrator (ICON)
When following the instructions in this page, use a tenant-specific instance of ICON and ICON DB.
- Recording Plug-in for GAX
Execute the Solution Deploy SPD file for each tenant, in order to create the appropriate tenant Access Groups, Roles, and Permissions. For additional information, refer to the Example Solution SPD File page.
Follow the instructions in the "Multi-Tenant Environment" subsection within the “Configure for Screen Recording” section.
- Depending on the component you are using between Voice Processor and Recording Processor Script, follow one of the two sets of instructions below:
Voice Processor
Follow the instructions in this page, noting the following.
- Deploy separate instances of the Voice Processor for each tenant.
- Deploy a separate Voice Processor database for each tenant (these may all reside within a common database server if desired, as long as the total load on the Voice Processors does not exceed 30 calls per second).
- Configure the following settings in each instance's settings-override.yml to point to the tenant's RWS cluster and Voice Processor database:
- The rps-provisioning settings group should be established in each tenant's RWS.
- Verify that the Voice Processor host names, and the configured authUsername and authPassword for each Voice Processor instance match the configuration in each tenant's IVR profile. For more information about configuring the IVR Profile, see the IVR Profile section.
Recording Processor Script (RPS)
Follow the instructions in this page except for the following.
- Deploy separate instances of the Recording Processor for each tenant.
- Replace the following configuration parameters with tenant-specific instances of Interaction Recording Web Services (or Web Services and Applications if you're using version 8.5.210.02 or earlier) and ICON DB:
- htcc.base_uri—Set this to the Tenant-specific Interaction Recording Web Services load balancer URL.
- htcc.username
- htcc.password
- icon_db_servers
- Verify that the username and password match the username and password entered in the IVR Profile. For more information about configuring the IVR Profile, see the IVR Profile section.
- Recording Crypto Server (RCS)
When deploying RCS use a tenant-specific instance of RCS.
Follow the instructions in this page, except for the following:
[+] Show steps.
- In the RCS application object, replace the following parameters with tenant-specific instances of Interaction Recording Web Services:
- htcc.baseurl—Set to the Tenant-specific Interaction Recording Web Services load balancer URL.
- htcc.user
- htcc.password
- cors.allow-origins—Set to the Tenant-specific Interaction Recording Web Services load balancer URL.
- In the Annex tab for the specific tenant object:
- Create a new section called Recording.
- Create a parameter called: rcsurl.
- Set its value to the Tenant-specific RCS load balancer URL.
- In the [recording.archive] section, set speechminerurl = <Tenant-specific SMIR load balancer URL>.
- Genesys Voice Platform (GVP)
GVP is a shared resource for all tenants. Follow the instructions in this link to deploy the Resource Manager and Media Control Platform that are shared for all tenants.
When creating the tenant-specific IVR profile, change the steps as follows:
[+] Show steps.
- In Step 1 on the Genesys Voice Platform (GVP) page:
- Under GAX, switch the view to the tenant you want to configure.
- Navigate to Configuration > System > Configuration Manager and under Voice Platform, select Voice Platform Profiles and click New.
- In Step 3 on the Genesys Voice Platform (GVP) page:
- In Step 4 on the Genesys Voice Platform (GVP) page:
In the Recording tab, following the same instructions, but change the following parameters with tenant-specific information:
- Storage destination—http://<Tenant-specific WebDAV load balancer URL>
- Storage HTTP Authorization header—<Tenant WebDAV Server authorization>
- Recording Processor—URI–http://<Tenant-specific RPS load balancer URL>/api/contact-centers/<Contact Center Domain Name>/recordings/
- SpeechMiner Interaction Receiver—http://<Tenant-specific SMIR load balancer URL>
- SpeechMiner Interaction Receiver Authorization header—<Tenant Interaction Receiver authorization>
- Deploying Encryption
Follow the instructions in this page and perform the following:
[+] Show steps.
- Upload tenant certificates:
- Log into GAX using a user account belonging to the tenant.
- Follow the instructions about how to configure the encryption of voice recordings in the For Call Recordings section.
- For each tenant, configure the decryption proxy by following the steps in the Setting up the Decryption Proxy section.
Note: Replace Web Services and RCS URI with the tenant-specific addresses.
- Screen Recording Service
Follow the instructions on this page.
When using the command line to install the SR Service, change the /server parameter in the setup to point to the Interaction Recording Web Services tenant instance. For example: setup.exe /server="<Tenant-specific Interaction Recording Web Services load balancer URL>".
- Screen Recording Service - Advanced Configuration
Follow the instructions in this page for each tenant and replace the Interaction Recording Web Services (or Web Services if you're using version 8.5.210.02 or earlier) instance with an Interaction Recording Web Services (Web Services) tenant instance.
For WDE, follow these WDE instructions and set the following:
screen-recording.htcc.uri: <Tenant-specific Interaction Recording Web Services load balancer URL>
- Recording Muxer Script
Follow the instructions in this page to deploy tenant-specific instances of Muxer.
Replace the following parameters with tenant-specific values:
- htcc.base_uri—Set this to the Tenant-specific Interaction Recording Web Services load balancer URL.
- htcc.contact_center_id
- htcc.username
- htcc.password
- rcs.base_uri—Set this to the Tenant-specific RCS load balancer URL.
- rcs.username
- rcs.password
- webdav.username
- webdav.password
- Interaction Recording Options Reference
Refer to this page for a description of the configuration options.
- User Access
Follow the instructions in this page and consider the following:
[+] Show notes.
Deployment Steps
|
Description
|
1
|
In order to restrict log-in to the SpeechMiner UI, a new Configuration Manager object must be created for each tenant. Backup the default Configuration Manager object, since this object is accessible by all users from all tenants.
For the tenant-specific Configuration Manager object, the permission must be restricted to tenant users (for example, TenantN\Administrators and TenantN\Users), and super administrators.
|
2
|
The agent hierarchy for each tenant must be configured to ensure the agents for each tenant are on a different agent hierarchy. While the previous step prevents a user from connecting to a SpeechMiner UI associated with a tenant the specific user is not allowed to use, the agent hierarchy ensures a unified hierarchy for all users in the Management Framework. For example, recording.agent_hierarchy for users in Tenant 1 would start with /Tenant1. Sub-teams could be a child of /Tenant1.
|
3
|
Users of each tenant will be assigned to the appropriate Roles in each tenant created by the Recording SPD. The environment tenant should not be expected to have the Roles created by the SPD.
|
4
|
Users of each tenant will be assigned to the appropriate Access Groups in each tenant (but not the Environment tenant). Although the Recording SPD always creates a "/" for each tenant, it is recommended (per step 2 ) to create a /TenantX Access Group object and assign it to the appropriate tenant users.
|
- Speech and Text Analytics (SpeechMiner)
When following the instructions in this page create a separate SpeechMiner instance for each tenant.
To do this, you must configure the following items for each tenant: [+] Show items.
SpeechMiner Database
Deployment Steps
|
Description
|
1
|
A shared SQL Server instance can be used by all SpeechMiner tenants. All SpeechMiner machines must be configured to connect to the same SQL Server and create a separate SpeechMiner database for each tenant.
|
2
|
A separate SpeechMiner database must be configured for each tenant. When installing the database portion of the SpeechMiner installation, create a new database for each tenant.
|
SQL Server Reporting Services
Deployment Steps
|
Description
|
1
|
A shared SQL Server Reporting Service can be used by all SpeechMiner tenants. All SpeechMiner machines must be configured to connect to the same SQL Server and create a separate SpeechMiner database for each tenant.
|
SpeechMiner Server Configuration
Deployment Steps
|
Description
|
1
|
For each tenant, create separate application objects for SpeechMiner components:
- <Speechminer prefix>_ClientApplications
- <Speechminer prefix>_InteractionReceiver
- <Speechminer prefix>_Platform
- <Speechminer prefix>_Web
Where <Speechminer prefix> is a name assigned for the tenant. This name is used later in step 7.
|
2
|
For each tenant in the SpeechMiner server, create separate UNC paths for the data directory. The data directory will hold files for Index, plus additional SpeechMiner files for the tenant.
|
3
|
After successfully installing the SpeechMiner software on each server, run SMConfig on each server, and set the Database to the tenant-specific SpeechMiner database instance. For example, speechminer855_sm2 is the database name.
|
4
|
In the Sites & Machines page:
- Configure the paths to folders for the tenant created in step 2
- Configure machines for this tenant for Web, Interaction Receiver, and Index
- Configure the primary/backup configuration server IP:port
|
5
|
In the Report Deployment page:
- Enter the server name for the shared SQL Server Reporting Services and deploy the MRSLibrary and reports for this tenant.
- After deploying the reports, use Internet Explorer to make sure the connection to the database source is configured. The default location is http://<SSRS server>/reports.
- Click the database name that was chosen for this tenant.
- Click SME to access the data source properties.
- Verify that the data source has a proper connection.
- Click Test Connection to validate, and click Apply to save the settings.
|
6
|
Follow existing deployment instructions for License, Services, Audio, and Index.
|
7
|
In the Recording tab, each tenant has different settings:
- Configuration
- Tenant - The tenant name as per the configuration server.
- Application Name - The SpeechMiner prefix for the application objects as per step 1.
- Users Access Group - The tenant-specific Access Group that contains the list of SpeechMiner users for the tenant.
- User Application Name - The name of the Configuration Manager application object for the tenant as per step 1 in the User Access section above.
- Interaction Receiver - The RP Authorization.
- RP Authorization - Authorization for the tenant-specific RP.
- Playback
- RCS URI = <Tenant-specific RCS load balancer URL>
- External RCS URI = <Tenant-specific RCS load balancer URL>
- HTCC URL = <Tenant-specific Interaction Recording Web Services load balancer URL>
|
- Workspace Desktop Edition
Follow the instructions in this page.
- Secure Transport Configuration (TLS)
Follow the instructions in this page.
- Media Lifecycle Management
Follow the instructions in this page and verify that the Interaction-Receiver settings group points to a tenant-specific Interaction Receiver. In the SpeechMiner section, use tenant Interaction Recording Web Services (or Web Services if you're using version 8.5.210.02 or earlier) and tenant Interaction Receiver instances.
Set the SpeechMiner Interaction Receiver URL to the Tenant-specific SMIR load balancer URL when enabling Interaction Recording Web Services to contact Interaction Receiver.
- Folder Hierarchy for Recording Storage
Follow the instructions in this page using a tenant WebDAV server instance.
- Feature Configuration
Follow the instructions in this page.
Note: Audio Tones are applicable on a per-tenant basis.
- Load Balancing
Follow the instructions in this page.