Migration Checklist

✅ Familiarize yourself with Atlassian's migration documentation

Before proceeding, we recommend familiarizing yourself with Atlassian's Cloud Migration Guide and preparing your Jira instance according to Atlassian's recommendations. This checklist is designed to guide you through migrating ScriptRunner for Jira from Data Center (DC) to Cloud. While it focuses specifically on ScriptRunner for Jira, some tasks may overlap with Atlassian's general migration recommendations.

🚀 Need help with your migration?

Check out what our Development Services team have to offer, or contact us.

✅ Learn about the differences between DC and Cloud

Use these resources to learn about feature parity and platform differences between the two products: 

REST APIs

Scripts in Jira Cloud do not execute within the same process as Jira DC and so must interact with Jira using the REST APIs rather than the JAVA APIs.

✅ Prepare

Back up your instance

Start by backing up your current DC environment, including all scripts and configurations. 

Before migrating, ensure you're using ScriptRunner for Jira DC version 8.18.0 or above.

Create a migration plan

Follow these steps to create a tailored migration plan for a smooth cloud transition:

  1. Review your current instance: Thoroughly review your current DC instance. Decide whether you need to migrate everything or declutter your instance. See our Audit Your Jira Instance Using ScriptRunner page for a checklist that guides you through auditing parts of your instance. 

    You can use the Script Registry to export all scripts and configurations on your instance.

  2. Evaluate script requirements: Determine which scripts can be directly rewritten for the cloud environment and which ones will require alternative solutions. This step is crucial for understanding the scope of work needed for the migration. See our Rewriting Scripts for Cloud page for details on how to review your instance and prepare your scripts.

    Make sure you have a migration path for each script and that you have an alternative solution for the scripts that can't be migrated. 

    Be aware that some of the steps on the Rewriting Scripts for Cloud page may overlap with the guidance provided here.

  3. Develop a detailed migration plan: With the insights gained from reviewing and evaluating your scripts, develop a comprehensive migration plan. This plan should include:
    • Timelines: Set realistic timelines for each phase of the migration, considering the complexity of script preparation and rewriting.

      ScriptRunner Enhanced Search Initial Synchronisation Estimate

      ScriptRunner JQL functions have been implemented as Enhanced Search within ScriptRunner for Jira Cloud. After installation, an initial JQL Keyword sync is required, which may take several days depending on your instance size (for example, 5.8 days for 1 million issues). Factor this sync time into your migration plan and consult our Enhanced Search documentation for more details.

    • Resources: Identify and allocate the necessary resources, including personnel, tools, and budget, to support the migration process.
    • Responsibilities: Clearly define roles and responsibilities for all stakeholders involved in the migration to ensure accountability and smooth execution.

✅ Install ScriptRunner for Jira Cloud

Skip this step if you have already done it!

Install ScriptRunner for Jira Cloud as described on our Installation page.  

✅ Rewrite your scripts

Migration from Scriptrunner for Jira DC to ScriptRunner for Jira Cloud will require your scripts to be rewritten. This is because the APIs and programming models differ significantly between Jira Data Center and Jira Cloud.

See our detailed guide on Rewriting Scripts for Cloud.

✅ Rewrite your saved ScriptRunner JQL query filters 

Both versions of ScriptRunner use JQL Functions. However, this feature has been implemented as Enhanced Search within ScriptRunner for Jira Cloud. You might need to rewrite your saved JQL query filters that use ScriptRunner JQL functions.

JCMA and ScriptRunner JQL functions

Jira Cloud Migration Assistant (JCMA) is an Atlassian app created to help with migrations from Data Center to Cloud. If you use JCMA to migrate, filters containing ScriptRunner JQL functions will be automatically migrated if equivalent Enhanced Search functions exist. Filters with non-equivalent ScriptRunner JQL functions will be deleted during migration.

To rewrite your ScriptRunner JQL query filters:

  1. Identify all saved JQL query filters that use ScriptRunner JQL functions.

    Most ScriptRunner for Jira JQL functions require the issueFunction prefix, making them easier to identify. See our Included JQL Functions documentation for a complete list of ScriptRunner JQL functions.

  2. Identify any ScriptRunner queries that do not have equivalent Enhanced Search functions. These are the filters you will have to rewrite. 

    See the following documentation to help you rewrite your saved JQL query filters:

  3. Prepare versions of your filters to work with the Enhanced Search feature in ScriptRunner for Jira Cloud.

✅ Migrate your data

You can migrate your data either manually or using the Jira Cloud Migration Assistant (JCMA). We recommend using JCMA when migrating an instance with ScriptRunner from DC to Cloud.

Manually migrate ScriptRunner

You can now recreate all your custom scripts and scriptrunner configurations in ScriptRunner for Jira Cloud. To manually migrate to Cloud:

  • Utilize your previously prepared scripts to recreate your custom configurations in ScriptRunner for Jira Cloud. 

  • Implement your revised JQL functions using Enhanced Search in ScriptRunner for Jira Cloud.

  • Address each ScriptRunner feature individually, such as behaviours, listeners, and scheduled jobs.

  • Identify and resolve any dependencies that may not be directly available in the Cloud version.

  • Consult the Platform Differences between ScriptRunner for Jira Server/DC and Jira Cloud and Feature Parity and Script Alternatives documentation during this process to address any Cloud-specific considerations.

Migrate ScriptRunner with Jira Cloud Migration Assistant

When using JCMA for migration, the process is partially automated. However, you will still need to perform many migration tasks manually (such as recreating built-in feature configurations, behaviours, fragments, and more). This section outlines what JCMA can migrate automatically and what requires manual intervention.

Features supported by JCMA

JCMA automatically migrates the configurations for the following ScriptRunner features:

These features are copied and then deactivated, with any code commented out.

  • Custom script fields
  • Custom script listeners
  • Custom script scheduled jobs
  • Custom script escalation services
  • Custom workflow functions

JQL functions supported by JCMA

If you are using Enhanced Search JQL functions and Keywords, you must complete an initial synchronisation after migrating so that all functions and keywords work.

JCMA automatically migrates filters containing ScriptRunner JQL functions if equivalent Enhanced Search functions exist. Filters with non-equivalent ScriptRunner JQL functions will be deleted during migration.

The following JQL functions have equivalents in Enhanced Search and are supported by JCMA:

  • addedAfterSprintStart
  • componentMatch
  • dateCompare
  • epicsOf
  • issueFieldExactMatch
  • issueFieldMatch
  • issuesInEpics
  • linkedIssuesOf
  • linkedIssuesOfRecursive
  • linkedIssuesOfRecursiveLimited
  • nextSprint
  • parentsOf
  • previousSprint
  • projectMatch
  • subtasksOf
  • versionMatch

The Enhanced Search version of the dateCompare function requires a valid JQL query in the first parameter. It will be automatically migrated when all parameters are provided. If there's a mismatch between Cloud/DC issue field names (for example in custom fields), the migration won't automatically create an Enhanced Search filter, and it will need to be created manually.

JCMA post migration steps

  1. Check the migration report in ScriptRunner for Jira Cloud to find the details of any problems during filter migration.

    All script configurations for other ScriptRunner features (such as built-in feature configurations, behaviours, fragments, etc.) will need to be recreated manually. 

  2. Review all deactivated custom scripts, update them for Cloud compatibility, and reactivate them.
  3. Manually update ScriptRunner for Jira Cloud as described in the Manually migrate ScriptRunner section. 

Once custom script fields, listeners, or scheduled jobs are migrated, subsequent migrations will not overwrite them. To re-migrate these items, delete them from the Cloud instance before performing another migration.

JCMA Notes

You should note the following points when using JCMA:

  • If re-migrating a project, delete the project and associated workflows/workflow scheme for workflow rules to be migrated correctly.
  • Built-in script conditions or validators migrated from Jira DC are not supported and will display in ScriptRunner for Jira Cloud as blank validators or conditions. Therefore, once the migration is performed, these will need to be deleted.

✅ Test thoroughly

Make sure all testing is completed in a staging environment. 

Perform extensive testing of all migrated components:

  • Projects and issues
  • Workflows
  • Scripts
  • JQL functions
  • ScriptRunner-specific functionalities

Ensure all ScriptRunner functionalities work as expected in the Cloud environment.

✅ Train your team

Train your admins on the differences between Jira Data Center and Jira Cloud:

Train the rest of your team on Enhanced Search so they're familiar with the new functionality. 

✅ Go live

After thorough testing and team training, you're ready to go live with your migrated ScriptRunner for Jira Cloud instance. Consider the following when you go live:

  • Make sure all users are aware of this move to Cloud.
  • Once live, monitor the performance of your instance and your scripts. Keep an eye out for any unexpected behaviors.
  • Encourage any team members or admins to provide feedback and report any issues. 

On this page