The Now Platform® Washington DC release is live. Watch now!
When configuring a new report Performance Analytics, we sometimes get slowed down because the data isn't structured the way we need for reporting. There is a disconnect between the way we operationally use the data and the way we want to show it for reporting. For example, operationally we rollup our group hierarchy on HR's hierarchy but in other cases we need to see it based on the functional area which is slightly different.
For my entire career in analytics, I have been taught that we can't change the operational system the data comes from, we need to reactively deal with it and transform the data we get into a format we need for reporting. This is why we have teams of people handling Extract-Transform-Load (ETL) to clean and format the operational data to a usable format for our reports. ETL is how we clean the operational data and transform it to provide the data and format we need for reporting.
ServiceNow embraces a different paradigm: Performance Analytics and Reporting is part of the platform and not a separate system that we need to protect and insulate ourselves from. We need to keep the data clean and trustworthy in the platform and ensure we have all the fields needed for reporting as well.
Some application developers and system admins disagree with the concept of adding "Reporting Fields" to operational tables. If you hear this objection, it is important to push back.
Analytics is much like application security. You have to build it into your application, you can't just bolt it on later on. Just like application security, the sooner you start thinking about analytics in any implementation the better off you will be and the less rework you will have in the future.
If your management team requires data to be structured in a specific way on reports, why wouldn’t you expose that structure within the operational system?
Adding a "Reporting Field" will allow us to use that not only in reporting but also allow us to easily use that field in:
Note: Transforming the data via a PA Script doesn't address the root issue. In most cases, this is just ETL by a different name.
Let's walk through a simple example use case and discuss how we can take a "Reporting Field" and add it to the operational system.
We have 100 assignment groups handling incidents, and each assignment group belongs to a parent group - either Tier 1, Tier 2 or Tier 3. The CIO wants a summary of incidents broken down by "Front Office" and "Back Office” categories, but neither category is directly related to the assignment group or parent group.
We create and maintain a list outside of ServiceNow that categorizes each assignment group as Front Office or Back Office, and we use Excel or BI tools to create a pivot table. Inevitably, the list isn’t available to everyone who needs it, and quickly becomes outdated. Often, I see customers prefix their assignment groups with something like "FRONT-" or "BACK-" to help a human know which group is what.
The best way to handle this request is to add a field (most likely a choice list) to the Groups table (sys_user_group) that identifies which assignment groups are "Front Office" and which are "Back Office". We can then easily
Since we are dealing with a hierarchical data structure with sys_user_group, we could replace our tier hierarchy with a group layer of Front and Back Office. This would most likely be effective (and maybe a good choice depending on other needs) but in our case, the hierarchy was already being used for a different type of reporting.
You could also set Front Office and Back Office as a group type. However, "List" fields are difficult to report on so I chose not to use this approach.
There are many other places where we can benefit from materializing the "Reporting Field" as a field on the object. Using a business rule (BR) that runs after changes can execute the calculation only when needed, saving CPU cycles Performance Analytics or reporting would have used.
Here are a few other examples:
Instead of adding these criteria into every report, create a BR that updates a "High Visibility" flag when the Priority or Business Service changes (note, if Criticality is something that can change for Business Service, you may have to add a BR there as well to address this)
Including traditional "Reporting Fields" in your operational process will allow you to easily report on the data as well as do so much more with it. Exposing these properties in your operational tables allows everyone to see the information and make better decisions.
Follow Up
If you are looking for some hands-on examples of how to put this in practice, check out this blog, "Conquer Challenging Reports by Leveraging the Now Platform - Reporting on the Latest Status"
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.