Arivo Data Vault Entity Models

Arivo Data Vault Entity Models

Design Objectives

Agent Events

Agent events are events that occur in the contact center centered around the Arivo Agent. Raw events are captured and stored in the "CONTACT_STAGE" schema, but are not currently migrated to the "CONNECT" schema, with the exception of HUB_AGENTS table.

TO BE COMPLETED AT ANOTHER DATE

Contact Trace Records

Contact Trace records are events associated with contacts in the contact center. The model is similar to the Agent Data Model, but focused on contacts themselves. Much of the same data is in this stream. Contacts are uniqeuely identified by the ContactId, which is at the root of the data structure provided on the Contact Trace Record Kinesis Stream.

ERD for contacts
Figure 2: Contact Records ERD

Tables

Hubs

Hubs are unique records that represent a central entity and its identity. For each identifier, there should be only one record in the table.

Each hub has a records source, which will represent where the record was drawn from. In this case, there are two sources, "CONTACT_TRACE" or "AGENT_EVENTS", each representing which stream the data was sourced from. The LoadDate is the date the record was loaded into the table from the staging ground, "CONTACT_STAGE" schema. The HashKey for each table is an MD5 of the identifying attribute, often the Arn of the entity, or its Id, such as the case for ContactId. This is a simple business key and suffices for this purpose.

Links are an agile approach to data modeling, each row uniquely identifying a relationship between hubs and satellites. New links can be created to change the granularity of relationships without interrupting current processes or designs. "RecordSource" identifies where the relationships were sourced from, and all of the satellites share this source. The HashKey of the links tables are created as an MD5 hash concatenating the original identifying elements of the related hubs. Double pipes "||" are delimiters in the concatenated string, with the resulting string hashed to provide the HashKey. Like so "${ContactId} + "||" + ${InitialContactId} + ... and so on. At no point is a hash then hashed.

Satellites

SAT_CONTACT_TRACE_RECORDS

Trace records can come through the kinesis stream more than once. AWS guaranteed at least once delivery. They should be deduplicated in the load process by the ContactHashKey and the LastUpdateTimeStamp. AWS documents that records with the same LastUpdateTimeStamp should be the same records. More than one event for a contact can be sent, and are added to this table in addition to previous events. To distinguish between them, or to only look at the latest value, us the LastUpdateTimestamp attribute.

SAT_CONTACT_ATTRIBUTES

Contact Trace Records have custom specified attributes included in the data schema. These attributes are treated as static (an assumption, current process won't capture updates) and bulk added to this table after flattening.

SAT_CONTACT_QUEUE

A Queue Record is inserted in this table for every contact that has a Queue attribute. Not all records have a queue attribute, and these records are shown as null in the raw event capture. If a records comes through multiple times with different LastUpdateTimestamp values, then multiple rows are inserted in the table for each contact.