Document toolboxDocument toolbox

(8.7.1) Jira standardization with Projectrak

Use case

A multinational corporation is currently immersed in a new digital transformation process that will implement a new WoW (Way of Working).

IT Management would like to achieve the same WoW from different headquarters. But the main issue is that every headquarter has a different Agile Coach and manages different companies, not being able to align with each other. Also, each coach has different requests for their Jira Admins in order to match the velocity at which each team advances in the process. On the other hand, general project reporting is required by the PMO, making it really difficult (almost impossible) for the Jira Admin to create reports due to the different characteristics in those Projects.

The company's Atlassian Application Manager asks an Atlassian Consultant for some advice. Helped by Projectrak, Atlassian Consultant creates a Layout for every Project Leader in order for them to categorize their projects in four different types: Product Development, Support and two more.

Layout

Source data

Store the information available when the project was requested. Example:

Project activity

Use Script Fields to calculate the last activity and total issues

Last activity

import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.jql.builder.JqlQueryBuilder
import com.atlassian.jira.web.bean.PagerFilter
import java.text.SimpleDateFormat
def searchService = ComponentAccessor.getOSGiComponentInstanceOfType(SearchService.class)
def user = ComponentAccessor.jiraAuthenticationContext.getLoggedInUser()
def lastUpdatedDate = new Date(Long.MIN_VALUE)
def builder = JqlQueryBuilder.newBuilder()
builder.where().project(project.id)
def query = builder.buildQuery()
def results = searchService.search(user, query, PagerFilter.getUnlimitedFilter())
if (results.getTotal() == 0) {
    return ""
}
else {
    def i = 0
    for (Issue issue : results.getResults())
    {
        def lastUpdated = issue.getUpdated()
        if (i == 0 || lastUpdated > lastUpdatedDate)
            lastUpdatedDate = lastUpdated
        i++
    }
    return new SimpleDateFormat("dd/MMM/yy").format(lastUpdatedDate)
}


Total issues

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.IssueManager

return ComponentAccessor.issueManager.getIssueCountForProject(project.id)

Schemes

Use Script Fields that will help with the Homogenization of the Company's Way of Work when added as Projectrak Script fields.

Issue Type Scheme: Fetches the Project Issue Scheme name

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.config.manager.IssueTypeSchemeManager

def issueTypeSchemeManager = ComponentAccessor.getOSGiComponentInstanceOfType(IssueTypeSchemeManager.class)
def scheme = issueTypeSchemeManager.getConfigScheme(project)
return scheme != null ? scheme.name : "Empty"

Priority Scheme: Fetches the Project Issue Priority Scheme name

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.config.manager.PrioritySchemeManager
import com.atlassian.jira.issue.fields.config.FieldConfigScheme

def prioritySchemeManager = ComponentAccessor.getOSGiComponentInstanceOfType(PrioritySchemeManager.class)
def priorityScheme = prioritySchemeManager.getScheme(project)
return priorityScheme != null ? priorityScheme.name : "Empty"

Screen Scheme: Fetches the Project Issue Screen Scheme name

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.screen.issuetype.IssueTypeScreenSchemeManager
import com.atlassian.jira.issue.fields.screen.issuetype.IssueTypeScreenScheme

def issueTypeScreenSchemeManager = ComponentAccessor.getOSGiComponentInstanceOfType(IssueTypeScreenSchemeManager.class)
def scheme = issueTypeScreenSchemeManager.getIssueTypeScreenScheme(project)
return scheme != null ? scheme.name : "Empty"

Workflow scheme: Fetches the Project Issue Workflow Scheme name

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.workflow.WorkflowSchemeManager

def workflowServiceManager = ComponentAccessor.getOSGiComponentInstanceOfType(WorkflowSchemeManager.class)
def workflow = workflowServiceManager.getWorkflowSchemeObj(project)
return (workflow != null) ? workflow.getName() : "Empty" 

Dashboard

Use Jira dashboards to get a better understanding of the instance How are the schemas distributed?

Or identify which projects do not have a reporter, even which user requests the most projects:

Once all the information is gathered and referring to the created Dashboard, the Atlassian Application Manager meets with everyone involved in order to explain the necessity in having the Atlassian Consultant be the link that gathers the necessities which will help an agreed-upon and common implementation of the new Way of Working in Jira, and at the same time start the moving process to this four types of standard projects to those teams that are not currently using them.