BPI+ Metrics Dictionary

Resolution metrics

Metric name
.....................................
Metric description
......................................................
Where to find the metric
.................................................
Example SQLSQL for SFTP data
Number of issues resolved by botNumber of issues resolved by the bot, including helpful or not rated Answers, submitted Forms and Access issues resolved. This metric shows how many issues were resolved by one of the bot resolution skills:

- Answers: Bot provided answers that were rated helpful or not rated. This excludes answers that were rated negatively;
- Account Access Enabled: Bot allowed employees to reset passwords or unlock accounts;
- Group-related Operations Provided: Bot created or changed membership for groups and distribution lists;
- Software Access Enabled: Bot provided access to a software application;
- Forms Filled: Employees filled a form or structured request recommended by bot.
B- top metric

- time trend
- breakdown by contact type
- breakdowns by skill, topic, route, ticket avoided, department, language, location, domain

Tab Resolution → side panels in Skill breakdown:

- top metric
SELECT COUNT(global_issue_uuid)AS "Distinct Issues Resolved by Bot" FROM bpi_issue WHERE ((is_resolved_by_bot = 'true'))select count(*) from {{date}}_daily_detailed_report where skill_category not in ( 'Interaction', 'Lookups') and skill_detail<>'AskMe rated Not Helpful'
Mean time to resolution, minutesThe average time between when an issue was created and when it was resolved in the bot. It is calculated as time interval in minutes, from the time when an issues was created, to the time when bot provides resolution of the issue.
Outlier values over 1440 minutes (24 hours) are excluded to decrease metric volatility.
Tab Resolution:

- top metric
- time trend
- breakdowns by department, language, location, domain
SELECT AVG(num_mins_to_resolution) AS "Mean Time to Resolution" FROM bpi_issue WHERE ((num_mins_to_resolution IS NOT NULL) AND (num_mins_to_resolution < 1440) AND (dim_issue_origin != 'BOT_NOTIFICATION'))select avg(minutes_to_resolution) from {{date}}_daily_detailed_report where skill_category not in ( 'Interaction', 'Lookups') and skill_detail<>'AskMe rated Not Helpful' and minutes_to_resolution is not null

(newer SFTP versions)
Number of employees with bot resolutionNumber of employees who have at least one issue resolved by the bot in the selected time period.Tab Resolution:

- top metric
- top side panel
- time trend
- breakdowns by department, language, location, domain
SELECT COUNT(DISTINCT user_record_id)AS "Employees with Resolution" FROM bpi_issue WHERE ((is_resolved_by_bot = 'true'))select count(distinct user_id) from {{date}}_daily_detailed_report where skill_category not in ( 'Interaction', 'Lookups') and skill_detail<>'AskMe rated Not Helpful'

(newer SFTP versions)
Number of issues resolved or ticketedNumber of issues that are either resolved by bot or are recorded as tickets qualified for bot resolution. Issues can originate from DM, from shared IT channel, from a ticket polled by bot, or from a notification proactively sent by bot.
Tickets qualified for resolution typically exclude tickets that the bot is unable to resolve, such as system generated tickets, tickets that are not for internal support, and tickets that are outside of the domains supported by the bot.
Tab Resolution:

- top metric
SELECT COUNT(global_issue_uuid) AS "Total Issues Submitted" FROM bpi_issue WHERE ((is_qualified_for_resolution_denominator = 'true')AND ((is_resolved_by_bot = 'true') OR (ticket_id IS NOT NULL)))Not available
Breakdown "How effective is the bot at resolving issues?”The chart shows issues resolved or ticketed broken down by contact type.
Value of contact type is set to the bot name if the ticket is created from bot, or to “Shared Chat Channel” if it is created in bot channel.
Otherwise it is set to the contact type as indicated in the ticketing system. If it is not present, the value is set to either “Service Portal” (or similar) or to numeric contact type (for some ITSM systems).
Tab Resolution:

- breakdown by contact type
SELECT dim_contact_type, COUNT(global_issue_uuid)AS "Total Issues Submitted" FROM bpi_issue WHERE ((is_qualified_for_resolution_denominator = 'true')AND ((is_resolved_by_bot = 'true')OR (ticket_id IS NOT NULL))) group by dim_contact_typeNot available
Number of unique employees with issues resolved or ticketedNumber of employees with issues that are either resolved by bot or are recorded as tickets qualified for bot resolution. Issues can originate from DM, from shared IT channel, from a ticket polled by bot, or from a notification proactively sent by bot.Tab Resolution:

- top metric
SELECT COUNT(DISTINCT user_record_id)AS "Employees with Issues Resolved or Ticketed" FROM bpi_issue WHERE ((is_qualified_for_resolution_denominator = 'true') AND ((is_resolved_by_bot = 'true') OR (ticket_id IS NOT NULL)))Not available
Bot EffectivenessBot effectiveness shows how effective the bot is in resolving employee issues. Bot effectiveness ratio is equal to percentage of issues resolved by bot, out of all issues that are either resolved by bot or are ticketed to be further handled by agents. More specifically, numerator is defined as number of issues raised in bot and resolved by bot and denominator is number of issues described in bot, with either a resolution or a filed ticket.
Denominator does not include questions that were rated negative but no ticket was filed, since this scenario does not call for further help on the issue.

Bot effectiveness = (number of issues raised in bot and resolved by bot) / (number of issues described in bot, with either a resolution or a filed ticket)
Tab Resolution:

- subtitle in the bar chart showing breakdown by contact type
SELECT 1.0* COUNT(CASE WHEN ((is_resolved_by_bot = 'True'))THEN global_issue_uuid END) / COUNT(global_issue_uuid) AS "Bot Effectiveness" FROM bpi_issue WHERE ((is_qualified_for_resolution_denominator = 'true')AND ((is_resolved_by_bot = 'true')OR (ticket_id IS NOT NULL)) AND (is_created_by_bot = 'true'))Not available
Number of issues submitted by users

List of issues in side panel under “View Issues” button
Number of issues consists of two parts: (1) issues described in bot and (2) tickets polled and qualified for resolution by bot.
More specifically:

1. Issues that are described in bot are considered qualified for resolution if any of resolution skills attempts to resolve the issue (as opposed to be non-applicable). For example, if user describes an issue with access or troubleshoots for an issue with an app, such issues are qualified for resolution because intent of these issues triggers bot’s resolution skills. If user types a non-issue utterance like ‘Hi’ or ‘Cancel’, these issues are not counted toward this metric.
2. poled tickets that are filtered according to the preset filter to be qualified for resolution by bot.
Tab Resolution:

- top side panel
- breakdowns by topic, department, language, location, domain, “ticket avoided”
SELECT COUNT(global_issue_uuid) AS "Total Issues" FROM bpi_issue WHERE dim_issue_result is not nullNot available
Number of issues: breakdown by RouteBreakdown by Route shows issues submitted by users by the issue origin.

- ”Messages to Bot” are issues described by users directly in DM
- ”Tickets intercepted by Bot” are tickets that were polled and qualified for resolution attempt by any of Resolution skills. For portion of these tickets, if there is a solution to offer, bot reaches out to user on the ticket with an appropriate suggestion.
- ”Messages to Bot - Channel Utterances” are issues described in shared IT channel
- “Proactive Messages by Bot” are issues proactively raised by bot via notification
Tab Resolution:

- breakdowns by route
SELECT COUNT(global_issue_uuid) AS "Total Issues" FROM bpi_issue WHERE dim_issue_result is not nullNot available
Number of issues with solution offeredNumber of issues with solution offered by one or more of the bot resolution skills.

For example, if user describes an issue and in response bot offers articles by Answers and suggests a Form to file, this issue in counted toward this metric.
Tab Resolution:

- top side panel
- breakdowns by topic, route, department, language, location, domain, “ticket avoided”
SELECT COUNT(global_issue_uuid) FROM bpi_issue WHERE dim_issue_result IN (’Bot Offered Solution’, ‘Bot Solutions Engaged’, ‘Issue Resolved’)Not available
Number of issues with users engaging with solutionNumber of issues where bot provided one or more solutions that the user is engaging with in the bot by clicking on corresponding link or button.

For example, if user describes an issue for whic bot offers articles by Answers and suggests a Form to file, and user clicks on an article link, then this issue is counted toward this metric.
Tab Resolution:

- top side panel
- breakdowns by topic, route, department, language, location, domain, “ticket avoided”
SELECT COUNT(global_issue_uuid) FROM bpi_issue WHERE dim_issue_result IN (‘Bot Solutions Engaged’, ‘Issue Resolved’)Not available
Number of issues: breakdown by issue result
(Issue Result = "Issue Submitted by User”, “Bot Offered Solution”, "Bot Solutions Engaged”, ”Issue Resolved”)
Breakdown of issues by “Issue result” shows exclusive buckets of issues depending on the outcome.
Issue Result = "Issue Submitted by User”: issue was submitted by user but bot did not offer any solutions
Issue Result = “Bot Offered Solution”: bot offered a solution to the issue but user did not engage with it
Issue Result = "Bot Solutions Engaged”: user engages with solution offered by bot but bot does not resolve the issue
Issue Result = ”Issue Resolved: bot resolves the issue with one or more resolution skills
Tab Resolution:

- top side panel
- breakdowns by topic, route, department, language, location, domain, “ticket avoided”
SELECT dim_issue_result, COUNT(global_issue_uuid) FROM bpi_issue WHERE dim_issue_result is not null GROUP BY dim_issue_resultNot available
Number of utterances in shared IT channelNumber of Channel utterances shows how many of issues described in shared IT channel bot attempted to resolve with one of resolution skills. Utterances that are not meant to be resolved (such as utterances typed into the channel by IT agent or utterances in threads) are not counted toward this metric.Tab Resolution → side panel for Messages to Bot - Channel Utterances in Route breakdown:

- top metric
SELECT COUNT(global_issue_uuid) AS "Num Channel Issues" FROM bpi_issue WHERE ((dim_issue_origin = 'CHANNEL_UTTERANCE') AND (has_resolution_skill_pass_pretrigger = 'true'))select count(*) from {{today's date}}_daily_channel_issues
Number of Bot reach-outs in shared IT channelNumber of Bot reach-outs shows for how many issues described in shared IT channel bot has offered a solution from one of resolution skills. For example, if user described as issue in IT channel and bot suggested a solution to them in DM, this issue is counted toward this metric, even if user does not follow up with the bot in DM.Tab Resolution → side panel for Messages to Bot - Channel Utterances in Route breakdown:

- top metric
SELECT COUNT(global_issue_uuid)AS "Num Channel Reachouts" FROM bpi_issue WHERE ((dim_issue_origin = 'CHANNEL_UTTERANCE') AND (num_resolution_skill_offer_won >= 1))select count(*) from {{today's date}}_daily_channel_issues

Skill metrics

Metric name
.....................................
Metric description
......................................................
Where to find the metric
.................................................
Example SQLSQL for SFTP data
Number of issues with Skill Result=”Served but not engaged in Bot”Bot suggests a solution by the skill but user does not engage with it. For example, bot offers a Form but user does not return to bot or returns to bot with another issueTab Resolution → side panel for Answers:

- top metric
- breakdowns by knowledge served, topics identified
- time trend
Tab Resolution → side panel for Form Filling:
- breakdowns by forms served, topics identified
- time trend
Tab Resolution → side panel for Access Software:
- breakdown by software provisioned
- time trend
Tab Resolution → side panel for Access Groups:
- breakdown by subskill- time trend
Tab Resolution → side panel for Access Account:
- breakdown by subskill- time trend
Tab Resolution → side panel for Messages to Bot - Channel Utterances:
- breakdown by skill, topic identified
- time trend
SELECT count(*)
FROM bpi_issue_skill
WHERE
dim_skill_result = 'Served But Not Engaged In Bot'
Not available
Number of issues with Skill Result=”Engaged in Bot But Not in Skill”Bot provides a solution by Resolution skill but user does not explore the solution. However user responds in generic way, for example, user does not click into suggested Answers link but clicks on Cancel button.
Another scenario is when bot offers solutions by other skills as well and user engages with one of these other skills rather than with the skill relevant to this metric.
Tab Resolution → side panel for Answers:

- top metric
- breakdowns by knowledge served, topics identified
- time trend
Tab Resolution → side panel for Form Filling:
- breakdowns by forms served, topics identified
- time trend
Tab Resolution → side panel for Access Software:
- breakdown by software provisioned
- time trend
Tab Resolution → side panel for Access Groups:
- breakdown by subskill- time trend
Tab Resolution → side panel for Access Account:
- breakdown by subskill- time trend
Tab Resolution → side panel for Messages to Bot - Channel Utterances:
- breakdown by skill, topic identified
- time trend
SELECT count(*)
FROM bpi_issue_skill
WHERE
dim_skill_result = 'Engaged In Bot But Not On Skill'
Not available
Number of issues with Skill Result=”Engaged on Skill But Not Resolved”User engages with a solution offered by particular skill but does not proceed to full resolution by this skill. For example, bot provides a solution by Answers and user clicks on the link but then rates it as not helpful or proceeds to file a ticketTab Resolution → side panel for Answers:

- top metric
- breakdowns by knowledge served, topics identified
- time trend
Tab Resolution → side panel for Form Filling:
- breakdowns by forms served, topics identified
- time trend
Tab Resolution → side panel for Access Software:
- breakdown by software provisioned
- time trend
Tab Resolution → side panel for Access Groups:
- breakdown by subskill- time trend
Tab Resolution → side panel for Access Account:
- breakdown by subskill- time trend
Tab Resolution → side panel for Messages to Bot - Channel Utterances:
- breakdown by skill, topic identified
- time trend
SELECT count(*)
FROM bpi_issue_skill
WHERE
dim_skill_result = 'Engaged On Skill But Not Resolved'
Not available
Number of issues with Skill Result=”Resolved By Skill”Issue is resolved by one of the bot resolution skills:

- Answers: Bot provided answers that were rated helpful or not rated. This excludes answers that were rated negatively;
- Account Access Enabled: Bot allowed employees to reset passwords or unlock accounts;
- Group-related Operations Provided: Bot created or changed membership for groups and distribution lists;
- Software Access Enabled: Bot provided access to a software application;
- Forms Filled: Employees filled a form or structured request recommended by bot.
Tab Resolution → side panel for Answers:

- top metric
- breakdowns by knowledge served, topics identified
- time trend
Tab Resolution → side panel for Form Filling:
- breakdowns by forms served, topics identified
- time trend
Tab Resolution → side panel for Access Software:
- breakdown by software provisioned
- time trend
Tab Resolution → side panel for Access Groups:
- breakdown by subskill- time trend
Tab Resolution → side panel for Access Account:
- breakdown by subskill- time trend
Tab Resolution → side panel for Messages to Bot - Channel Utterances:
- breakdown by skill, topic identified
- time trend
SELECT count(*)
FROM bpi_issue_skill
WHERE dim_skill_result = 'Resolved By Skill'
Not available
Number of issues by Skill Result“Resolved by Skill” - Bot resolves issue using the corresponding Resolution skill
”Engaged on Skill But Not Resolved” - User engage with a solution offered by particular skill but does not proceed to full resolution by this skill. For example, bot provides a solution by Answers and user clicks on the link but then rates it as not helpful or proceeds to file a ticket
”Engaged in Bot But Not in Skill” - Bot provides a solution by Resolution skill but user does not explore the solution but responds in generic way. For example, user does not click into suggested Answers link and procedes to file a ticket.
”Served but not engaged in Bot” - Bot suggests a solution by the skill but user does not engage with it. For example, bot offers a Form but user does not file it
Tab Resolution → side panel for Answers:

- top metric
- breakdowns by knowledge served, topics identified
- time trend
Tab Resolution → side panel for Form Filling:
- breakdowns by forms served, topics identified
- time trend
Tab Resolution → side panel for Access Software:
- breakdown by software provisioned
- time trend
Tab Resolution → side panel for Access Groups:
- breakdown by subskill- time trend
Tab Resolution → side panel for Access Account:
- breakdown by subskill- time trend
Tab Resolution → side panel for Messages to Bot - Channel Utterances:
- breakdown by skill, topic identified
- time trend
SELECT dim_skill_name AS "Skill Name", COUNT(CASE WHEN ((dim_skill_result = 'Resolved By Skill')) THEN global_issue_uuid END)AS "Resolved By Skill", COUNT(CASE WHEN ((dim_skill_result = 'Engaged On Skill But Not Resolved'))THEN global_issue_uuid END)AS "Engaged On Skill But Not Resolved", COUNT(CASE WHEN ((dim_skill_result = 'Engaged In Bot But Not On Skill'))THEN global_issue_uuid END)AS "Engaged In Bot But Not On Skill", COUNT(CASE WHEN ((dim_skill_result = 'Served But Not Engaged In Bot'))THEN global_issue_uuid END)AS "Served But Not Engaged In Bot" FROM bpi_issue_skill WHERE ((dim_skill_result IS NOT NULL) AND (dim_skill_result != 'Not Served'))Not available
Number of employees with bot resolution by specific resolution skillNumber of employees who had any of their issues resolved by one of resolution skills: Answers, Form Filling, Access Software, Access Account or Access GroupsTab Resolution → side panels for Skill breakdown:

- top metric
SELECT dim_skill_name, COUNT(DISTINCT user_record_id)AS "Employees with Resolution"FROM bpi_issue_skill WHERE ((is_resolved_by_skill = 'true')) group by dim_skill_nameselect skill_category, count(distinct user_id) from {{date}}_daily_detailed_report where skill_category not in ( 'Interaction', 'Lookups') and skill_detail<>'AskMe rated Not Helpful' group by skill_category

(newer SFTP versions)
Number of Answers snippets servedNumber of Answers snippets served shows total number of times any knowledge snippet was offered to employee as a solution of their issues. For example, if same snippet was served in response to 5 different issues, it will add 5 to this metric.Tab Resolution → side panel for Answers:

- top metric
SELECT COUNT(offer_item_id) AS "Number of Served Offer Items" FROM bpi_issue_skill_item WHERE ((dim_skill_result IS NOT NULL) AND (dim_skill_result != 'Not Served') AND (dim_skill_name = 'Answers'))

Acceleration metrics

Metric name
.....................................
Metric description
......................................................
Where to find the metric
.................................................
Example SQLSQL for SFTP
Number of unique tickets that users interacted with in the botNumber of unique tickets for which an employee performed one of the interactions (including submitting a ticket, closing a ticket, adding a comment, clicking on a ticket weblink, clicking on “Got it, Thanks”, nudging agent).Tab Acceleration:

- top metric
- time trend
- breakdowns by interaction category, platform, department, language, location, domain
SELECT COUNT(DISTINCT ticket_id)AS "Issue Count" FROM bpi_interaction WHERE dim_interaction_category IN ('Click On Got It Thanks','Live Chat Clicked','Ticket Closed In Bot','Ticket Submitted In Bot','Comment Added','Nudge Agent','Ticket Weblink Clicked','Check Status','Other Interaction')SELECT COUNT(DISTINCT ticket_id)AS "Issue Count"FROM {{date}}_daily_detailed_report WHERE skill_category='Interaction’ and skill_detail in ('Click On Got It Thanks','Live Chat Clicked','Ticket Closed In Bot','Ticket Submitted In Bot','Comment Added','Nudge Agent','Ticket Weblink Clicked','Check Status','Other Interaction')
Number of tickets interactionsNumber of ticket interaction performed through the bot by employees (i.e. submit a ticket, close a ticket, add a comment, click on a weblink, click on “Got it, Thanks”, click to get directed to live chat, check status, nudge agent).Tab Acceleration:

- breakdowns by interaction category, platform, department, language, location, domain
SELECT COUNT(proc_link_root_uuid) AS "Interactions Count" FROM bpi_interaction WHERE dim_interaction_category IN ('Click On Got It Thanks','Live Chat Clicked','Ticket Closed In Bot','Ticket Submitted In Bot','Comment Added','Nudge Agent','Ticket Weblink Clicked','Check Status','Other Interaction')SELECT COUNT(*)AS "Interactions Count"FROM {{date}}_daily_detailed_report WHERE skill_category='Interaction’ and skill_detail in ('Click On Got It Thanks','Live Chat Clicked','Ticket Closed In Bot','Ticket Submitted In Bot','Comment Added','Nudge Agent','Ticket Weblink Clicked','Check Status','Other Interaction')
Number of employees who interacted with ticket through the botEmployees who accessed tickets through the bot and performed ticket operations (i.e. submit a ticket, close a ticket, add a comment, click on a weblink, click on “Got it, Thanks”, click to get directed to live chat, check status).Tab Acceleration:

- top metric
SELECT COUNT(DISTINCT user_record_id) AS "Distinct User Count" FROM bpi_interaction WHERE dim_interaction_category IN ('Click On Got It Thanks','Live Chat Clicked','Ticket Closed In Bot','Ticket Submitted In Bot','Comment Added','Nudge Agent','Ticket Weblink Clicked','Check Status','Other Interaction')SELECT COUNT(DISTINCT user_id)AS "Issue Count"FROM {{date}}_daily_detailed_report WHERE skill_category='Interaction’ and skill_detail in ('Click On Got It Thanks','Live Chat Clicked','Ticket Closed In Bot','Ticket Submitted In Bot','Comment Added','Nudge Agent','Ticket Weblink Clicked','Check Status','Other Interaction')
Total tickets with approvalsNumber of tickets with Approval requests that were polled by bot.Tab Acceleration:

- top metric
- top side panel
- breakdowns by type, department, language, location, domain
SELECT COUNT(DISTINCT approval_parent_id) AS "Distinct Approval Parent ID Count" FROM clt_issue_approvalsNot available
Median time to approvalThe median time between when an approval was requested and when it was approved or denied in the bot, in minutes.Tab Acceleration:

- top metric
SELECT median(num_mins_to_resolution) AS "Median Time to Approval" FROM clt_issue_approvals WHERE ((is_resolved_by_bot = 'true')AND (num_mins_to_resolution IS NOT NULL)AND (is_first_approval_resolution = 'true'))select median(minutes-to_resolution) from {{date}}_daily_detailed_report where skill_detail=’Tickets approved'
Tickets with approvals processedNumber of tickets with Approval requests that are approved or rejected by employees using the botTab Acceleration:

- top metric
- time trend
- breakdowns by type, department, language, location, domain
SELECT COUNT(DISTINCT CASE WHEN ((is_resolved_by_bot = 'true'))THEN approval_parent_id END) AS "Approvals Processed" FROM clt_issue_approvalsselect count(distinct ticket_id) from {{date}}_daily_detailed_report where skill_detail=’Tickets approved'
% approvers engagedRatio of the number of unique users who approved or rejected an approval to the number of unique approvers requested for an approval polled by botTab Acceleration:

- time trend
SELECT to_char(date_trunc("week", Date(dt)), 'yyyy-MM-dd')AS "Week", COUNT(DISTINCT CASE WHEN ((is_resolved_by_bot = 'true'))THEN approval_parent_id END) AS "Approvals Processed", COUNT(DISTINCT CASE WHEN ((is_resolved_by_bot = 'true'))THEN user_record_id END) AS "Users with Resolved Approvals", COUNT(DISTINCT user_record_id) AS "Total Users" FROM clt_issue_approvalsNot available
Tickets triagedNumber of tickets triaged by Moveworks botTab Acceleration:

- top metric
- side panel top metric
- side panel time trend
[SELECT COUNT(DISTINCT ticket_id)AS "Distinct Tickets Count" FROM bpi_triage_record WHERE ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope') AND (dim_reason_for_not_triage IN ('NO_REASON', 'NO_CHANGE')) AND (dim_predicted_field_type != 'Field not Mapped') )][SELECT COUNT(DISTINCT ticket_id)AS "Distinct Tickets Count"FROM {{date}}_daily_triage_record WHERE ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triage IN ('NO_REASON', 'NO_CHANGE'))AND (dim_predicted_field_type != 'Field not Mapped') )]
Tickets triaged correctlyThe number of tickets that were Transferred, Routed, or Categorized, without any later manual correction.

- Routed: Tickets routed to the appropriate support group. This generally refers to tickets that are updated on a routing field, such as Assignment Group and Components
- Transferred: Call tickets transferred to another table. This generally refers to tickets that are updated on a call type field, usually getting classified as either Incident or Request
- Categorized: Tickets labeled. This generally refers to tickets that are updated on non-routing descriptive fields, such as Category, Subcategory, and Configuration Item
Tab Acceleration:

- top metric
- side panel top metric
- side panel time trend
SELECT COUNT(DISTINCT ticket_id) AS "Distinct Tickets Count" FROM bpi_triage_record WHERE ((dim_predicted_field_type = 'Transferred')OR ((dim_predicted_field_type IN ('No Change', 'Routed', 'Categorized'))AND (dim_triage_result_type IN ('Correct', 'Correct (no change)'))))SELECT COUNT(DISTINCT ticket_id)AS "Distinct Tickets Count"FROM {{date}}_daily_triage_record WHERE ((dim_predicted_field_type = 'Transferred')OR ((dim_predicted_field_typeIN ('No Change', 'Routed', 'Categorized'))AND (dim_triage_result_typeIN ('Correct', 'Correct (no change)'))))
Triage precisionRatio of the number of tickets triaged correctly to the number of tickets triaged and closedTab Acceleration:

- side panel top metric
- side panel time trend
SELECT COUNT(DISTINCT CASE WHEN ((dim_predicted_field_type = 'Transferred')OR ((dim_predicted_field_type IN ('No Change', 'Routed', 'Categorized'))AND (dim_triage_result_type IN ('Correct', 'Correct (no change)'))))THEN ticket_id END)AS "Tickets Triaged Correctly" , COUNT(DISTINCT CASE WHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triage IN ('NO_REASON', 'NO_CHANGE'))AND (dim_predicted_field_type != 'Field not Mapped')AND (dim_triage_result_type IN ('Correct', 'Incorrect', 'Correct (no change)', 'Incorrect (no change)')))THEN ticket_id END)AS "Tickets Triaged and Closed" FROM bpi_triage_recordSELECTCOUNT(DISTINCT CASEWHEN ((dim_predicted_field_type = 'Transferred')OR ((dim_predicted_field_typeIN ('No Change', 'Routed', 'Categorized'))AND (dim_triage_result_typeIN ('Correct', 'Correct (no change)'))))THEN ticket_idEND)AS "Tickets Triaged Correctly" ,COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triageIN ('NO_REASON', 'NO_CHANGE'))AND (dim_predicted_field_type != 'Field not Mapped')AND (dim_triage_result_typeIN ('Correct', 'Incorrect', 'Correct (no change)', 'Incorrect (no change)')))THEN ticket_idEND)AS "Tickets Triaged and Closed"FROM {{date}}_daily_triage_record
Triage coverageRatio of the number of tickets triaged and closed to the number of tickets eligible for triageTab Acceleration:

- side panel top metric
- side panel time trend
SELECT COUNT(DISTINCT CASE WHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triageIN ('NO_REASON', 'NO_CHANGE'))AND (dim_predicted_field_type != 'Field not Mapped'))THEN ticket_id END) AS "Tickets Triaged",COUNT(DISTINCT ticket_id)AS "Tickets Eligible for Triage"FROM bpi_triage_recordWHERE ((dim_predicted_field_type != 'Not Relevant') AND (dim_predicted_field_type != 'Out of Scope'))SELECTCOUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triageIN ('NO_REASON', 'NO_CHANGE'))AND (dim_predicted_field_type != 'Field not Mapped'))THEN ticket_id END) AS "Tickets Triaged",COUNT(DISTINCT ticket_id)AS "Tickets Eligible for Triage"FROM {{date}}_daily_triage_record WHERE ((dim_predicted_field_type != 'Not Relevant') AND (dim_predicted_field_type != 'Out of Scope'))
Triage precision and precision reassignedPrecision = Tickets Triaged Correctly / Tickets Triaged and Closed
Precision Reassigned = Tickets Triaged Correctly Reassigned / Tickets Triaged and Closed Reassigned
Tab Acceleration:

- side panel breakdowns
- side panel time trend
SELECT COUNT(DISTINCT CASE WHEN ((dim_predicted_field_type = 'Transferred')OR ((dim_predicted_field_type IN ('No Change', 'Routed', 'Categorized'))AND (dim_triage_result_typeIN ('Correct', 'Correct (no change)'))))THEN ticket_id END)AS "Tickets Triaged Correctly",COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triage IN ('NO_REASON', 'NO_CHANGE'))AND (dim_predicted_field_type != 'Field not Mapped')AND (dim_triage_result_typeIN ('Correct', 'Incorrect', 'Correct (no change)', 'Incorrect (no change)')))THEN ticket_id END)AS "Tickets Triaged and Closed",COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type = 'Transferred')OR ((dim_predicted_field_typeIN ('No Change', 'Routed', 'Categorized'))AND (dim_triage_result_type = 'Correct')))THEN ticket_id END)AS "Tickets Triaged Correctly Reassigned" ,COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triage IN ('NO_REASON'))AND (dim_predicted_field_type != 'Field not Mapped')AND (dim_triage_result_type IN ('Correct', 'Incorrect')))THEN ticket_idEND)AS "Tickets Triaged and Closed Reassigned"FROM bpi_triage_recordSELECTCOUNT(DISTINCT CASEWHEN ((dim_predicted_field_type = 'Transferred')OR ((dim_predicted_field_typeIN ('No Change', 'Routed', 'Categorized'))AND (dim_triage_result_typeIN ('Correct', 'Correct (no change)'))))THEN ticket_id END)AS "Tickets Triaged Correctly",COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triage IN ('NO_REASON', 'NO_CHANGE'))AND (dim_predicted_field_type != 'Field not Mapped')AND (dim_triage_result_typeIN ('Correct', 'Incorrect', 'Correct (no change)', 'Incorrect (no change)')))THEN ticket_id END)AS "Tickets Triaged and Closed",COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type = 'Transferred')OR ((dim_predicted_field_typeIN ('No Change', 'Routed', 'Categorized'))AND (dim_triage_result_type = 'Correct')))THEN ticket_id END)AS "Tickets Triaged Correctly Reassigned" ,COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triage IN ('NO_REASON'))AND (dim_predicted_field_type != 'Field not Mapped')AND (dim_triage_result_type IN ('Correct', 'Incorrect')))THEN ticket_idEND)AS "Tickets Triaged and Closed Reassigned"FROM {{date}}_daily_triage_record
Triage coverage and coverage reassignedCoverage = Tickets Triaged / Tickets Eligible for Triage
Coverage Reassigned = Tickets Triaged Reassigned / Tickets Eligible for Triage Reassigned
Tab Acceleration:

- side panel breakdowns
- side panel time trend
SELECTCOUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triageIN ('NO_REASON', 'NO_CHANGE'))AND (dim_predicted_field_type != 'Field not Mapped'))THEN ticket_id END)AS "Tickets Triaged",COUNT(DISTINCT ticket_id)AS "Tickets Eligible for Triage",COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_start_value != dim_final_value)AND (dim_reason_for_not_triage = 'NO_REASON')AND (dim_predicted_field_type != 'Field not Mapped'))THEN ticket_idEND) AS "Tickets Triaged Reassigned",COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_start_value != dim_final_value))THEN ticket_idEND)AS "Tickets Eligible for Triage Reassigned"FROM bpi_triage_recordWHERE ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope'))SELECTCOUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_reason_for_not_triageIN ('NO_REASON', 'NO_CHANGE'))AND (dim_predicted_field_type != 'Field not Mapped'))THEN ticket_id END)AS "Tickets Triaged",COUNT(DISTINCT ticket_id)AS "Tickets Eligible for Triage",COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_start_value != dim_final_value)AND (dim_reason_for_not_triage = 'NO_REASON')AND (dim_predicted_field_type != 'Field not Mapped'))THEN ticket_idEND) AS "Tickets Triaged Reassigned",COUNT(DISTINCT CASEWHEN ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope')AND (dim_start_value != dim_final_value))THEN ticket_idEND)AS "Tickets Eligible for Triage Reassigned"FROM {{date}}_daily_triage_record WHERE ((dim_predicted_field_type != 'Not Relevant')AND (dim_predicted_field_type != 'Out of Scope'))

Adoption metrics

Metric nameMetric descriptionWhere to find the metricExample SQLSQL for SFTP data
Bot-Active Employees

List of users in side panel under “View Users” button
Employees who have actively used the bot (who typed in the bot, clicked on a button in the bot, or clicked on a link generated by the bot) in the selected time rangeTab Adoption:

- top metric
- top side panel
- time trend
- breakdowns by department, language, location
SELECT COUNT(DISTINCT user_record_id)AS "Bot Active Employees"FROM user_summary_daily WHERE ((is_bot_active_user = 'true')AND (is_tester = 'false'))select count(distinct user_id) from {{date}}_daily_active_users
Employee Who Submitted Issues or Tickets

Equivalent to Employees with Issues
Number of employees who created tickets in ITSM system or described an issue in the botTab Adoption:

- top metric
- time trend
- breakdowns by department, language, location
SELECT COUNT(DISTINCT user_record_id)AS "Employees with Issues"FROM user_summary_dailyWHERE ((is_bot_first_eligible = 'true')AND (is_tester = 'false') )Not available
Number of conversationsThe total number of conversations that an employee engaged with the bot; one conversation is defined by an employee-to-bot conversation interrupted by no more than 30 minutesTab Adoption:

- top metric
- time trend
- breakdowns by department, language, location
SELECT SUM(num_tot_user_sessions)AS "Number of Conversations"FROM user_summary_daily WHERE ((is_tester = 'false'))Not available
Number of First Time UsersUsers who became active in bot for the first time in the selected time range (typed in the bot, clicked on a button in the bot, or clicked on a link generated by the bot)Tab Adoption:

- time trend
SELECT COUNT(DISTINCT user_record_id)AS "Bot Active Employees"FROM user_summary_daily WHERE ((is_first_time_user = 'true')AND (is_tester = 'false'))Not available

Row-level data columns

Column nameColumn description
ARTICLE ADDED DATEDate of addition/update of knowledge snippet used by Answers skill
ARTICLE IDID of the knowledge article that has the snippet used by Answers skill. For example, for ServiceNow Knowledge Base article ID looks like KB0012345.
ARTICLE TITLETitle of the knowledge snippet used by Answers skill
CHANNEL IDID of Slack channel (if the feature is enabled for the org) where issue was described by user
CHANNEL NAMEName of Slack channel (if the feature is enabled for the org) where issue was described by user
COUNTRY CODEAs indicated for the user in user roster
DEPARTMENTAs indicated for the user in user roster
DOC DOMAINDomain of the knowledge snippet used by Answers skill, as configured for the knowledge. For example, if knowledge is curated by HR owner, domain is HR.
DOC SOURCESource of the knowledge snippet used by Answers skill which can be one of “Internal Knowledge Base”, “Moveworks FAQ Sheet”, “Moveworks External Knowledge” or “Internal File”
DOMAINDomain of Enterprise services representing nature of the issue. For example, inquiries on laptop replacement as in IT domain, whereas questions about PTO balance are in HR domain.
ENTITYEntity, or topic, is ML-predicted label succinctly describing nature of the issue. For example, for an issue “I need a license for Zoom”, topic is “zoom”. For more details, see Entity Prediction.
IS AGENT HANDOFF?True if for the given issue, user clicks on a button or link to be redirected to Live Chat or other Agent Handoff
IS RESOLVED BY BOT?True if the issue was resolved by one of the bot’s Resolution skills
IS TICKET ESCALATED?True if for the given issue, user files a ticket from bot
ISSUE ORIGINDescribes origin of issues that were described in DM (”Messages to Bot”), filed as a ticket (”Tickets intercepted by Bot”), described in shared IT channel (”Messages to Bot - Channel Utterances”), or proactively raised by bot via notification (”Proactive Messages by Bot”)
ISSUE RATINGIndicates whether user gave positive or negative rating to the bot’s solution, by clicking on buttons “Helpful” or “Not Helpful”
ISSUE RESULTSee above in Resolution metrics
LANGUAGEBot language setting
LOCATIONAs indicated for the user in user roster
RESOLVED BY SKILL(S)List of Resolution skills that bot used to resolve the issue
SKILL NAMEOne of the Bot resolution skills: Answers, Form Filling, Access Software, Access Account and Access Groups
SKILL RESULTSee above in Skill metrics
TICKET IDID of ITSM ticket relevant to the issue. For example, if the issue was originally filed as a ticket and this ticket was polled by bot, ticket id reflects the ID of the original ticket. Or, if user describes an issue in bot and proceeds to file a ticket for this issue, ticket id reflects the ID of the ticket filed from bot.
USER RECORD IDNumeric anonymized user ID, generated by Moveworks system
USER TEXTText of issue description, either as typed in bot, or as entered as ticket description in ticketing system.