Preparing for Jira 9.2

This documentation is intended for Jira developers who want to ensure that their existing apps are compatible with Jira 9.2

Upgrading from 8.x to 9.x triggers full Jira reindex that causes some downtime during the process. If you’re on 8.x now, make sure you’ve estimated the downtime and set the best time for the upgrade.

Learn more about how to handle full reindex and estimate downtime

Quick info

Latest version

Here you can find information about the latest EAPs.

Application/Date numberVersion (Maven)Downloads

Jira Core/Software

 

9.2.0-EAP03

9.2.0-m0004


Source files (Core)

Source files (Software)

Jira Service Management

 

5.2.0-EAP03

5.2.0-m0004

Source files

Summary of changes

In this section we'll provide an overview of the changes we intend to make, so you can start thinking how it might impact your apps. Once they're ready, we'll indicate when a change has been implemented, and in which milestone.

OAuth 2.0 Outgoing mail (SMTP)

Status: IMPLEMENTED ( 01)

App: JIRA SERVICE MANAGEMENT, JIRA SOFTWARE

We’re introducing OAuth2 authorization for SMTP outgoing mail servers. We keep the support for Google and Microsoft as providers as well as the IMAP, POP3, and SMTP protocols for connection.

To find the feature, go to Administration > System > Outgoing mail. We’ve added two new fields and a new button to the form to allow the configuration of a proper authentication method or JNDI location:

  • Authentication method field
  • Enabled checkbox
  • Authorize button

  1. Authentication method is a method that you want to use. It always has the Password (basic authentication) option. Other options depend on defined OAuth providers. When Password (basic authentication) is selected, the Password input is added below Username.
  2. The Enabled checkbox states if a JNDI location should be used. If you select the checkbox, the Server Details section of the form will be disabled.
  3. The Authorize button has the following behavior:
    • The button is active and visible only when you select one of the OAuth providers as the authentication method. When you select the button, the flow for obtaining the OAuth token will be initiated. When the flow is completed, the Test Connection button will be enabled.
    • The button is hidden and inactive when the Password (basic authentication) method is selected. In this case, the user can immediately select the Test Connection button. A successful connection test is necessary, as without it the Save button remains disabled.

The feature is enabled by default. But you can continue using your current outgoing mail configuration.

Diagnostic recording configuration with JFR

Status: IMPLEMENTED ( 01)

App: JIRA SERVICE MANAGEMENT, JIRA SOFTWARE

We’ve added the ability to configure diagnostic recording via the user interface and endpoints with Java Flight Recorder (JFR). Now, to get the desired information, you can configure the amount of recorded data for the sake of easier problem diagnostics. To do this, adjust the following JFR settings:  

  • Maximum recording age: the maximum snapshot file age threshold beyond which the snapshot is deleted. 
  • Maximum recording size: the maximum snapshot size threshold beyond which the snapshot is deleted. 
  • Thread dumps interval: the time interval for extracting thread dumps. 

To find the feature, go to Administration > System > Troubleshooting and support tools. On the page, find the Java Flight Recorder settings section. 

Learn more about how to use Java Flight Recorder in Diagnosing runtime issues using Java Flight Recorder.

Faster page load time for backlog and board views

Status: IN PROGRESS ( 01)

App: JIRA SOFTWARE

We’re started reducing the amount of code that’s shipped to the browser on Jira Software pages, aiming to speed up page loading time in the app. So far, we’ve optimized page performance for Jira Agile views: backlog and board.

What has changed?

Polyfills are removed from all Jira pages and reports resources are decoupled for backlog and board views. We’ve currently in the process of bundling the code with webpack.

Removing polyfills from Jira

We’ve removed the following polyfills provided by the atlassian-frontend-runtime-plugin:

We’ve also deprecated escape-css-selector-polyfill and it'll be removed completely in Jira 9.3.0.
As polyfills are no longer present on Jira pages, they aren’t a part of our supported browsers threshold. The only asset that’s left in the atlassian-frontend-runtime-plugin is regenerator-runtime, and it will be removed in the next Jira version.

Decoupling of reports from Agile board and backlog views

We’ve reduced the sizes of Agile backlog and board views by ~700 kB. We’ve untangled and decoupled Agile reports resources from the rest by removing gh-chart-dependencies and jira-agile-reports from the gh-rapid web resource. Instead of having these dependencies preloaded, we now load them only when a user transitions to reports-related views.

What do you need to know?

As part of already implemented and planned changes, we’ve modified multiple AMD module names, which start with jira-agile/. If you’re using those in your apps, you’ll need to adjust module names to ensure that your applications work correctly. The updates mainly entail changing kebab-case to PascalCase convention. Global variables are left intact. However, as they are also non-API parts, we don’t recommend using them.

You can read more about the changes and why we decided to proceed with the current approach in Jira DC Front-end API Announcement

We plan some changes to modules in the upcoming Jira versions. If there are any important modules that you think should remain unchanged, let us know about your use case and particular module here: JSWSERVER-21430 - Getting issue details... STATUS

We’ll take it into consideration while working on further changes.

Background processing performance improvements

Status: IMPLEMENTED ( 01)

App: JIRA SERVICE MANAGEMENT

The Pretty Simple Message Queue (PSMQ) comes with another performance improvement. This time we've optimized some code areas, which helps achieve better instance stability and application scaling.

The changes include:

  • removed calls for the message queue property table to reduce the number of database calls.
  • dropped message priority from the API and queries (this column is not being used in code.)

With the changes in place, we can observe the following improvements in PMSQ processing time for up to 100k messages in the queue:

  • ~20% better performance in processing messages with 20 threads
  • ~65% better performance in processing messages with 5 threads (default config)

Pickers improvements

Status: IMPLEMENTED ( 01)

App: JIRA SOFTWARE

Following the changes introduced in the project picker behavior in Jira 8.21, we’ve made adjustments to other dropdown menus in the app. Instead of initially loading all the available items for a particular picker, we now only display 100 items on the list. The search input is used to query the backend for the results matching the provided query.

This change improves rendering time when creating or editing an issue as well as using ComponentPriority, and Version pickers in basic search mode. It also allows our customers to remain performant at scale even when the number of items to render is growing.

Changes and additions to the API

We’ve added new endpoints that allow querying versions, components, issue types, resolutions, statuses, and priorities. All new endpoints return paginated results to limit the response size of potentially large collections of items.

Check out the list of new endpoints:

/api/2/status/page

Parameters

Name

Type

Is mandatory?

Description

query

string

OPTIONAL

A sequence of characters expected to be found in status names. When no value is provided, all statuses will be returned.

startAt

long

OPTIONAL

Indicates which status should be used as the first item in the page of results. The default value is 0.

maxResults

int

OPTIONAL

Indicates how many statuses will return per page. The default value is 100.

issueTypeIds

string

OPTIONAL

A list of issue type IDs to further restrict the search. When provided, only statuses available in given issue types will be returned.

projectIds

long

OPTIONAL

A list of project IDs to further restrict the search. When provided, only statuses available in given projects will be returned.

Sample request

GET http://<sample instance>/rest/api/2/status/page?query=Do

Sample response 

/api/2/component/page

Parameters

Name

Type

Is mandatory?

Description

query

string

OPTIONAL

A sequence of characters expected to be found in component names. When no value is provided, all components will be returned.

startAt

long

OPTIONAL

Indicates which component should be used as the first item in the page of results. The default value is 0.

maxResults

int

OPTIONAL

Indicates how many components will return per page. The default value is 100.

projectIds

long

OPTIONAL

A list of project IDs to further restrict the search. When provided, only components available in given projects will be returned.

/api/2/issuetype/page

Parameters

Name

Type

Is mandatory?

Description

query

string

OPTIONAL

A sequence of characters expected to be found in issue type names. When no value is provided, all issue types will be returned.

startAt

long

OPTIONAL

Indicates which issue type should be used as the first item in the page of results. The default value is 0.

maxResults

int

OPTIONAL

Indicates how many issue types will return per page. The default value is 100.

projectIds

long

OPTIONAL

A list of project IDs to further restrict the search. When provided, only issue types available in given projects will be returned.

/api/2/resolution/page

Parameters

Name

Type

Is mandatory?

Description

query

string

OPTIONAL

A sequence of characters expected to be found in issue resolution names. When no value is provided, all issue types will be returned.

startAt

long

OPTIONAL

Indicates which resolution should be used as the first item in the page of results. The default value is 0.

maxResults

int

OPTIONAL

Indicates how many issue resolution will return per page. The default value is 100.

/api/2/priority/page

Parameters

Name

Type

Is mandatory?

Description

query

string

OPTIONAL

A sequence of characters expected to be found in priorities names. When no value is provided, all issue types will be returned.

startAt

long

OPTIONAL

Indicates which priorities should be used as the first item in the page of results. The default value is 0.

maxResults

int

OPTIONAL

Indicates how many priorities will return per page. The default value is 100.

projectIds

long

OPTIONAL

A list of project IDs to further restrict the search. When provided, only priorities available in given projects will be returned.

/api/2/version

Parameters

Name

Type

Is mandatory?

Description

query

string

OPTIONAL

A sequence of characters expected to be found in version names. When no value is provided, all issue types will be returned.

startAt

long

OPTIONAL

Indicates which version should be used as the first item in the page of results. The default value is 0.

maxResults

int

OPTIONAL

Indicates how many versions will return per page. The default value is 100.

projectIds

long

OPTIONAL

A list of project IDs to further restrict the search. When provided, only versions available in given projects will be returned.

Help Center announcement improvements

Status: IMPLEMENTED ( 01)

App: JIRA SERVICE MANAGEMENT

We’ve fixed the displaying behavior of the announcement banner in the cases where it’s translated or deleted on the help center and customer portal. So, you can be sure that your changes to the banner will be displayed correctly or that no banner will be displayed if you delete it. 

Now, if at least one language—other than the default one—is enabled, you can manage announcement translations on the Project settings page in the Language support section. You’ll see a link to the page where you can manage translations when editing announcements. 

When you delete the announcement banner for the help center or customer portal, the system will check if there are any translations attached to it. If there are any, the translations for deleted fields will be cleared and you’ll see a warning message to confirm the change.

When you update the announcement banner for the help center or customer portal, the system will keep the existing translations. However, if there are any translations attached to it, you’ll see a reminder warning message for reviewing existing translations. 

This will prevent inconsistencies in the banner’s content or, if the banner is deleted, ensure that it isn’t displayed on the help center and customer portal. 

This feature is enabled by default with the feature flag sd.help.center.announcement.improvements

Insight accessibility and enhancements

Status: IMPLEMENTED ( 01)

App: JIRA SERVICE MANAGEMENT

In Jira 5.2, we’ve fixed 15 critical accessibility bugs in Insight that are related to:

  • Custom field rendering in the customer portal
  • Object schema view
    • IQL search component
    • Activity (comments list) component
    • Detail view (object list) component
    • Related Jira issues component on the Overview tab 

We’ve also fixed 11 issues pertaining to:

  • Consistency improvements across buttons, headings, breadcrumbs, and badges for the object schema view
  • Newly created objects are now automatically selected for custom fields in the Jira issue view
  • Custom field rendered in customer portal is modernized with React
  • Fixed page layout on smaller screens in the schema configuration view
  • Graph dialog:
    • On the Graph tab, moved the Lock force graph in place button to a toggle under the Configure section
    • Changed checkboxes to toggles to better reflect states

What do you need to know?

We don’t have feature flags for the majority of fixes. Due to the pervasive nature of the accessibility issues and the small scope of most changes, adding feature flags would result in extra complexity.

So far, there’s only one new feature flag introduced: insight.cf.react.on.cp. It’s used for the component that was rewritten from the legacy stack into React. See this ticket for details: JSDSERVER-11439 - Getting issue details... STATUS

The insight.cf.react.on.cp feature flag was introduced due to the potential risk from the rewrite and is turned on by default.

Insight database query batching

Status: IMPLEMENTED ( 01)

App: JIRA SERVICE MANAGEMENT

Database queries executed during imports to Insight are now batched to improve the health of your Jira instance and overall import performance. Batching means that all data for each query is retrieved at once, instead of many individual select queries. 

  • Batch queries save the history data. 
  • The delete operations are batched up instead of being done one by one for attribute values. 
  • The insert and update operations are batched up not to execute one query for every attribute change.  
  • This feature impacts all imports from all sources by optimizing the database queries that are being executed to batch them together for an object where possible. 

The feature is disabled by default. You can enable it with the following feature flags: insight.attribute.bulk.delete and insight.attribute.creation.optimisation.

Last modified on Feb 6, 2023

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.