Jump to: navigation, search

g:tenant-prefix

Section: elasticsearch-<data-source-id>
Default Value: No default value
Valid Values: A string identifying the tenant on a shared Elasticsearch cluster
Changes Take Effect: On the next ETL cycle
Dependencies: None
Introduced: 8.5.011.15

In Genesys Engage cloud deployments, the option defines a cloud tenant prefix for Elasticsearch indexes on an Elasticsearch cluster shared across multiple cloud tenants. The tenant prefix enables Genesys Info Mart to identify Elasticsearch indexes related to the particular cloud tenant.

If specified, the option value overrides the index-pattern and index-regexp values from the XML source metadata, and the tenant prefix is included in index pattern and regexp strings.

Example

The following table illustrates the effect of specifying a tenant prefix, where the source type is sdr and the source ID is sdr0.

[elasticsearch-sdr0].g:tenant-prefix index-pattern index-regexp
Not defined ‘sdr’-yyyy.MM.dd sdr-*
-my-tenant ’sdr-my-tenant’-yyyy.MM.dd sdr-my-tenant-*

client

Section: elasticsearch-<data-source-id>
Default Value: off
Valid Values: off or any valid location of the cluster node(s) of the Elasticsearch cluster, properly formatted
Changes Take Effect: On the next ETL cycle
Dependencies: None
Introduced: 8.5.009.20

This option specifies one or more nodes in the Elasticsearch cluster that Genesys Info Mart uses to retrieve data from an Elasticsearch database version 5.0 or higher. Genesys Info Mart uses the REST API client to communicate with the Elasticsearch cluster. You must specify the REST API URL address(es) for the REST client in the following format:

  • rest(http://<es-node>:<port>[,http://<es-node>:<port>]*)

Extract, Transform, And Load

Also known as ETL. The ETL processes extract data from various data sources; transform the data into a format and structure that is suitable for subsequent business purposes; and load the data into a target data store (other database, data mart, or data warehouse).



Glossary

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Integrating CX Contact with Genesys Historical Reporting

This page describes the component and configuration requirements to enable historical reporting on unattempted records.

Overview: Historical Reporting on Unattempted Records

While Outbound Contact Server (OCS) reports on the outcome of all attempted records and records failed pre-dial validation checks, it does not report on records belonging to a contact suppression list for the campaign group. This comes from CX Contact. The process is as follows:

  1. When the campaign group is activated, CX Contact writes all information related to unattempted records to an Elasticsearch index (it writes one Elasticsearch document for each suppressed record).
  2. As part of the regular ETL cycle, Genesys Info Mart extracts the data from Elasticsearch and transforms it into Genesys Info Mart LDR_* tables, which you can join with OCS-sourced data on that campaign group's attempted records.

For more information about the Genesys Info Mart database tables, see the Genesys Info Mart Physical Data Model for your RDBMS. For more information about managing the Genesys Info Mart ETL jobs, see the Genesys Info Mart Operations Guide.

Defining Unattempted Records

In this context, an unattempted record refers to a record belonging to a contact suppression list. Records excluded from a campaign because of defined filtering criteria or compliance rules are not considered unattempted records in this context.

The following table summarizes the ways in which records are reported on:

Record Type Reporting Source
Dialed/attempted records OCS > ICON > Genesys Info Mart
Records belonging to a contact suppression list (unattempted records) CX Contact > Elasticsearch > Genesys Info Mart
Records that failed pre-dial validation checks (unattempted records) OCS > ICON > Genesys Info Mart

Enabling Historical Reporting on Unattempted Records

Prerequisites

The following table summarizes the minimum release requirements for the Genesys and third-party components that enable CX Contact historical reporting.

Component Minimum release
CX Contact 9.0.000.09
Elasticsearch 6.3.1
Genesys Info Mart 8.5.012.15
ICON 8.1.514.11 (Recommended minimum for Genesys Info Mart; Required for OCS historical reporting)

Setting up Historical Reporting

To set up historical reporting of unattempted records:

  1. Deploy Elasticsearch version 6.3.1. Once this is successfully deployed, CX Contact can write all required indexes to Elasticsearch. No explicit CX Contact configuration is required.
    Important
    There are index properties that contain personally identifiable information (PII) and therefore need to be considered for the EU General Data Protection Regulation (GDPR). Ensure you configure the Elasticsearch data-retention settings so that indexes are purged before 30 days.
  2. Configure Genesys Info Mart to extract the CX Contact reporting data from Elasticsearch, as follows:
    1. On the Options tab of the Genesys Info Mart application object, create a new configuration section, called elasticsearch-ldr0.
    2. Add the client option. For example: elasticsearch-ldr0/client=rest(host.domain.com)
    3. Add the g:tenant-prefix option. For example: elasticsearch-ldr0/g:tenant-prefix=-2115
    Important
    Genesys expects that CX Contact reporting on unattempted records will be used to supplement existing Outbound Contact reporting sourced from OCS. Ensure that your deployment has been configured as required for Genesys Info Mart to support Outbound Contact reporting. For more information, see Enabling Reporting on Outbound Contact Activity in the Genesys Info Mart Deployment Guide.


Elasticsearch Index Properties

The following table describes the Elasticsearch index properties, in which CX Contact stores the data about unattempted records. Note the following:

  • The Index property column represents the XPath term Genesys Info Mart uses to extract and map the data.
  • The Info Mart Database Target column indicates the Info Mart database table and column to which the property is mapped.


Index property Description Info Mart Database Target
Index property Description Info Mart Database Target
campaignGroupId
The DBID of the campaign group as assigned by Configuration Server. LDR_CAMPAIGN.CAMPAIGN_GROUP_ID (referenced through LDR_FACT.LDR_CAMPAIGN_KEY)
campaignGroupName
The name of the campaign group. LDR_CAMPAIGN.CAMPAIGN_GROUP_NAME (referenced through LDR_FACT.LDR_CAMPAIGN_KEY)
campaignTemplateName
The name of the campaign template on which the campaign group is based. LDR_CAMPAIGN.CAMPAIGN_TEMPLATE_NAME (referenced through LDR_FACT.LDR_CAMPAIGN_KEY)
chainId
The chain identifier of the record from the contact list. LDR_FACT.CHAIN_ID
chainN
The order of the contact list record within the chain. LDR_FACT.CHAIN_NUMBER
clientId
The unique client identifier of the contact from the contact list. LDR_FACT.CLIENT_ID
contact_info
The contact information (device) for the contact from the contact list. LDR_FACT.CONTACT_INFO
contact_info_type
The type of the contact device. This field is set to one of the following values:
Valid values:
  • No Contact Type
  • Home Phone
  • Direct Business Phone
  • Business With Extension
  • Mobile
  • Vacation Phone
  • Pager
  • Modem
  • Voice Mail
  • Pin Pager
  • E-Mail Address
  • Instant Messaging
LDR_RECORD.CONTACT_INFO_TYPE (referenced through LDR_FACT.LDR_RECORD_KEY)
deviceAreaCode
The area code of the record from the contact list. LDR_DEVICE.DEVICE_AREA_CODE (referenced through LDR_FACT.LDR_DEVICE_KEY)
deviceCountryCode
The country code of the record from the contact list. LDR_DEVICE.DEVICE_COUNTRY_CODE (referenced through LDR_FACT.LDR_DEVICE_KEY)
deviceMask
The bit mask of the record from the contact list. LDR_FACT.DEVICE_MASK
deviceStateCode
The state code (or country code) of the record from the contact list. LDR_DEVICE.DEVICE_STATE_CODE (referenced through LDR_FACT.LDR_DEVICE_KEY)
deviceTimezone
The time zone indicated in the record from the contact list. LDR_DEVICE.DEVICE_TIMEZONE (referenced through LDR_FACT.LDR_DEVICE_KEY)
disposition
The reason for filtering out the record from the campaign during the pre-loading phase, as reported by CX Contact. LDR_RECORD.DISPOSITION (referenced through LDR_FACT.LDR_RECORD_KEY)
groupName
The name of the agent group or place group. LDR_GROUP.GROUP_NAME (referenced through LDR_FACT.LDR_GROUP_KEY)
id
An identifier Genesys Info Mart generates based on the long UUID timestamp reported by CX Contact. LDR_FACT.ID
listId
DBID of the contact list as assigned by Configuration Server. LDR_LIST.LIST_ID (referenced through LDR_FACT.LDR_LIST_KEY)
listName
The name of the contact list. LDR_LIST.LIST_NAME (referenced through LDR_FACT.LDR_LIST_KEY)
postalCode
The postal code of the record from the contact list. LDR_POSTAL_CODE.POSTAL_CODE (referenced through LDR_FACT.LDR_POSTAL_CODE_KEY)
recordId
The identifier of the record from the contact list. LDR_FACT.RECORD_ID
recordStatus
The status of the record from the contact list. This field is set to one of the following values:
Valid values:
  • No Record Status
  • Ready
  • Retrieved
  • Updated
  • Stale
  • Cancelled
  • Agent Error
  • Chain Updated
  • Missed Callback
  • Chain Ready
LDR_RECORD.RECORD_STATUS (referenced through LDR_FACT.LDR_RECORD_KEY)
recordType
The type of the record from the contact list. This field is set to one of the following values:
Valid values:
  • No Record Status
  • Ready
  • Retrieved
  • Updated
  • Stale
  • Cancelled
  • Agent Error
  • Chain Updated
  • Missed Callback
  • Chain Ready
LDR_RECORD.RECORD_TYPE (referenced through LDR_FACT.LDR_RECORD_KEY)
timestamp_iso8601
The timestamp when the event regarding the suppressed contact list records was generated by CX Contact. LDR_FACT.START_DATE_TIME_KEY


Elasticsearch Index Fields

The following seven sections describe the seven types of Elasticsearch index fields. Each record represents the Elasticsearch data shown in the corresponding CX Contact Analytics Reporting panel.

Analytics-device.png Job Record
Analytics-preloading.png Call List Loading Record
Analytics-campaign.png Preloading Record
Analytics-call.png Campaign Group Event Record
Analytics-callresult.png Call Result Record
Analytics-contact.png Contact History Record
Analytics-sms.png SMS/EMAIL Record
User Actions index icon.png User Actions Record


Analytics-device.png Job Record (cxc-job-*)

Field Type
id keyword
parentid keyword
@timestamp date
@endtime date
ccid keyword
type keyword
name keyword
state keyword
result keyword
created date
started date
finished date
duration integer
error text
errorCode integer
trace keyword
component keyword
version keyword
hostname keyword
address keyword

Analytics-preloading.png Call List Loading Record (cxc-didr-*)

Field Type
id keyword
@timestamp date
type keyword
jobid keyword
jobts date
importfile keyword
line integer
mappingfile keyword
ccid keyword
listid integer
listTableName keyword
listName keyword
customTZMap boolean
chain_id integer
chain_n integer
contact_info keyword
deviceDigits text
defaultRegion keyword
deviceIndex short
accepted byte
error keyword
e164 keyword
countryCode keyword
areaCode keyword
exchange keyword
restOfNumber keyword
maskValue long
tzuid integer
state_code keyword
country_code_iso keyword
mask object

Analytics-campaign.png Preloading Record (cxc-contact-*)

Field Type
id keyword
@timestamp date
ccid keyword
calluuid keyword
contact_info keyword
contact_info_type keyword
contact_id keyword
chain_id integer
chain_n integer
callTime date
callResult keyword
dialingMode keyword
optimizationGoal integer
optimizationMethod keyword
listName keyword
listid integer
campaignName keyword
campaignGroupName keyword
sessionuuid keyword
campaignTemplateName keyword
groupName keyword
agentLoginId keyword
disposition keyword
successful boolean
userData object

Analytics-call.png Campaign Group Event Record (cxc-cgevent-*)

Field Type
id keyword
@timestamp date
ccid keyword
sessionuuid keyword
action keyword
state keyword
dialingMode keyword
optimizationParameter integer
optimizationType keyword
campaignName keyword
campaignGroupName keyword
campaignGroupDBID keyword
campaignTemplateName keyword
groupName keyword
actualBusyFactor float
actualHitRatio float
actualOverdialRate Float
actualTimeToComplete integer
lists object

Analytics-callresult.png Call Result Record (cxc-crr-*)

Field Type
id keyword
@timestamp date
@endtime date
ccid keyword
calluuid keyword
contact_info keyword
contact_info_type keyword
blockingRuleName keyword
duration integer
durationCall integer
durationACW integer
durationCPD integer
durationQueue integer
timeDialing date
timeClientRinging date
timeBadCallReleased date
timeClientPickedUp date
timeCPDFinished date
timeQueued date
timeAgentRinging date
timeAgentEstablished date
timeAMDiverted date
timeAbandoned date
timeAgentCallReleased date
callTime date
callResult keyword
dialingMode keyword
optimizationGoal integer
optimizationMethod keyword
listName keyword
campaignName keyword
campaignGroupName keyword
sessionuuid keyword
campaignTemplateName keyword
groupName keyword
timezoneName keyword
timezoneNameCME keyword
timezoneOffset integer
agentLoginId keyword
scheduledTime date
recordType keyword
recordStatus keyword
voiceTransferDestination keyword
countryCode keyword
clientCountryCode keyword
areaCode keyword
deviceTimezone keyword
disposition keyword
postalCode keyword
userData object

Analytics-contact.pngContact History Record (cxc-ldr-*)

Field Type
id keyword
@timestamp date
ccid keyword
campaignName keyword
campaignId integer
campaignGroupName keyword
campaignGroupId integer
campaignTemplateName keyword
campaignTemplateId integer
groupName keyword
groupId integer
blockingRuleName keyword
blockingRuleId integer
listName keyword
listId integer
recordId integer
clientId keyword
chainId integer
chainN integer
contact_info keyword
contact_info_type keyword
recordType keyword
recordStatus keyword
deviceCountryCode keyword
deviceAreaCode keyword
deviceStateCode keyword
deviceTimezone keyword
deviceMask integer
postalCode keyword
disposition keyword
reason keyword
customFields object
timestamp_iso8601 date

Analytics-sms.png SMS/EMAIL Record (cxc-nexdr-*)

Field Type
id keyword
@timestamp date
ccid keyword
mediaType keyword
calluuid keyword
contact_info keyword
clientId keyword
chainId integer
chainN integer
from keyword
subject keyword
listName keyword
campaignName keyword
groupName keyword
campaignGroupName keyword
campaignTemplateName keyword
sessionuuid keyword
messageID keyword
batchID keyword
status keyword
deliveryReceipt keyword
disposition keyword
callResult keyword
errorCode integer
errorMessage keyword
timeReceivedFromOCS date
timeSubmittedToNexus date
timeResponseReceived date
timeOCSNotified date
timeConsumerResponded date
optout boolean
userData object

User Actions index icon.png User Actions Record (cxc-audit-*)

Field Type
id keyword
requestID keyword
@timestamp date
userName keyword
@endtime date
duration integer
action Keyword
actionDetails keyword
objectType keyword
objectSubtype keyword
objectName keyword
objectID integer
apicall boolean
successful boolean
errorMessage text
details text
endPoint text
changeSet object

Elasticsearch Maintenance Recommendations

To help you better manage your indexes and snapshots and to prevent too many indexes from creating an overflow of shards, it is recommended that you set up a scheduled execution of Elasticsearch Curator:

  1. Delete indexes older than 60 days according to the index name and mask.
    • cxc-job-*
    • cxc-audit-*
    • cxc-crr-*
    • cxc-didr-*
    • cxc-ldr-*
    • cxc-nexdr-*
    • cxc-cgevent-*
    • cxc-contact-*
  2. Make a snapshot of each index.
    • cxc-analytics-*

Elasticsearch Index Purge

From the version 100.0.030.0003 onwards, CX Contact creates monthly ElasticSearch indices instead of daily indices. Monthly indices follow a different file format compared to daily indices.

Here are a few examples of daily indices that include the date/day as well in the file name:

  • cxc-didr-123-2022.07.01
  • cxc-didr-123-2022.07.02
  • cxc-didr-123-2022.07.03
  • Note that the numbers 123 in the above examples denote the tenant number configured during provisioning.

    Monthly indices, however, follow a different file naming convention and do not include the date. Here’s an example for an index for the month of August:

  • cxc-didr-123-2022.08
  • So, when you delete a single index file, you will lose a month’s data instead of a specific day’s. So, it is important to reconfigure ElasticSearch curator so that data is correctly purged.

    Important
    cxc-analytics-* indexes do not have a timestamp in their name and must not be deleted. Deleting a cxc-analytics-* index will result in the loss of all CX Contact Analytics Dashboard customizations.

    For example, the following configuration would purge index files whose creation date is older than 90 days:

    filters:
    filtertype: age
    source: creation_date
    direction: older
    unit: days
    unit_count: 90

    It is recommended to change the purge duration to months as the index creation is also on a monthly basis. In order to ensure that index data from last 90 days is available, you must change the unit to months and unit_count to 4.

    filters:
    filtertype: age
    source: creation_date
    direction: older
    unit: months           
    unit_count: 4

    This page was last edited on October 7, 2022, at 11:44.
    Comments or questions about this documentation? Contact us for support!