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
A 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.
Odata Table | Where to find details | Related KB pages |
---|---|---|
Callers | Slowly Changing Dimensions > Callers | - |
DistributionAlgorithm | Static Dimensions > Distribution Algorithm | Task Queue and Distribution |
DistributionPriorityType | Slowly Changing Dimensions > Distribution Priority | Task Priority |
DistributionType | Static Dimensions > Distribution Type | Distribution Types |
ModalityTypes | Static Dimensions > Modality | Supported Modalities |
NotAvailableReasons | Slowly Changing Dimensions > NotAvailableReasons | Not Available Reasons |
OpeningHoursTypes | Slowly Changing Dimensions > Opening Hours | Opening Hours |
OrganizationUnits | Slowly Changing Dimensions > Organization Units | Organization Units |
PrimaryCodes | Slowly Changing Dimensions > Codes | Codes |
ResponsibilityProfiles | Facts > User States | Responsibility Profiles |
SecondaryCodes | Slowly Changing Dimensions > Codes | Codes |
ServiceDataPermissions | - | Reporting Roles |
ServiceSessionOutcomeGroups | Static Dimensions > Service Session Outcomes | Historical Sessions |
ServiceSessionOutcomes | Static Dimensions > Service Session Outcomes | Historical Sessions |
ServiceSessions | Facts > Service Sessions | - |
Services | Slowly Changing Dimensions > Services | Service Administration |
ServiceSessionTags | Facts > Service Session Tags | - |
ServiceSessionTagStrings | Facts > Service Session Tag Strings | - |
Tags | Slowly Changing Dimensions > Tags | Tags |
TaskDirections | Slowly Changing Dimensions > Tasks | Task Queue and Distribution / Outbound Call |
TaskType |
Slowly Changing Dimensions > Tasks Static Dimensions > Task Type |
Task Queue and Distribution |
TaskTypeGroups | Static Dimensions > Transfer Sessions | - |
TransferSessionDestinationTypes | Static Dimensions > Transfer Sessions | - |
TransferSessionOutcomes | Static Dimensions > Transfer Sessions | - |
TransferSessionTypes | Static Dimensions > Transfer Sessions | - |
TransferSessions | Static Dimensions > Transfer Sessions | - |
UnifiedSessions | Facts > Unified Sessions | - |
UserDataPermissions | - | Reporting Roles |
UserSessionActionGroups | Static Dimensions > User Session Outcomes | - |
UserSessionOutcomeHandledTexts | Static Dimensions > User Session Outcomes | - |
UserSessionOutcomes | Static Dimensions > User Session Outcomes | - |
UserSessions | Facts > User Sessions | - |
UserStateTypes | Static Dimensions > User State Type | - |
UserStates | Facts > User States | - |
UserTransferActionTypes | Static Dimensions > Transfer Sessions | - |
Users | Slowly Changing Dimensions > Users | User Administration |
💡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 Microsoft Entra ID 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 |
|
🔍 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 |
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 |
3 | False | Not Handled | 3 | Customer Hangup In Ivr After Queue | Customer hung up after the call left the queue |
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 Nimbus 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 Nimbus 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 Nimbus 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 Nimbus 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 | User and Destination (customer) both accept an outbound task |
32 | False | Not Handled | 7 | Destination Declined | User accepts an outbound task, but Destination declines |
33 | False | Not Handled | 7 | Destination Not Reached | User accepts an outbound task, but Destination ignores, Destination is offline, or MSFT cannot reach Destination by some other reason |
34 | False | Not Handled | 4 | User Aborted | User either does not accept CallOnBehalf task or terminates outbound task during dial out to Destination before Destination reacts to it |
35 | False | Not Handled | 4 | Lost in Queue | Workflow terminates outbound call after it was put once into the queue |
41 | True | Handled | 2 | Workflow Marked as Handled | Workflow marked Email session as handled. |
42 | True | Handled | 2 | Forwarded by Workflow | Workflow forwarded Email to any email destination. |
43 | True | Handled | 1 | User marked as handled | User marked Email session as handled without any other action (e.g. no reply or forward). |
44 | True | Handled | 1 | User forwarded | User forwarded Email to any other email destination. |
45 | True | Handled | 2 | Standby Duty Accepted | Internal Standby Duty Destination accepted and confirmed via DTMF tone the customer session. |
46 | True | Handled | 2 | Standby Duty Accepted | External Standby Duty Destination accepted and confirmed via DTMF tone the customer session. |
💡 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 (transfer via Nimbus UI, i.e. Attendant Console or Assistant) 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 customer |
5 | Transferred Internally | Transferred | Accepted | User transfers the call to a Nimbus service line or Nimbus user and the corresponding target accepts (successful transfer). |
6 | Transferred Externally | Transferred | Accepted | User transfers the call to a non-Nimbus service line or non-Nimbus user and the corresponding 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 the customer to the consultant. |
10 | Consulted Merged | Conferenced | Accepted |
User made a consultation call with the Attendant Console after accepting a service call and subsequently merged the customer's call with the consultation call - creating a conference with all 3 parties.
🔎 For more information about consultation calls and the merging scenario → see Attendant - Consultation Call > "Consultation conference". |
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. |
16 | Marked as Handled | HandledByUser | Accepted | User marked Email session as handled without any other action (e.g. no reply or forward). |
17 | Forwarded | HandledByUser | Accepted | User forwarded Email to any other email destination. |
18 | Internal Transfer Failed | Transfer Failed | Accepted | User blind transfer attempt to a service line or Nimbus user fails (e.g. user declines or target service has respective modality disabled.) |
19 | External Transfer Failed | Transfer Failed | Accepted | User blind transfer attempt to a non service line, external user or phone number failed (e.g. user declines, etc.) |
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 |
🔍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
|
TransferSessionTypes
|
||||||||||||||||||||||||||||||||||||||||||||||||||
UserTransferActionTypes
|
TransferSessionOutcomes
|
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 the service sessions table to their tags.
Attribute |
Data Type |
Description |
---|---|---|
ServiceSessionId | guid | Service session primary key |
TagId | guid | Tag primary key |
Service Session Tag Strings
Service Session Tag Strings enables users to view all the tags associated to a single Service Session ID. When multiple tags apply, the tags are shown in a single string, separated by comma (e.g. Tag1, Tag2, Tag3, ...).
💡 Note that this entity starts getting populated with data from the moment of the release and it is not backfilled.
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) |
DestinationName | text | Reference |
transfer destination name in clear text. 💡 The destination name is
|
TransferSessionOutcomeId | integer | Reference |
Filled accoring to TransferSessionOutcome 🔍 see → Static Dimensions > Transfer Session tab |
TransferTypeId | integer | Reference |
Filled accoring to TransferSessionType 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.
Unified Sessions
UnifiedSessions - available through the OData interface, provides insights into the end-2-end concept of a call as opposed to single sessions. A Unified Session can include one or more ServiceSessions and/or UserSessions for which the common denominator is the UnifiedConversationId.
- Unified Sessions visibility depends on the permissions assigned to the role used to access the data. If the role is allowed to see the Incoming Service AND First Queued Service AND Last Queued Service, then the associated unified session will also be visible.
- Service Sessions are ordered by StartedAt .
- The customer path is combined from Service names based on ordered sessions.
- Where multiple sessions belong to a Unified Session the dimensional attributes are mostly 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: Please note that at the moment Power BI using its own logic in the Nimbus Power BI Template to generate its own UnifiedSessions table and this can be very resource and time consuming even on high-end PCs. A toggle in the template has been provided to disable the loading of this table and help reduce the size of the model if size limits are reached.
Column | Data Type | Category | Description |
---|---|---|---|
UnifiedConversationId | Guid | Primary Key | Primary key |
TenantId | Guid | Reference | Unique Tenant identifier |
InitialCallerId | Guid | Reference | CallerId of the FIRST service session |
StartedAt | DateTime | StartedAt value of the FIRST service session | |
TaskTypeId | integer | Reference | TaskTypeId value of the FIRST service session |
InitialModality | integer | Reference | Modality value of the FIRST service session |
IncomingServiceId | Guid | Reference | Service Id of the FIRST service session |
IncomingOrganizationUnitId | Guid | Reference | OrganizationUnitId of the FIRST service session |
IncomingServiceOrganizationUnitId | Guid | Reference | ServiceOrganizationUnitId of the FIRST service session |
OutcomeId | integer | Reference | OutcomeId defined by the outcome of the last session |
IsLastHandled | bool | IsHandled flag associated with the last service session | |
FirstPrimaryCodeId | Guid | Reference | PrimaryCodeId of the first connected Service |
FirstSecondaryCodeId | Guid | Reference | SecondaryCodeId of the first connected Service |
FirstAcceptedUserId | Guid | Reference | ID of the user who accepted on FirstQueuedService (if applicable otherwise null) |
FirstQueuedDistributionPolicyLevel | int | Reference | DistributionPolicyLevelId of the Service Session where the Conversation was FIRST queued |
FirstQueuedDistributionAlgorithm | int | Reference | Distribution Algorithm id of the Service Session where the Conversation was FIRST Queued |
FirstQueuedServiceId | Guid | Reference | ServiceId of the Service Session where the call was FIRST queued |
FirstQueuedOrganizationUnitId | Guid | Reference | OrganizationUnitId of the Service Session where the call was FIRST queued |
FirstQueuedServiceOrganizationUnitId | Guid | Reference | OrganizationUnitId of the Service Session where the call was FIRST queued |
LastQueuedDistributionPolicyLevel | int | Reference | DistributionPolicyLevelId of the Service Session where the Conversation was LAST queued |
LastQueuedDistributionAlgorithm | int | Reference | Distribution Algorithm id of the Service Session where the Conversation was LAST Queued |
LastQueuedServiceId | Guid | Reference | ServiceId of the Service Session where the call was LAST queued |
LastQueuedOrganizationUnitId | Guid | Reference | OrganizationUnitId of the Service Session where the call was LAST queued |
LastQueuedServiceOrganizationUnitId | Guid | Reference | ServiceOrganizationUnitId of the Service Session where the call was LAST queued |
LastPrimaryCodeId | Guid | Reference | PrimaryCodeId of the last connected Service |
LastSecondaryCodeId | Guid | Reference | SecondaryCodeId of the last connected Service |
LastAcceptedUserId | Guid | Reference | ID of the user who accepted on the LastQueuedService (if applicable otherwise null) |
IvrTime | integer | measure | Sum of all IvrTime of related Service Sessions in seconds |
QueueTime | integer | measure | Sum of all QueueTime of related ServiceSessions in seconds |
ConnectedTime | integer | measure | Sum of all ConnectedTime of related ServiceSessions in seconds |
HoldTime | integer | measure | Sum of all HoldTime of related ServiceSessions in seconds |
AcwTime | integer | measure | Sum of all AcwTime from the related User Sessions included in the unified session. |
AcwExtendedTime | integer | measure | Sum of all AcwExtendedTime of related User Sessions included in the unified session. |
DialoutTime | integer | measure | Sum of DialoutTime related to the User Sessions included in the unified session. The dial out time is the time spent dialing out to the destination. This attribute is populated only in case of outbound calls. |
HoldCount | int | measure | Sum of all HoldCounts occurred in the unified session |
RONACount | int | measure | Count of RONA (UserSession = Declined or Missed) |
OutboundAttempts | int | measure | Count of all OutboundAttempts for all service sessions included in the unified session. |
ContainsFailedSession | bool | Degenerate dimension | True/False flag indicating whether the unified session contains any instance of Handling of "Failed": ServiceSession/UserSession/TransferSession. |
VoiceMailRecordedOnServiceId | Guid | Reference | Service ID of Service where Outcome=11 (Workflow Converstation Recorded) |
WorkflowTransferCount | int | measure | Count of successful Service Session transfers with Outcome: - Workflow Internal Transfer Successful 12, - Workflow External Transfer Successful 14 |
ServiceTransferCount | int | measure | Count of transfers to a service occurred in relation to the unified session |
UserTransferCount | int | measure | Count of successful transfers where initiated by the users. Count of Service Session with Outcome (User Internal Transfer Successful 6, User External Transfer Successful 7) |
IsUnderSLA | bool | Degenerate dimension |
Set to true if “IsUnderSLA” for the first OR last queued Service Sessions is set to true (IsUnderSLA is true for a Service Session if the time spent in queue for that Service Session is below the SLA time set for the service). |
TopDistributionPriority | int | Reference | Lowest DistributionPriority id for the first OR last queued Service Session (whichever is lowest). |
IsAnyHandled | bool | Degenerate dimension |
Set to true, if any related service session is handled. Accepted by user, service transfer, marked as handled in WF (email), ...) |
LastTransferDestination | string | Degenerate dimension | Destination UPN of the last successful transfer session if applicable (otherwise it is null). |
LastTransferType | integer | Reference | Transfer type ID of the last transfer session if successful (otherwise it is null). |
IsLastTransferExternal | bool | Degenerate dimension | Set to true if last service session was successfully transferred to external destination (Workflow External Transfer Successful 14, User External Transfer Successful 7) |
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, 18th 2024 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:
Related Information
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 |
Australia 01 | https://api.aue-01.luware.cloud/v1/odata |
West Europe 01 | https://api.euwe-01.luware.cloud/v1/odata |
East United States 01 | https://api.use-01.luware.cloud/v1/odata |
✅ 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:
|
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) · (Future) Where External Task outcome was: · UserAccepted · UserInternalTransfer (Failed or Successful) · (Future) · (Future) Where Email outcome was: · UserAccepted · UserMarkedAsHandled · UserInternalTransfer (Failed or Successful) · (Future) |
|
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)
|