(8.16.X) 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
Screen Scheme: Fetches the Project Issue Screen Scheme name
Workflow scheme: Fetches the Project Issue Workflow Scheme name
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.