Nimbus Reporting Model

An overview of data used in Nimbus reporting

Intro and Taxonomy

Nimbus reporting concepts explained on this page distinguish data by the following criteria : 

  • Services and Users are the point of interest for Nimbus Power BI reports. In the context of reporting they are dynamic (slowly-changing) dimension tables for fact gathering and output display.
  • Outcomes (of call sessions) are static dimensions with a fixed set of possible results to a conversation.
  • Facts are business process events and metrics gathered with appropriate measures. They are the numeric data aggregated in the reporting visualizations and contain keys which refer to the dimension tables.
  • KPI of various form are generated as calculations from these facts and dimensions.

Dimensions and Facts

dimension is a structure that categorizes facts in order to enable users to answer business questions. In Call Center context such questions could be:

  • Who called – Customer (caller Sip)
  • Where did the call go to – Service (Service Sip)
  • When did the call start – Started Date and Started Time
  • What was done – Task Type (the type of the task, e.g. Inbound Service, Inbound Direct, etc.)

💡 In other words, a dimension is a window to view information in the facts.

 

Overview

💡 Data contents of tabs below are generated from individual pages of this Knowledge Base. If you need to view multiple concepts simultaneously, use the main menu at the left to open the individual pages.

OData Feeds

OData Feed

OData, short for Open Data Protocol, is an open protocol to allow the creation and consumption of queryables. Using OData queries is the recommended approach for pulling data into Power BI

TEXT
OData.Feed (serviceUri as text, optional headers as nullable record, optional options as any) as any

Returns a table of OData feeds offered by an OData service from a URI serviceUri.

List of OData tables available by connection string.

  • Callers
  • DistributionAlgorithm
  • DistributionPriorityType
  • DistributionType
  • ModalityTypes
  • NotAvailableReasons
  • OpeningHoursTypes
  • OrganizationUnits
  • PrimaryCodes
  • ResponsibilityProfiles
  • SecondaryCodes
  • ServiceDataPermissions
  • ServiceSessionOutcomeGroups
  • ServiceSessionOutcomes
  • ServiceSessions
  • Services
  • ServicesessionTags
  • Tags
  • TaskDirections
  • TaskType
  • TaskTypeGroups
  • TransferSessionDestinationTypes
  • TransferSessionOutcomes
  • TransferSessionTypes
  • TransferSessions
  • UserDataPermissions
  • UserSessionActionGroups
  • UserSessionOutcomeHandledTexts
  • UserSessionOutcomes
  • UserSessions
  • UserStateTypes
  • UserStates
  • UserTransferActionTypes
  • Users

💡Our Nimbus Power BI Template will be regularly updated to make use the latest OData interface features. However, you can also customize your report and update Update BI Report OData Sources manually.

 
 

Slowly Changing Dimensions

Slowly Changing Dimensions

A slowly changing dimension (SCD) in data management and data warehousing is a dimension which contains relatively static data which can change slowly but unpredictably, rather than according to a regular schedule.

Services

A Service is a Endpoint acting for the service tasks as a middle layer between users and customers (or other task initiators). 

Attribute 

Data Type

Description 

Id  guid Primary key 
Name  text Service name 
OrganizationUnitId guid References Organization unit of the service
ServiceOrganizationUnitId guid Contains service Organization Unit for permission purposes

🔍 Services are managed via Nimbus Service Administration.

 
 

Users

Users are the the persons who interact with Nimbus e.g. to accept calls. 

Attribute 

Data Type

Description 

Id  guid Primary key 
O365Id guid Nimbus user O365 identifier
Upn text Nimbus caller User Principal Name
UserName text Display name of the Nimbus user First name + Last Name 
OrganizationUnitId guid Reference user's organization

🔍 Users are synced from your Azure AD and added via Nimbus User Administration.

 
 

Callers

Callers are the customers that contact the service.

Attribute

Data Type

Description

Id integer Primary key
O365Id guid caller O365 identifier
Upn text caller User Principal Name
TelNumber text caller telephone number
TenantId guid Tenant Id
CustomerIdentifier text Caller's UPN, telephone or O365 id (depending on origin type)
 
 

Organization Units

Organization units are used to describe hierarchal structure of the organization.

Attribute  Data Type Description 
Id  guid Primary key 
Name  text Organization name 
ParentId guid References parent Organization unit
🔍 Fields below are not provided by OData feed, but calculated in Power BI template
OU_PATH text Represents path to OU from root level
OULevel1 text Name of OU at level 1 of the hierarchy
OULevel2 text Name of OU at level 2 of the hierarchy
OULevel...7 text Name of OU at level 7 of the hierarchy

🔍 Visit Organization Units to learn more about the concept and its configuration.

 
 

Opening Hours

Opening Hours are applied as part of General Service Settings and added to the session at the point of an incoming task.

Attribute  Data Type Description 
Id  guid Primary key 
Name  text
  • None
  • Open
  • Closed
  • Holiday
  • 1 Special
  • 2 Special
  • 3 Special
  • 4 Special

🔍 Visit Opening Hours to learn more about the concept and its configuration.

 
 

Codes

Connected with FirstPrimaryCodeId field of Service Sessions table.

Attribute

Data Type

Description

Id guid Primary key
PrimaryCode text primary code name
Description text primary code description

Connected with FirstSecondaryCodeId field of Service Sessions table.

Attribute

Data Type

Description

Id guid Primary key
SecondaryCode text secondary code name
Description text secondary code description

🔍 Visit Codes to learn how the codes are defined and used.

 
 

Tags

Connected with TagId field of Service Session Tags table.

Attribute

Data Type

Description

Id guid Primary key
Tag text tag description

🔍 Tags are used in the My Sessions view to complete open task as part of "After Call Work" (ACW). They are freely user-definable.

 
 

DistributionPriority

DistributionPriorityTypes is connected with DistributionPriority field of Service Sessions table.

Attribute

Data Type

Description

Id int Primary key
Name text Distribution name

UserSessionDistributionPriority isConnected with DistributionPriority field of User Sessions table.

Attribute

Data Type

Description

Id int Primary key
Name text Distribution name

🔍Both DistributionPriorityTypes and UserSessionDistributionPriority are sharing the same OData endpoint.

 
 
 

Tasks

TaskDirections are connected with TaskType dataset and Service Sessions table.

Attribute

Data Type

Description

Id int Primary key
Name text Distribution name

TaskTypeGroups areconnected with TaskTypeGroupId field of TaskType table.

Attribute

Data Type

Description

Id int Primary key
Name text Distribution name

TaskTypes areconnected with TaskTypeGroupId field of TaskType table.

Attribute

Data Type

Description

Id int Primary key
Name text Distribution name
IsService bool Flag true or false
TaskDirectionId int Reference to Task direction table
TaskGroupId int Reference to Task group table
 
 

NotAvailableReasons

NotAvailableReasons are used with UserStates table.

Attribute

Data Type

Description

Id quid Primary key
Name text NAR name
TenantId guid Reference to Tenant
OrganizationUnitId guid Reference to Organization unit in which particular NAR is used.
 
 

Row-level security (RLS)

Row-level-security datasets.

ServiceDataPermissions areused to create Row-level security rules in Power BI Desktop. This data is available via OData, but it is not represented as a dataset in Power BI and must be added manually.

Attribute

Data Type

Description

UserId guid UserId who has permission to Organization Unit
OrganizationUnitId guid Organization Unit which is mapped to User.

UserDataPermissions areused to create Row-level security rules in Power BI Desktop. This data is available via OData, but it is not represented as a dataset in Power BI and must be added manually.

Attribute

Data Type

Description

UserId guid UserId who has permission to Organization Unit
OrganizationUnitId guid Organization Unit which is mapped to User.
 
 

NOTES

These dimensions are slowly changing, meaning have changing set of dimension members. The set changes depending on data configuration.

💡Note: Description columns are generally not part of the dataset.

 

 

 
 

Static dimension: Members (Values)

Static Dimensions

Static dimensions consists of a fixed member list. This list is static on every deployed system and may change only by a Nimbus system version update.

🔍NOTES OUTCOME GROUPS

Outcome Groups - To generalize and simplify reporting, all Service Session outcomes are classified into groups. 

Id

Name

1 Handled By User
2 Handled By System
3 Hangup By Customer
4 Not Handled
5 Error
6 Outbound Accepted
7 Outbound Not Accepted

💡Outcome Calculation - Note that these columns are not provided by the OData feed, but calculated in the Power BI Template.
💡Description columns are generally not part of the dataset.
💡Lines greyed out (if shown) are used for error-handling. They are not included in the dataset.

 

Service Session Outcomes

Service session outcomes determine how a task has concluded (Handled or Not Handled), with a more detailed outcome.

Id

MeansHandled

HandledText

GroupId 
(see 🔍▲)

Outcome

Description

1 False Not Handled 3 Customer Hangup Before Accept Customer hung up the call before it was accepted
2 False Not Handled 3 Customer Hangup In Ivr Customer hung up the call before it was put into the queue once
3 False Not Handled 3 Customer Hangup In Ivr After Queue Customer hung up the call after it was put into the queue once
4 False Not Handled 3 Customer Hangup In Queue Customer hang up the call during the time the task was enqueued
5 True Handled 1 User Accepted User accepted the task and was connected to the customer, this includes Consultation Call (without merge or transfer) and External Tasks
6 True Handled 1 User Internal Transfer Success User accepted the task and transferred it to another service Line or user. This includes as well the case if a user transfers the call after a consultation call
7 True Handled 1 User External Transfer Success User accepts the task and transferred to a non service line or user. This includes as well the case if a user transfers the call after a consultation call
8 False Not Handled 4 Workflow Disconnect After Queue Workflow terminates the call conversation or task (external, email) after it was put once into the queue
9 False Not Handled 4 Workflow Disconnect Workflow terminates the callconversation or task (external, email), which was never put into the queu

10

False

Not Handled

5

System Failure

An severe unhandled error occurred. May relate to Microsoft infrastructure. 

11 True Handled 2 Workflow Conversation Recorded Workflow recorded a voice message / mail
12 True Handled 2 Workflow Internal Transfer Successful Workflow transferred the call to another Service Line or a User from the same o365 tenant successfully
13 False Not Handled 4 Workflow Internal Transfer Failed Workflow couldn't transfer the call to another Service Line or a User from the same o365 tenant
14 True Handled 2 Workflow External Transfer Successful Workflow transferred the call successfully to a non Service Line target (e.g to an external user or phone number)
15 False Not Handled 4 Workflow External Transfer Failed Workflow couldn't transfer the call to a non Service Line target (e.g to an external user or phone number)
16 True Handled 1 User Internal Transfer Failed User accepted the task and transferred it to another service Line or user, but didn't succeed
17 True Handled 1 User External Transfer Failed User accepts the task and transferred to a non service line or user, but didn't succeed
18 True Handled 1 User Conferenced User accepts the task and adds a 3rd Participant (Expert, Merges a Consultant) into the customer session
21 False Cancelled by External System 4 External System Cancelled Before Accept The task was terminated via Power Automate before it was accepted by the system             
Analogue of Hangup Before Accept in AV conversations
22 False Cancelled by External System 4 External System Cancelled  The task was terminated via Power Automate before it was put into the queue             
Analogue of Hangup In IVR in AV conversations
23 False Cancelled by External System 4 External System Cancelled In Queue The task was terminated via Power Automate after it left the queue             
Analogue of Hangup In IVR after Queue in AV conversations
24 False Cancelled by External System 4 External System Cancelled In Queue The task was terminated via Power Automate in queue             
Analogue of Hangup In Queue in AV conversations
31 True Handled 6 Destination Accepted  
32 False Not Handled 7 Destination Declined  
33 False Not Handled 7 Destination Not Reached  
34 False Not Handled 4 User Aborted  
35 False Not Handled 4 Lost in Queue  
41 True Handled 2 Workflow Marked as Handled  
42 True Handled 2 Forwarded by Workflow  
43 True Handled 1 User marked as handled  
44 True Handled 1 User forwarded  

💡 Lines greyed out are used for error-handling. They are not included in the dataset.

 
 

User Session Outcomes

When a task is handled by multiple users, each user has an individual session with own outcome.

Id

Name

ActionGroup (🔍▲)

Handledtext (🔍▲)

Description

1 Accepted

Accepted

Accepted

User accepts a service line task or User transfer attempt (via Attendant Console) fails
2 Declined

Declined

Not Accepted

User declines a service task
3 Ignored

Missed

Not Accepted

User does not accept a service task within the defined time (RONA)
4 Canceled

CustomerAbandoned

Not Accepted

User couldn't accept a service task because it was cancelled by the system or user
5 Transferred Internally Transferred Accepted User transfers the call to a service line or user and target accepts (successful transfer)
6 Transferred Externally Transferred Accepted User transfers the call to a non service line or user and target accepts (successful transfer)
8 Consulted Accepted Accepted User made a consultation call after accepting a service call
9 Consulted Transferred Transferred Accepted User made a consultation call after accepting a service call and transferred to customer to the consultant
10 Consulted Merged Conferenced Accepted User made a consultation call after accepting a service call and merged the consultant and customer
11 Outbound Accepted Accepted Accepted User accepted a task to make an outbound call on behalf of a service.
12 Outbound Not Accepted Declined Not Accepted User received but did not accept a task to make an outbound call on behalf of a service.
13 Outbound Aborted Declined Not Accepted User accepted a task to make an outbound call on behalf of a service, but aborted it.            
 
14 Outbound Destination Not Reached Destination Unreachable Not Accepted User accepted a task to make an outbound call on behalf of a service, but the destination did not respond in time.             
 
15 Outbound Destination Declined Destination Unreachable Not Accepted  User accepted a task to make an outbound call on behalf of a service, but the destination did reject the call.
 
 

Distribution Algorithm

The distribution ordering algorithm determines how a task was distributed to a user, either preferring task queue duration or qualification.

Id

Name

1 Longest Idle
2 Best Qualified

🔍 Also see Distribution Order and Skills and Responsibilities.

 
 

Distribution Type

Describes in which way the call was sent to the user. 

Id

Name

1 Direct
2 Broadcast
3 Pickup
4 Pickup Through Transfer
5 Direct Conference
6 Pickup Conference

🔍 Directly relates to the "Queue" Workflow Activity which defines Distribution Type setting.

 
 

Modality

Describes the modality (communication channel) of handled tasks.

Id

Name

0 Used for Data Aggregation (not modality-specific)
1 Audio / Video 
2 Instant Messaging
3 External Tasks
4 Email

🔍Note that Data Aggregation is done in specific time intervals per modality in both Service and User sessions.

 
 

Task Type

Describes the type of a task.

Id

Name

TaskDirectionId

IsService

TaskTypeGroupId

0 Inbound Service 1 TRUE 1
1 Call on Behalf 2 TRUE 2
2 Outbound Service Call 2 TRUE 2
3 Inbound Direct 1 FALSE 3
4 Outbound Direct 2 FALSE 4

🔍 Also refer to the "Tasks" tab in Slowly Changing Dimensions.

 
 

Transfer Session

Describes Transfer Session source and targets and results

TransferSessionDestinationTypes

Id

Name

1 User
2 Service
3 External

TransferSessionTypes

Id

Name

DestinationTypeId

1 User to User 1
2 User to Service 2
3 User to External 3
4 Service to User 1
5 Service to Service 2
6 Service to External 3

UserTransferActionTypes

Id

UserTransferActionTypeName

1 Blind Transfer
2 Safe Transfer
3 Consultative Transfer

 

 TransferSessionOutcomes

Id

Name

MeansSuccessful

111 Successful User Transfer to User 1
112 Successful User Transfer to Service 1
113 Successful User Transfer to External 1
121 Successful Service Transfer to User 1
122 Successful Service Transfer to Service  1
123 Successful Service Transfer to External 1
511 Failed User Transfer to User 0
512 Failed User Transfer to Service 0
513 Failed User Transfer to External 0
521 Failed Service Transfer to User 0
522 Failed Service Transfer to Service  0
523 Failed Service Transfer to External 0
611 Failed 0
 
 

User State Type

Describes the status of the user, defining the ability to handle tasks.

Id

Name

1 Offline
2 Off Duty
3 Selectable
4 Not Selectable
5 Ringing
6 Connected
7 After Call Work

🔍 Also refer to User States.

 
 

 

 

 
 

Facts: Columns and Data Types

Facts - Columns and Data Types

A fact is a numerical piece of data, which in a business environment is used to measure a business process. Values can be arbitrary.

Service Sessions

Service Session facts are created when conversation stays in one context of the system. The Service Session is terminated when ... :

  • ... the Customer hangs up a call.
  • ... the Service terminates the task or transfers call to another service.

Fact table grains below are considered finalized when the session ended. 

Attribute Data Type Category Description
Id  guid Primary Key Primary key 
ServiceId  guid Reference Reference to Service 
UnifiedConversationId guid Reference Reference to Unified session. Unified session can contain several Service sessions.
ServiceOrganizationUnitId guid Reference Organization Unit ID of the service (TeamId)
OrganizationUnitId guid Reference Parent Organization Unit ID of the service (ParentId)
OutcomeId  integer References Reference to Service Session Outcomes 
StartedAt  datetime   Session start timestamp 
TotalQueueTime  integer measure Queue time summary 
TotalIvrTime  integer measure IVR time summary 
TotalConnectedTime  integer measure Connected with user time summary 
HoldTime integer measure Hold time summary per session. Time when a customer was "on hold" during consult sessions. Park attempts are not included.
HoldCount integer measure Hold count summary per session. How often a customer was put "on hold" during consult sessions. Park attempts are not included.
IsUnderSla  boolean Degenerate dimension If Time in queue is less SLA time of this service 
DistributionPolicyLevel integer Degenerate dimension Profile level. In which distribution profile the user was selected (1, 2, 3... )
DistributionAlgorithm integer References Reference to Distribution Algorithm
AcwTime integer measure Duration of after conversation work
CallerId guid Reference Reference to Callers
TenantId guid Degenerate dimension Unique Tenant identifier
FirstPrimaryCodeId  guid References Reference to Primary Code
FirstSecondaryCodeId guid References Reference to Secondary Code
DistributionPriority integer Reference Reference to DistributionPriority
TaskTypeId integer Reference Reference to task type
LastTransferDestination string Reference UPN or PSTN of transfer destination, which leads to the termination of the Service session (Successful or Failed)
LastTransferTypeId guid Reference Transfer type id of the transfer, which leads to the termination of the Service session (Successful or Failed)
IsShortConversation boolean Degenerate Dimension Flag (True/False) indicating whether the call is within the Short Abandons Threshold as set for the service in the Nimbus General Service Settings  > Reporting section > Short Abandons Threshold. 
🔍 Fields below are not provided by OData feed, but calculated in Power BI template
InitialCallerId text Calculated Column Renamed column CallerId
O365Id guid Degenerate dimension Lookup value from Callers
Upn text Degenerate dimension Lookup value from Callers
TelNumber text Degenerate dimension Lookup value from Callers

TotalTime 

integer Calculated Column

Calculated: TotalQueueTime + TotalIvrTime + TotalConnectedTime

LocalTime 

integer Calculated Column

StartedAt shifted to local timezone of the system

Date 

date Calculated Column

Date part of LocalTime

Time 

time Calculated Column

Time part of LocalTime

Hours 

integer Calculated Column

Hours extracted from Time

Minutes 

integer Calculated Column

Minutes extracted from Time

Fixed15Min 

text Calculated Column

Time rounded to the 15 minutes timeslot e.g. 11:15:00, 11:30:00

OriginType text Calculated Column PSTN/INTL
Tags text Calculated Column Comma separated string of tags
 
 

Service Session Tags

Used to connect service sessions table to their tags.

Attribute

Data Type

Description

ServiceSessionId guid Service session primary key
TagId guid Tag primary key
 
 

Transfer Sessions

Attribute 

Data Type
Category

Description 

Id  guid Primary Key Primary key 
ServiceSessionIDFrom guid Reference Id to the related Service Session from which the transfer was started
UserSessionIdFrom guid Reference null
ServiceFromOrganizationUnitId guid Reference Contains parent → OrganizationUnitIdof the service, from which transfer was started
ServiceToOrganizationUnitId guid Reference Contains parent → OrganizationUnitIdof the service, to which transfer was started
UserFromOrganizationUnitId guid Reference Contains source organization unit of → user which started the transfer.
UserToOrganizationUnitId  guid Reference Contains destination organization unit of → user which started the transfer.
StartedAt datetime measure transfer started at timestamp
EndedAt datetime measure transfer ended at timestamp
ServiceIdFrom guid Reference if the transfer was initiated by a Nimbus Service, the ID will be added here   
💡 will always be not null for transfer by Workflows.
UserIdFrom guid Reference null
ServiceIdTo guid Reference Destination Service Id
UserIdTo guid Reference null
Destination text Reference transfer destination ( PSTN number or UPN)
TransferSessionOutcomeId integer Reference Filled accoring to TransferSessionOutcome   
🔍 see → Static Dimensions > Transfer Session tab
TransferTypeId integer Reference Filled accoring to TransferSessionType   
(info) see → Static Dimensions > Transfer Session tab
UserTransferActionTypeId guid Reference null
TenantId guid Reference Tenant Id
 
 

User Sessions

User Sessions are used to assess user performance. User Sessions are a sub process of Service Sessions and are always related to only one  User.

  • A session is created for accepted, missed and declined user conversations. 
  • With several users in a conversation, User Sessions are created for each User. 

Multiple user sessions may be created (e.g. when a user transfers a call to another user in the same service).

Attribute  Data Type Category Description 
Id  guid Primary Key Primary key 
UserId  guid Reference Reference to user slowly changing dimension 
UnifiedConversationId guid Reference Reference to Unified session. Unified session can contain several Service sessions.
TenantId guid Reference Unique Tenant identifier.
OrganizationUnitId guid Reference Organization Unit ID of the user.
OutcomeId  integer Reference Reference to User Session Outcomes static dimension 
UserSelectedAt  datetime measure User selected at timestamp 
RingTime  integer measure Ring time summary. The time invitation card was shown to this Nimbus user for the Handled attempt (i.e. Declined and RONA attempts should be ignored) for the selected period. Average time customer is connected this Nimbus user (applicable to Accepted calls excluding PickupThroughTransfer) for the selected period 
ConnectedTime  integer measure Connected time summary 
ConferencedTime integer measure Total time user spend in conference with customer and consultant
ConsultationTime integer measure Total time user spend in conference with consultant only (customer on hold)
ConsultationCount integer measure Count of consultations during the user session
ServiceSessionId  guid Reference Reference to Service Sessions fact 
AcwTime integer measure Duration of after conversation work
DistirbutionAlgorithm integer Reference Reference to Distribution Algorithm
DistributionPolicyLevel integer Reference Profile level. In which distribution profile the user was selected (1, 2, 3... )
DistributionTypeId integer Reference In which way the task was sent to the user. Broadcast, DirectConference etc.
DistributionPriority integer Reference Reference to UserSessionDistributionPriority
TaskTypeId integer Reference Reference to task type
LastTransferDestination string Reference UPN or PSTN of transfer destination, which leads to the termination of the User session (Successful or Failed)
LastTransferTypeId guid Reference Transfer type id of the transfer, which leads to the termination of the User session (Successful or Failed)
Fields below are not provided by OData feed, but calculated in Power BI template

LocalTime 

datetime Calculated column

UserSelectedAt shifted to local time zone, defined by parameter

Date 

date Calculated column

Date part of LocalTime

Time 

time Calculated column

Time part of LocalTime

Hours 

integer Calculated column

Hours extracted from Time

Minutes 

integer Calculated column

Minutes extracted from Time

Fixed15Min 

text Calculated column

Time rounded to the 15 minutes timeslot e.g. 11:15:00, 11:30:00 

 
 

User States

User states is a list of periods in time showing durations and user responsibility profile during this period.

Attribute  Data Type Category Description 
Id  guid Primary Key Primary key 
TenantId guid Reference Reference to Tenant table
UserO365Id  guid Reference Reference to user slowly changing dimension 
ResponsibilityProfileId  guid Reference Reference to Responsibility Profile dimension 
NotAvailableReasonId guid Reference Reference to NotAvailableReasons dimension
NotAvailableReasonComment text Reference Comment which is added by User for NAR
Start  datetime measure Period start time
End datetime measure Period end time
UserStateTypeId guid measure Reference to User State Type dimension
Fields below are not provided by OData feed, but calculated in Power BI template

PeriodLength 

text Calculated column

Represent Period Length as dd.HH:MM:SS.XXXXXXX formated string

🔍 Also refer to User States.

 
 

UnifiedSessions

UnifiedSessions - 🔍 this is a virtual table which is built on Power BI side for now in oder to generate a "Unified Sessions" data tab for the Template.

  • Service sessions are grouped by UnifiedConversationId column, durations (time in queue, IVR etc.) are summarized.
  • Service Sessions are ordered by StartedAt .
  • The customer path is combined from Service names based on ordered sessions.
  • Most of attributes for Unified session are taken from the first service session (Caller, Date, Time). The outcome is taken from the last session.
  • If there was only one session per call, then UnifiedConversationId is equal to Service Session Id.
  • HighestDistributionPriority represents distribution priority among Service sessions with same UnifiedConversationId. The lower the DistributionPriorityId the higher the priority. 

☝Performance Impact: Generation of Unified sessions in Power BI using the Nimbus Power BI Template can be very resource and time consuming even on high-end PCs. For this reason, a toggle in the template can be disabled.

 
 
 

 

 
 

Data Aggregation

Data Aggregation

With our release launched on January, 18th 2024, we introduced Data Aggregations which are exposed via our OData interface and can be used in your Workforce Management (WFM) software system to calculate the usage of services and plan for future staffing.

The following aggregations have been added:

  • UserStatesAggregates
  • UserSessionsAggregates
  • ServiceSessionsAggregates

Aggregates in your historic data

☝️Please note: 

  • Data prior to the Nimbus Update in January was not aggregated retroactively.
  • The aggregation is done every 15 minutes
  • Both ServiceSession and UserSession both get Static Dimensions aggregations per timeslot (Modality=0) and additionally per modality (i.e. Audio=1, Instant Messaging=2, External Task=3, Email=4). This means that in extreme cases you have 5 records per service, per timeslot and can choose what you need.
 

In this scenario we expose the aggregated data via the OData Interface which can be loaded and transformed according to the requirements of your Workforce Management System:

How Nimbus interfaces with WFM (Workforce Management) systems

This article will heavily lean into Data tables described in the Nimbus Reporting Model page.

Furthermore, OData URLs are mentioned with a {{ODataAPI}} placeholder which you need to replace according to your data cluster:

INC Nimbus OData Connector URLs

Switzerland 01 https://api.ch-01.luware.cloud/v1/odata
Switzerland 02 https://api.ch-02.luware.cloud/v1/odata 
Germany 01 https://api.dewe-01.luware.cloud/v1/odata
Germany 02 https://api.dewe-02.luware.cloud/v1/odata
United Kingdom 01 https://api.ukso-01.luware.cloud/v1/odata
Nimbus Power BI data cluster OData connector URLs

✅ Make sure to configure your web proxies to allow access to these domains or whitelist the complete *.luware.cloud domain.


🔎 This page will showcase filtering examples. You can find a description how to filter OData on Odata.org

 

User States Aggregates

Returns a list of entries containing aggregated time values per state for a user within an interval of 15 minutes starting at a given date time.

Aggregated User States Example

On January 11th from 14:15 pm to 14:30 pm Agent Nicole Roberts worked with the Contact Center (SumWorkTime) the whole timespan of 15 minutes. She took a break for 4.3 minutes (SumPause) and was ready for taking calls for 10.7 minutes in total (SumReadyTime). She was also in a waiting state for the same amount of time (SumWait). We can conclude that she hasn't taken any call within that time span.

{
	"DateFrom": "2024-01-11",
	"TimeFrom": "14:15",
	"Id": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"Interval": 15,
	"UserId": "xxxxxxx-xxxx -xxxx-xxxx-xxxxxxxxxxxxxx",
	"UserUpn": "nroberts@yourtenant.com",
	"UserDisplayName": "Nicole Roberts",
	"UserOrganizationUnitId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
	"TenantId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
	"SumWorkTime": 15.0,
	"SumReadyTime": 10.7,
	"SumConnectedTime": 0.0,
	"SumAcwTime": 0.0,
	"SumPause": 4.3,
	"SumOffDuty": 0.0,
	"SumWait": 10.7
}

The User States Aggregates can be called via the following GET statement:

https://{{ODataAPI}}/v1/odata/UserStatesAggregates

The following parameters can for example be used to filter the data:

Parameter Description Example
DateFrom Select the Start Date 2024-01-15
TimeFrom Select the Start Time (UTC) 13:15
Interval Select the duration 15
UserId Select the Office 365 UserId xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx
UserUpn Select the Nimbus User UPN your.user@yourtenant.com

Example with filter:

https://{{ODataAPI}}/v1/odata/UserStatesAggregates?$filter=DateFrom gt 2024-01-28 AND DateFrom le 2024-01-29

🔎 You can find a description how to filter OData on Odata.org.

The User States Aggregates will return a list of entries containing the following data:

Field Description Formula
Id Generated ID of the Record  
DateFrom Date (UTC) of interval (start) in the format YYY-MM-dd  
TimeFrom Time (UTC) of the interval (start) in the format hh:mm  
Interval Interval duration in minutes  
UserId O365 User Id of the Nimbus User  
UserUpn UPN of the Nimbus User  
UserDisplayName Displayname of the Nimbus User  
UserOrganizationUnitId Organization Unit Id of the Nimbus User  
TenantId O365 Tenant Id of the Nimbus Tenant  
SumWorkTime Expected worktime of the user (not offline and not offDuty) in minutes SUM(UserStateTime WHERE UserStateType != 1 OR UserStateType != 2)
SumReadyTime Time user is either waiting for calls or handling tasks (selectable or ringing or connected or ACW) in minutes SUM(UserStateTime WHERE UserStateType = 3 OR UserStateType = 5 OR  UserStateType = 6 OR UserStateType = 7 OR UserStateType = 10)
SumConnectedTime Sum of time in which the user is handling a task in minutes SUM(UserStateTime WHERE UserStateType = 6)
SumAcwTime Sum of ACW/wrap up time in minutes SUM(UserStateTime WHERE UserStateType = 7)
SumPause Sum of time, the user is not working although it is in worktime (Not available / RONA) in minutes SUM(UserStateTime WHERE UserStateType = 4 OR UserStateType = 9)
SumOffDuty Sum of OffDuty time in minutes SUM(UserStateTime WHERE UserStateType = 2)
SumWait Sum of time in which the user has been selectable SUM(UserStateTime WHERE UserStateType = 3)

The UserStateType is defined as follows:

Id Name Description
1 Offline User is not signed in
2 OffDuty User has a OffDuty profile selected
3 Selectable The user is selectable for Nimbus
4 Not Selectable The user is not selectable for Nimbus
5 Ringing The call is signalled to the user
6 Connected The user is handling a task
7 After Call Work The user is in After Call Work (ACW) or wrap-up time
9 Rona The user has the state “RONA”
10 Dialing Out An outbound call is being established (Call on behalf/Outbound Call)

Please refer to the tables in Nimbus Reporting Model 

User Sessions Aggregates

Returns a list of entries containing aggregated time values for of all user service sessions within an interval of 15 minutes starting at a given date time.

Aggregated User Sessions Example

On January 11th from 14:15pm to 14:30 pm, Agent Nicole Robert worked with the Contact Center. During these 15 minutes, she accepted 9 calls (CntAccepted). She did not accept 7 calls (CntNotAccepted). She did not transfer (CntTransferred) or did not try to consult a colleague (CntConsulted). Her overall connection time has been 283 seconds (SumConnectedTime). The average connected time per call was 31,4 seconds (AvgConnectedTime). After Call Work time was not configured for Nicole Roberts.

{
	"DateFrom": "2024-01-11",
	"TimeFrom": "14:15",
	"Id": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"Interval": 15,
	"ServiceName": "Demo Service",
	"ServiceUpn": "demo.service@yourtenant.com",
	"ServiceId": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"TenantId": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"ServiceOrganizationUnitId": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"OrganizationUnitId": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"Modality": 1,
	"UserId": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"UserUpn": "nroberts@yourtenant.com", 
	"UserDisplayName": "Nicole Roberts",
	"UserOrganizationUnitId": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"CntAccepted": 9,
	"CntNotAccepted": 7,
	"CntTransferred": 0,
	"CntConsulted": 0,
	"AcceptanceRate": 0.562,
	"TransferredRate": 0.0,
	"ConsultedRate": 0.0,
	"SumConnectedTime": 283.0,
	"SumAcwTime": 0.0,
	"AvgConnectedTime": 31.4,
	"AvgAcwTime": 0.0
}          

The User Sessions Aggregation can be called via the following GET statement:

https://{{ODataAPI}}/v1/odata/UserSessionsAggregates

The following parameters can for example be used to filter the data:

Parameter Description Example
DateFrom Select the Start Date 2024-01-15
TimeFrom Select the Start Time (UTC) 13:15
Interval Select the duration 15
ServiceId Select the Nimbus Service Id xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx
ServiceUpn Selected Nimbus Service UPN your.service@yourtenant.com
UserId Select the Office 365 UserId xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx
UserUpn Select the Nimbus User UPN your.user@yourtenant.com
Modality Select the modality 1 (Audio), 0 (All modalities)

 Example with filter:

https://{{ODataAPI}}/v1/odata/UserSessionsAggregates?$filter=DateFrom gt 2024-01-20 AND DateFrom le 2024-01-29 AND UserUpn eq 'your.user@yourtenant.com' AND Modality eq 1

🔎 You can find a description how to filter OData on Odata.org.

The UserServicesAggregation returns a list with entries containing the following values:

Field Description Formula
Id Generated ID of the Record  
DateFrom Date (UTC) of interval (start) in the format YYY-MM-dd  
TimeFrom Time (UTC) of the interval (start) in the format hh:mm  
Interval Interval duration in minutes  
Service Name Displayname of the Nimbus Service  
Service UPN UPN of the Nimbus Service  
Service Id Internal ID of the Nimbus Service  
TenantId O365 Tenant Id of the Nimbus Tenant  
Service OrganizationUnitId Id of the Service Organization Unit  
OrganizationUnitId Id of the Parent Organization Unit of the Service  
Modality Id of the ModalityType; 0 = All Modalities combined  
User Id O365 User Id of the Nimbus  User  
User UPN UPN of the Nimbus User  
User Displayname Displayname of the Nimbus User  
User OrganizationUnitId Organization Unit Id of the Nimbus User  
CntAccepted

Count of all UserSessions which have been accepted by the user. The following user session outcomes apply:

  • Accepted
  • Outbound Accepted
  • Outbound Aborted
  • Outbound Destination Not Reached
  • Outbound Destination Declined
  • All consulted
  • All Transferred
Count(Accepted)
CntNotAccepted

Count of all UserSessions which have not been accepted by the user after being offered. This means the following user session outcome apply:

·  Declined

·  Ignored

·  Cancelled

·  Outbound Not Accepted (If the user accepted, but the customer/target didn’t count it as Accepted)

Count(NotAccepted)
CntTransferred

Count of UserSessions which have been accepted and then transferred by the user. This means the following user session outcomes apply:

·  Transferred Internally

·  Transferred Externally

Count(Transferred)
CntConsulted

Count of UserSessions which have been accepted and then needed consultation by the user. This means the following user session outcomes apply:

·  Consulted Transferred

·  Consulted Merged

Count(Consulted)
AcceptanceRate Rate of all accepted user session compared to all user sessions in % (1.0 = 100%) CntAccepted/TotalUserSessions
TransferredRate Rate of all transferred user session compared to all accepted user sessions in % (1.0 = 100%) CntTransferred/CntAccepted
ConsultedRate Rate of all consultated user session compared to all accepted user sessions in % (1.0 = 100%) CntConsulted/CntAccepted
ConnectedTime Sum of all connected times for all user sessions in the interval  in sec

SUM(ConnectedTime)

 

SumACWTime Sum of all acw times for all user sessions (incl. ExtendedACW if used) in the interval  in sec SUM(ACWTime)
AvgConnectedTime Average connected time for all user sessions in the interval being connected  in sec

SUM(ConnectedTime)/SUM(UserSessions WHERE ConnectedTime > 0)

 

AvgACWTime Average ACW / wrapup time for all user session (incl. ExtendedACW if used) in the interval in sec SUM(ACWTime)/SUM(UserSessions WHERE ACWTime > 0)

Service Sessions Aggregates

Returns a list of aggregated data entries about service SLA's Counts, Sums, Averages and Maximums for a given modality on all tasks within an interval of 15 minutes starting at a given date time.

Aggregated Service Session Example

This dataset returns metrics on all calls (Modality=1) that went through a service called Demo Service on January the 11th from 15:00 pm to 15:15 pm.

We see that calls were queued for 1782 seconds (SumQueueTime) and the sum of ACW time is 0 (SumAcwTime), maybe ACW is not enabled for this service. The longest call took 49 seconds to handle (MaxHandlingTime). 44 times an agent has been involved in call handling (CntUsersInvolved). 44 Sessions (CntSessionsQueued) have been queued. All accepted calls together have been queued for 889 seconds (SumQueueTimeAccepted).

{
	"DateFrom": "2024-01-11",
	"TimeFrom": "15:00",
	"Id": "70933980.01dcb441-8b28-4f8e-8a82-a62659c83d7f.1",
	"Interval": 15,
	"ServiceName": "Demo Service",
	"ServiceUpn": "demo.service@yourtenant.com",
	"ServiceId": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"TenantId": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"ServiceOrganizationUnitId": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"OrganizationUnitId": "xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
	"Modality": 1,
	"AcceptanceSla": 1.0,
	"HangupSla": 1.0,
	"Reachability": 0.614,
	"AvgQueueTimeAccepted": 32.9,
	"AvgQueueTimeAbandoned": 26.5,
	"AvgQueueTime": 40.5,
	"AvgHandlingTime": 31.6,
	"AvgAcwTime": 0.0,
	"CntSessionsAbandoned": 2,
	"CntSessionHangupByCustomerBeforeSla": 2,
	"CntSessionHangupByCustomerShort": 0,
	"CntUsersInvolved": 44,
	"CntSessionsQueued": 44,
	"CntSessionsAccepted": 27,
	"CntSessionsAcceptedInSla": 27,
	"CntOverflowSessionsIn": 0,
	"CntOverflowSessionsOut": 0,
	"SumQueueTimeAccepted": 889.0,
	"SumQueueTimeAbandoned": 53.0,
	"SumQueueTime": 1782.0,
	"SumHandlingTime": 853.0,
	"SumAcwTime": 0.0,
	"MaxQueueTimeAccepted": 45.0,
	"MaxQueueTimeAbandoned": 36.0,
	"MaxHandlingTime": 49.0,
	"MaxAcwTime": 0.0
}

The Service Sessions Aggregates can be called via the following GET statement:

https://{{ODataAPI}}/v1/odata/ServiceSessionsAggregates

The following parameters can for example be used to filter the data:

Parameter Description Example
DateFrom Select the Start Date 2024-01-15
TimeFrom Select the Start Time (UTC) 13:15
Interval Select the duration 15
ServiceId Select the Nimbus Service Id xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx
ServiceUpn Selected Nimbus Service UPN your.service@yourtenant.com
UserId Select the Office 365 UserId xxxxxxxx.xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx
UserUpn Select the Nimbus User UPN your.user@yourtenant.com
Modality Select the modality  1 (Audio), 0 (All modalities)

Example with filters:

https://{{ODataAPI}}/v1/odata/ServiceSessionsAggregates?$filter=DateFrom gt 2024-01-20 AND DateFrom le 2024-01-29 AND ServiceUpn eq 'MyExample@nimbus-service.de' AND Modality eq 1

🔎 You can find a description how to filter OData on Odata.org.

The UserServicesAggregation returns a list with entries containing the following values:

Field Description Formula
Id Generated ID of the Record  
DateFrom Date (UTC) of interval (start) in the format YYY-MM-dd  
TimeFrom Time (UTC) of the interval (start) in the format hh:mm  
Interval Interval duration in minutes  
ServiceName Displayname of the Nimbus Service  
ServiceUpn UPN of the Nimbus Service  
ServiceId Internal ID of the Nimbus Service  
TenantId O365 Tenant Id of the Nimbus Tenant  
Service OrganizationUnitId Id of the Service Organization Unit  
OrganizationUnitId Id of the Parent Organization Unit of the Service  
Modality Id of the ModalityType; 0 = All Modalities combined  
AcceptanceSLA Service Level in %  (1.0 = 100%) for all Accepted (by user) Service Sessions in the interval CntSessionsAcceptedInSla/CntSessionsAccepted
HangupSLA Service Level in %  (1.0 = 100%) for all HangupByCustomerBeforeSla Services Sessions in the interval CntSessionsHangupByCustomerBeforeSla/CntSessionsHangupInQueue
Reachability Reachability in % (1.0 = 100%) CntSessionsAccepted/CntSessionsQueued
AvgQueueTimeAccepted Average QueueTime of Sessions having been accepted (see for definition of accepted under CntSessionsAccepted) in sec SumQueueTimeAccepted/CntSessionsAccepted
AvgQueueTimeAbandoned Average QueueTime of Sessions having been abandoned (see for definition of abandoned under CntSessionsAbandoned)  in sec SumQueueTimeAbandoned/CntSessionsAbandoned
AvgQueueTime Average QueueTime of Sessions  in sec SumQueueTime /CntSessionsQueued
AvgHandlingTime Average of HandlingTime (ConnectedTime of Session) of all sessions accepted by user  in sec SumHandlingTime/(CntSessionsConnectedTime > 0)
AvgAcwTime Average of ACWTime  in sec SumAcwTime/(CntSessionsACWTime > 0)
CntSessionsAbandoned

Abandoned Sessions are  sessions, 

where inbound call or IM outcome was:

·  WorkflowDisconnectedAfterQueue

·  CustomerHangupInQueue

·  CustomerHangupInIvrAfterQueue

·  Session was Queued AND WorkflowConversationRecorded

·  WorkflowInternalTransfer (Failed or Successful)

·  WorfklowExternalTransfer (Failed or Successful)

 

where outbound call (incl. CallOnBehalf) outcome was:

·  LostInQueue

 

where the external task outcome was:

·  ExternalSystemCancelledInQueue

·  ExternalSystemCancelledAfterQueue

·  WorkflowDisconnectAfterQueue

·  Session was Queued AND WorkflowInternalTransfer (Failed or Successful)

·  WorfklowExternalTransfer (Failed or Successful)

 

where the email session outcome was:

·  WorkflowDiscconectAfterQueue

·  Session was Queued AND

     WorkflowInternalTransfer (Failed or Successful)

·  WorfklowExternalTransfer (Failed or Successful)

see Description
CntSessionsHangupByCustomerBeforeSLA Sessions with outcome CustomerHangupInQueue within HangUpSla-Threshold COUNT(SessionOutcome = CustomerHangupInQueue AND QueueTime < SLA Hangup Time Threshold)
CntSessionsHangupByCustomerShort Sessions with outcome CustomerHangupInQueue within ShortAbandonds -Threshold COUNT(SessionOutcome = CustomerHangupInQueue AND QueueTime < IsShortAbandonThreshold)
CntUsersInvolved Count of all user sessions related to the service session in the interval COUNT(UserSessions)
CntSessionsQueued Every Session where the QueueTime is > 0 COUNT(QueueTime > 0)
CntSessionsAccepted

Accepted Session are sessions, where inbound call or IM outcome was:

·  UserAccepted

·  UserInternalTransfer (Failed or Successful)

·  UserExternalTransfer (Failed or Successful)

·  UserConferenced

Where outbound call (incl Call on Behalf) was:

·  UserAccepted

·  UserInternalTransfer (Failed or Successful)   

 

·  (Future) UserExternalTransfer (Failed or Successful)

·  (Future)   
UserConferenced 

·  (Future)   
DestinationAccepted   
DestinationDeclined   
DestiontionNotReache

Where External Task outcome was:

·  UserAccepted

·  UserInternalTransfer (Failed or Successful)

·  (Future)   
UserExternalTransfer (Failed or Successful)

·  (Future)

Where Email outcome was:

·  UserAccepted

·  UserMarkedAsHandled

·  UserInternalTransfer (Failed or Successful)

·  (Future)   
UserExternalTransfer (Failed or Successful)

 
CntSessionsAcceptedInSla Accepted Sessions which where accepted within the define SLA Acceptance Time

COUNT(SessionsAccepted AND QueueTime < SLA Acceptance Time)

 

CntOverflowSessionsIn Count of Sessions which came in as transfer on the service in question

COUNT(SessionsTransferredIn)

 

CntOverflowSessionsOut Count of Sessions which  have been transferred either by WF or by User, Target doesn't matter

COUNT(SessionTransferred)

 

SumQueueTimeAccepted Sum of QueueTime of all sessions in the interval which where considered accepted (see CntSessionAccepted for exact definition)  in sec

SUM(QueueTimeAccepted)

 

SumQueueTimeAbandoned Sum of QueueTime of all sessions in the interval which where considered abandoned (see CntSessionAbandoned for exact definition)  in sec

SUM(QueueTimeAbandoned)

 

SumQueueTime Sum of QueueTime of all sessions in the interval independent of outcome  in sec

SUM(QueueTime)

 

SumHandlingTime Sum of all HandlingTime (ConnectedTime of Session) of all sessions accepted by user  in sec

SUM(ConnectedTime > 0)

 

SumAcwTime Sum of all ACW Times of all sessions within the interval which had ACW in sec

SUM(AcwTime)

 

MaxQueueTimeAccepted Longest QueueTime of any session within the interval which was accepted by a User  in sec

MAX(QueueTimeAccepted)

 

MaxQueueTimeAbandoned Longest QueueTime of any session within the interval which was not accepted by a User  in sec

MAX(QueueTimeAbandoned)

 

MaxHandlingTime Longest HandlingTime of any session within the interval which was accepted by a User  in sec

MAX(HandlingTime)

 

MaxAcwTime Longest ACWTime of any session within the interval which was accepted by a User  in sec

MAX(AcwTime)

 

 
 

 

 

 

 

 

Table of Contents