Compatibility with Jira 8

Only those versions marked as compatible in the Atlassian Marketplace will work with Jira 8.

Some of your scripts may fail if you upgrade without modifications.

If you have been through the Jira 6 → 7 upgrade you have little to fear in upgrading to Jira 8

You may well not need to make any changes to your own scripts. There is a guide to the major areas of change below.

For further reference you can use view Preparing for Jira 8. The information here is focused on the areas of change likely to affect script writers.

Use the script registry to quickly review all your code.

Upgrades and staging Environments

If you do not have a staging environment you should invest the time it takes to create one. You should be able to reliably clone your production instance to the staging environment, so you can test plugins and upgrades.

A good strategy to follow is to

  • make changes now to remove all deprecated code, while you are using Jira 7. Deprecations are shown with a yellow warning. If you do that your code has the best chance of working unchanged with Jira 8.

    type checked condition depr
  • once the deprecated code has been fixed, upgrade your staging instance to Jira 8

  • use the script registry to make sure you don’t have any type checking errors, and test

  • if you need to make changes, record what they are

  • when you upgrade your production instance, if you are using inline scripts, you will need to make the same changes. For files, you can update your scripts directory, e.g. by merging from a branch

Changes to Search API

There are some methods renamed in the search API.

The one most likely to have impact is that com.atlassian.jira.issue.search.SearchResults#getIssues has been renamed to getResults.

Example - you have a simple script that executes a JQL query, and does something with the first page of issues returned.

import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter

def searchService = ComponentAccessor.getComponent(SearchService)
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def queryParser = ComponentAccessor.getComponent(JqlQueryParser)

def query = queryParser.parseQuery("project = JRA and resolution is empty")
def search = searchService.search(user, query, new PagerFilter())

search.issues.each {
    // do something with each issue
}

In Jira 8, the last part should be rewritten:

search.results.each {
    // do something with each issue
}

That is: issues has been changed to results.

ComponentManager has been moved

You should have stopped using ComponentManager when upgrading from Jira 6 → 7, but if you didn’t your scripts would continue to work, albeit you would see a deprecation warning in the script editor.

If using componentManager provided as a variable to your script, you don’t need to make any changes.

If you haven’t already done this, follow the step of migrating to ComponentAccessor which should have been done when upgrading to Jira 7.

If you insist on using ComponentManager replace any imports:

import com.atlassian.jira.ComponentManager

with

import com.atlassian.jira.component.pico.ComponentManager

Anything else?

Did we miss something important that script authors should take into account when upgrading? Please let us know.

If it’s likely to affect more than a couple of users we will add it to this documentation.

Have questions? Visit the Atlassian Community to connect, share, and learn with other Atlassian users and experts, including Adaptavist staff.

Ask a question about ScriptRunner for JIRA, Bitbucket Server, or Confluence.

Want to learn more? Check out courses on Adaptavist Learn, an online platform to onboard and train new users for Atlassian solutions.