KPI’s, performance, reporting, ServiceNow and Mirror42

General Add comments

Mirror42 is a reporting application that focuses on providing Dashboards, Scorecards and Analytics based on Performance Indicators (PI). These PI’s have already been defined in the system. Naturally other PI’s can be defined within the application that are needed by your organization. Mirror42 mainly focuses on the tactical level rather than the operational level; meaning that it focuses on providing information to managers about performance of the company/department(s)/assignment group(s), and trends in these performances.

Figure 1: Example of Mirror42 dashboards integrated with ServiceNow

Strengths of Mirror42

  • Ease of Use: in Mirror42 it is easy to define your Performance Indicators, setup dashboards, define new Performance Indicators and collect data for them
  • Cloud-based: Mirror42 is a SaaS solution, which means the application, servers and databases are managed remotely by Mirror42. Customers will get access to the Mirror42 application, in which all necessary actions can be taken.
  • Quick to deploy: Mirror42 can be deployed rather quickly in a few days. We have recently installed a Proof of Concept (PoC) for one of our customers on the Incident Management process in just 2 days. This is including setting up the environment, which means it is just another few days to deploy Performance Indicators and dashboards for other processes, such as Change Management, Problem Management and Request Management.
  • Integration with ServiceNow: One of the major strengths of Mirror42 is that it has developed a GUI-integration with ServiceNow. Once installed, the scorecards and dashboards of Mirror42 will show itself as a separate application within ServiceNow. This means that users do not have to switch to another application to view the reports; they can simply open them from within their ServiceNow instance.

How to deploy Mirror42

Mirror42 is deployed in a few steps, as described below. The consultant deploying Mirror42 should:

  • Be familiar with ServiceNow and its data model (but why else would you read this blog?)
  • Have knowledge of Structured Query Language (SQL)
  • Be somewhat familiar with the ServiceNow instance on which Mirror42 will be deployed, and of specific requirements of the customer. In our PoC the customer was a managed services provider that services many customers. It uses domain separation to separate data between these customers in their ServiceNow instance. One of the main requirements was that it should be able to provide analytics and dashboards per customer (= per domain). Since this is not something that is provided out-of-the-box by Mirror42, we had to think about how to collect data to ensure that it was possible to fulfill this requirement (I will get back to this later on in this article).

I will only very briefly describe the steps to follow. A deployment guide is available containing more information about each step.

  1. Get access to the Mirror42 tenant: a so-called tenant will be provided by Mirror42, a user with administration rights in Mirror42 will be assigned to you.
  2. Add content to the Mirror42 tenant: There are several apps available for ServiceNow in Mirror42, such as Incident Management, Change Management , Problem Management, Request Management. These apps will install the appropriate Performance Indicators (“scorecards”), dashboards, tags, formulas (e.g. aggregates), etc.

    Figure 2: Example of apps available in Mirror42
  3. Install and configure the ServiceNow ODBC driver on the server from which the Mirror42 application will be run: See
  4. Install the Mirror42 DataCollector:
    See the software
    See for instructions
  5. Create an SNC user with access to tables to collect data from
  6. Import the Mirror42 update set
  7. Set DSN to ServiceNow instance url: Create a system data source using the ODBC Administrator and the ServiceNow ODBC driver that connects to the ServiceNow instance
  8. Configure a DataCollector file for the Mirror42 DataCollector: Define the SQL queries to collect the data in an XML file format. An application is available to help you define and test the correct queries
  9. Run and schedule data collection: Schedule the data collection via Windows task scheduling

Domain Separation

Back to our challenge for the PoC; how to set up the environment so that dashboards per customer (domain) are possible. It turned out not to be too hard at all. Four steps were needed:

  1. Set up a new breakdown for the domains
  2. Add queries for Performance Indicators to collect the data per domain
  3. Create a dashboard per domain
  4. Set up a user in ServiceNow and Mirror42 that can only view the specified domain

Ad 1:
A breakdown dashboard represents the information for one particular instance in a breakdown. For example, a region dashboard can be created. Out-of-the-box the following breakdowns are available for ServiceNow incident management:
a. Assignment Group
b. Priority
c. Incident stage
d. Incident age

It is quite easy to define a new breakdown. The data for the breakdown for domains is gathered with the following query:
[cc lang=”javascript”]
SELECT dom.sys_id,,
FROM domain dom

Ad 2:
As an example we will use the query to collect the values for new incidents created on a specific day.
[cc lang=”javascript”]
/* New incidents
The number of incidents with a registration date (incident.opened_at) on collection date.
FROM incident inc
WHERE inc.opened_at > ‘[[START_DATE]]’
AND inc.opened_at < '[[END_DATE]]' [/cc] The two variables are the start date and the end date of the period you would like to collect the data from. E.g. for April 27, 2013 these variables would be:

  • [START_DATE]: 2013-04-27 00:00:00
  • [END_DATE]: 2013-04-28 00:00:00

This query needs to be adjusted so that the same PI is collected for our breakdown.
[cc lang=”javascript”]
/* New incidents by breakdown Domain
SELECT dom.sys_id,, COUNT(*)
FROM domain dom
INNER JOIN incident inc ON inc.sys_domain=dom.sys_id
WHERE inc.opened_at > ‘[[START_DATE]]’
AND inc.opened_at < '[[END_DATE]]' GROUP BY dom.sys_id, [/cc] Ad 3:
In the Mirror42 application it is easy to create a new dashboard per breakdown:

Charts can be copied from existing dashboards and are then available for the new breakdown dashboard. The new dashboard could like this.

Figure 3: Example dashboard per domain

Ad 4:
a) Create a user in ServiceNow that only has access to the specified domain. Link role ‘Mirror42’ to this user.
b) Create the same user in Mirror42. It is easy to only grant rights to this user for the selected dashboard, and specific values of the breakdown:

Figure 4: Example of restricting access for users for only specific domains

Now the user will only be able to see the dashboard for the specified domain in ServiceNow:

Figure 5: Example of user with only access to the dashboard for “FakeDomain” in the ServiceNow instance

That’s it – all done.
If you have any questions you can contact me at .img[at].img.

One Response to “KPI’s, performance, reporting, ServiceNow and Mirror42”

  1. David McCourt Says:

    I have a question. How do I make monthly data collections accurate in Mirror42. The current set-up uses the start_date – 30 days to define the start of the month (which is as per the OOB). But as we know months have varying lengths. Is there anyway to define this dynamically in the Data Collector? What would the SQL statement be in that case?


Leave a Reply