Dashboard Reporting in Jira with ScriptRunner and Custom Charts

ScriptRunner and Custom Charts Header Image

Visualizing trends and alerts in your Jira data shouldn’t be a challenge. If you’ve ever tried to build complex Jira Query Language (JQL) queries you’ve probably realized that there’s a lot you can’t do with out-of-the-box Jira. Many people who have gone down this path look to Adaptavist’s ScriptRunner tool to fill in the gaps.

Scriptrunner provides users with a simple way of creating more precise searches using enhanced JQL functions, without having to learn the Atlassian software developer kit (SDK). It comes with a library of useful JQL functions that you’re able to extend or modify.

This article explains how you can use Scriptrunner’s enhanced JQL functions and Old Street Solutions’ Custom Charts for Jira to create a fit-for-purpose monitoring dashboard with highly customized reports on the following metrics:

  • Inactive Assignees – a report that shows all issues with inactive assignees grouped by Project
  • Data Warnings – a report that uses RegEx searches to find specific text on issues
  • Sprint Scope Creep – a report that shows Story Points added after sprints have started

How to Create a Monitoring Dashboard

Dashboards are a great way to visualize trends and anomalies hidden in large amounts of data. Charts and graphs allow us to quickly notice changes and take action, so it is very useful to have a monitoring dashboard set up for your most important questions. Let’s dive right in to the first one: inactive assignees.

Visual Charts Jira Dashboards Inactive Assignees

Inactive Assignees

Employee turnover is challenging in all organizations, but deactivating user accounts is only the first step to managing their departure. Tickets assigned to inactive users will still need working on, so what’s the easiest way to find those issues?

ScriptRunner offers a solution with the JQL function:

assignee in inactiveUsers()

This JQL function will return all issues that are assigned to an inactive user. Great! Except that the data is returned in a single list…

JQL Inactive Assigned Tickets

These issues could be spread across multiple projects and multiple teams, with no easy way to sort them or re-assign them. Unless you want to be running these searches every day for every project, this isn’t a sustainable solution.

Using Custom Charts for Jira, you can display issues with inactive assignees on a chart or table for each project, allowing you to easily see user management changes directly on a Jira dashboard. Alternatively you could use Custom Jira Charts for Confluence to display the information on a Confluence page.

Clicking on a chart segment will show a list of the issues with an inactive assignee for that specific project. As shown in the chart below, Custom Charts lets you use JQL directly in the chart instead of creating a separate saved filter and then linking to it in the chart, which you’d have to do if you used a native pie chart.

Inactive Assignees Chart Created Using Custom Charts

Data Warnings

When something unexpected happens, does that mean alarm bells start ringing everywhere and the building goes into lockdown? Depending on where you work (MI6, Democratic Caucuses, etc.), this might be the case. However, if you’re after a less dramatic way of tracking unexpected behavior in Jira, the ScriptRunner RegEx JQL function is for you.

Search for specific strings in an issue field (e.g. Summary, Description, etc.) to find and monitor instances where people have added passwords, secrets, or even production API keys (it happens…) as plain text.

Find issues with the word “secret” in the Description:

issueFunction in issueFieldMatch(“”, “Description”, “secret”)

ScriptRunner Function for Data Warnings 1

Find issues with the string “Password”, “P@S$WoRd” and other character combinations:

issueFunction in issueFieldMatch(“”, “Description”, “[pP][aA@][sS$][sS$][wW][oO0][rR][dD]”)

ScriptRunner Function for Data Warnings 2

Find issues where the Description field contains an API Key:

issueFunction in issueFieldMatch(“”, “Description”, “[5KL][1-9A-HJ-NP-Za-km-z]{50,51}”)

ScriptRunner Function for Data Warnings 3

Now, if you wanted to see all of those data warnings in one chart, you’ll need an app like Custom Charts to easily display them. See the Custom Chart below that has the custom JQL for each segment, all listed in one place. This gadget can serve as an at-a-glance view of any potential security concerns in your Jira issues.

Sprint Scope Creep

When viewing data from multiple sprints it can be hard to see the trends over time. A simple question is to ask about scope “creep” and see how many issues (and Story Points) are being added to a sprint after it has started.

ScriptRunner offers the JQL function:


Jira Scope Creep JQL Report

This JQL function returns all issues added to an already started sprint. The results can be displayed on a custom bar chart using the Chart By Custom JQL feature in Custom Charts.

Custom Charts also lets you change the calculation to display the sum of the Story Points of these issues to see how many points your scope creep included.

Count Story Points Jira Dashboard

To create this monitoring dashboard, just download Scriptrunner and Custom Charts from the Atlassian Marketplace:

Custom Charts can also be created directly in Confluence using the app Custom Jira Charts for Confluence, which has identical features to the Jira app.

You can demo Custom Charts right now in our free interactive app playground.

If you have any questions or ideas for features we can add to Custom Charts and would like to speak to our team, please contact us.

Morgan is a Seattle born and raised lover of rain and software, particularly software that isn’t a pain in the bum (like some Atlassian tools can be). This is why she’s a Custom Charts for Jira superfan and jumped at the chance to contribute to the solution herself. She specializes in Agile, Scaled Agile, and ITIL in the Atlassian app space, loves a cross-country road trip, and is on a mission to find the cutest coffee shop in every town she visits.