How to change the name of Status and Transitions in Jira

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

Jira allows Admins to change Status names at any time, though this has some caveats this article aims at making clear and presenting solutions to:

  • Filters referencing the Status name need to be manually updated

  • Workflow Transitions may need to be manually updated

  • Workflow Steps may need to be manually updated

Environment

Any version of Jira Software Data Center or Server.

Any version of Jira Service Management Data Center or Server.

Solution

Always back up your data before making any database modifications. If possible, test any alter, insert, update, or delete SQL commands on a staging server first.

It's also imperative that, if you choose to make use of the DB update commands, you run them first in a non-Production instance to validate them and make sure they're not "loopholing" more cases than expected.

Our article on Creating a test environment for Jira may help you build an instance with relevant data to test it out.

1. Updating filters

Filters that reference an old Status name will break as soon as the Status' name's changed. REST API requests will automatically fail with a HTTP 400 (Bad Request) status, too:

(Auto-migrated image: description temporarily unavailable)

To identify all Filters referencing the old Status name, you may run this query on Jira's DB:

1 2 3 select f.id as "Filter Id", f.filtername as "Filter Name", f.authorname as "Filter Author", f.description as "Filter Description", f.reqcontent as "Filter JQL" from searchrequest f where lower(f.reqcontent) like lower('%status%OLDSTATUSNAME%');

There may be some False Positives on the results, specially if the OLDSTATUSNAME is a fairly common word used elsewhere in Filters.

It's preferable to edit each Filter manually through the Jira UI, accessing one by one through their Ids listed by the query:

1 https://JIRA-BASE-URL/issues/?filter=10200

But if unmanageable to do so, you may execute a DB update command with a replace function like this for Postgres as an example:

1 2 3 4 update searchrequest set reqcontent = replace(reqcontent, 'OLDSTATUSNAME', 'NEWSTATUSNAME') where lower(reqcontent) like lower('%status%OLDSTATUSNAME%') and id in (10100, 10101, 10102, ...);

This will replace OLDSTATUSNAME for NEWSTATUSNAME on the same matching Filters from the previous query. You may add an additional clause like id in (...) or id not in (...) to handle the False Positives, if any.

You'll need to restart Jira afterwards. For a multi-node Jira DC, a rolling restart would suffice.

2. Updating Workflow Transitions and Steps

One thing we may also want to go through when changing a Status name is updating the Transition names on Workflows that contain the Status name. These Transition names are visible to end users on the Issue screen.

To list all affected Workflows, you may execute this DB query:

1 2 3 select w.id as "Workflow Id", w.workflowname as "Workflow Name" from jiraworkflows w where lower(w.descriptor) like lower('%" name="OLDSTATUSNAME">%');

This will list all Workflows with either a Transition named "OLDSTATUSNAME" or a Step named "OLDSTATUSNAME".

Steps originally have the same name as the Status they were first configured to. While this info's not visible to end-users, it may be interesting to update them as well to avoid confusion on later admin tasks.

Again is advised a manual Workflow-by-Workflow edition though the UI. If this is not possible, the below DB update may help — again making use of replace functions you may need to adjust to your own DB type:

1 2 3 4 update jiraworkflows set descriptor = replace(descriptor, '" name="OLDSTATUSNAME">', '" name="NEWSTATUSNAME">') where descriptor like '%" name="OLDSTATUSNAME">%' and id in (10100, 10200, 10301, ...);

Here all occurrences of "OLDSTATUSNAME" are replaced by "NEWSTATUSNAME" when they occur and you may add an extra id in (...) to handle possible False Positives.

It's also a good practice to run first for a single affected Workflow, restart Jira and validate if all's working as expected.

3. Updating Agile Boards

Statuses can also be mapped on Agile Boards. Jira links the Statuses to Columns by Id reference, so changing the Status name doesn't require updating any Board condigurations — though we'll need to update the Boards Quick Filters, Sub Queries and Card Color queries if they do reference the Status we're changing the name.

The Boards base filters wold also need updating if they reference the Status but that's covered in the item 1 above (the Board filters are in the searchrequest table).

The DB queries below will list each of these elements that potentially reference the "OLDSTATUSNAME" and will need updating:

Board Quick Filters

1 2 3 4 select b."ID" as "Board Id", b."NAME" as "Board Name", q."NAME" as "Quick Filter Name" from "AO_60DB71_QUICKFILTER" q join "AO_60DB71_RAPIDVIEW" b on b."ID" = q."RAPID_VIEW_ID" where lower(q."LONG_QUERY") like lower('%OLDSTATUSNAME%');

Board Sub Query

1 2 3 4 select b."ID" as "Board Id", b."NAME" as "Board Name", sq."LONG_QUERY" as "Sub Query JQL" from "AO_60DB71_SUBQUERY" sq join "AO_60DB71_RAPIDVIEW" b on b."ID" = sq."RAPID_VIEW_ID" where lower(sq."LONG_QUERY") like lower('%OLDSTATUSNAME%');

Board Card Color

1 2 3 4 select b."ID" as "Board Id", b."NAME" as "Board Name", cc."COLOR" as "Card Color", cc."VAL" as "Card Color JQL" from "AO_60DB71_CARDCOLOR" cc join "AO_60DB71_RAPIDVIEW" b on b."ID" = cc."RAPID_VIEW_ID" where lower(cc."VAL") like lower('%OLDSTATUSNAME%');

Board Swimlane Filter

1 2 3 4 select b."ID" as "Board Id", b."NAME" as "Board Name", s."NAME" as "Swimlane Name", s."LONG_QUERY" as "Swimlane Query" from "AO_60DB71_SWIMLANE" s join "AO_60DB71_RAPIDVIEW" b on b."ID" = s."RAPID_VIEW_ID" where lower(s."LONG_QUERY") like lower('%OLDSTATUSNAME%');

4. Updates needed in 3rd party apps

Just like Agile Boards store JQL queries in their own tables, other 3rd party apps may do the same.

If you notice a 3rd party app or app provided feature not working after the Status change, you should contact the app vendor for guidance on how to proceed with the Status name change if you can't figure it out by yourself through the app's Admin UI.

Note on Issue History

The Issue History (aka changelog) will continue to reflect the old names, though.

This is because the changelog's written by copying whatever was the Status name at that time, regardless of what it is right now when the Issue history's browsed.

This may actually be beneficial and be left the way it is — it's useful for troubleshooting Status name changes as the Status Id remains the same. Notice how the Status Id's the same (10100) but the name changed from "Grooming" to "Refining" in this example:

(Auto-migrated image: description temporarily unavailable)

This also means searches for the old Status name will bring up the Issues even if there's no Status with that old name anymore in Jira:

1 status was in ("old status name")

Updated on April 4, 2025

Still need help?

The Atlassian Community is here for you.