Feature Parity

ScriptRunner for Jira Cloud does not have the same feature set as the Server/Data Center version. We have noted below the parity of each ScriptRunner for Server/Data Center feature, along with any script/function alternatives where there is currently no value parity.

ScriptRunner for Server/Data Center features, which are not supported in ScriptRunner for Jira Cloud, are also listed in the parity tables for full transparency to allow an informed decision when migrating from Server/Data Center to Cloud.  

Jira REST API and UI Modifications API

The varying parities between Cloud and Server/Data Center exist due to the limitations of the Jira REST API and UI Modifications API, which ScriptRunner relies on to allow certain functionality. Unfortunately, it is likely that some features cannot be part of the Cloud feature set due to restrictions in the Cloud platform. There are also some general limitations within ScriptRunner Cloud, such as script execution timeouts and script storage which we recommend reviewing. 

KeyDefinition

(tick)

Full value parity.

Partial value parity.

ALT

No value parity, but custom script alternatives are available.

(error)

No value parity or alternatives are available.

Behaviours

Server/DC Feature

Cloud ParityParity Notes/Alternatives
Behaviours

Atlassian created an API called UI Modifications on the Forge platform, which made it possible for ScriptRunner to build Behaviours. As more capabilities become available in the UI Modifications API, more functionality can be built in ScriptRunner's Behaviours feature. 

Notable differences for Behaviours on Cloud:

  • They may not be applied to all views of a Jira issue. They are not supported on a Transition screen at this time.
  • Jira Service Management is not currently supported.
  • Behaviours may be applied to certain supported fields only. Not all fields are currently supported across the create and issue view. Refer to our documentation to discover which fields are supported on each supported view.
  • Currently, there is no option to map a behaviour to all projects or all issue types; they must be selected individually in the configuration.

Built-In Scripts

Server/DC Feature

Cloud ParityParity Notes/Alternatives

Built-In: Bulk Copy SLA Configuration

(error)


Built-In: Bulk Fix Resolution

Jira Cloud does not allow clearing resolutions (selecting None option).

Built-In: Bulk Import Custom Fields

ALT

The same function can be achieved by writing your own script in the Script Console but with all the caveats of time limitations, API availability, etc.
Check out our page on Scripting in ScriptRunner for Jira Cloud for tips. 

Built-In: Change Dashboard, Filter or Board Ownership

ALT

Similar functionality can be achieved by writing a script in the Script Console to call the Change Filter Owner and the Bulk edit dashboards APIs to update and filter dashboard owners.

We have created a sample script for this here.

Built-In: Clean Workflows

(error)


Built-In: Clear Groovy Class Loader

(error)


Built-In: Configuration Exporter

(error)

A third-party tool such as salto.io can provide this.

Built-In: Copy Custom Field Values

Jira Cloud currently supports: 

  • Single to multi, for example, single select to multi-select, single user picker to multi-user picker.
  • Multi to single, however, only the first value will be retained.
  • Multi to text, the values are concatenated with a comma.
  • Short text to unlimited text.

Built-In: Copy Project

ALT

You can achieve the same functionality in Jira Cloud by using the Script Console and a script.

Built-In: Generate Events

(error)


Built-In: Guardrails - Maximum number of comments per issue.


ALT

You can use the numberOfComments JQL Keyword to search for issues that exceed a maximum number of comments using a JQL query similar to the one below.

numberOfComments > 5

You can then manually review these issues and delete the comments if needed.

To automate this, you could run this query in the Script Console calling the Archive Issues by JQL API with this JQL to archive all issues returned that exceed this threshold.

Built-In: Guardrails - Maximum number of unrchived projects

ALT

Similar functionality can be achieved by writing a script in the Script Console to call the Get Projects Paginated API and filter out results where the insights.lastIssueUpdateTime Property is older than a specified timeframe, such as two years.

You can then call the Archive project API for every project returned by this API.

We have an example script to do this here, which can be run on the script console.

Built-In: Guardrails - Maximum Number of Issue Links Per Issue


ALT

You can use the numberOfLinks JQL Keyword to search for issues that exceed a maximum number of links using a JQL query similar to the one below.

numberOfLinks > 5

You can then manually review these issues and delete the links if needed.

If you wanted to automate this, you could run this query in the Script Console calling the Archive Issues by JQL API with this JQL to archive all issues returned that exceed this threshold.

Built-In: Guardrails - Maximum Attachment Size



(error)


Built-In: Guardrails - Maximum Change History Records Per Issue

(error)


Built-In: List Scheduled Jobs

(error)


Built-In: Re-index Issues

(error)


Built-In: Script Registry

(error)


Built-In: Service Desk Template Comments

(error)


Built-In: Split Custom Field Contexts

ALT

Similar functionality can be achieved by writing a script in the Script Console as shown in this example script.

Built-In: Switch to a Different User

(error)


Built-In: Test Runner

(error)


Built-In: View Server Log Files

(error)


Code Insights

Server/DC Feature

Cloud ParityParity Notes/Alternatives
Code Insights

(error)


Jobs

This feature is known as Scheduled Jobs in Jira Cloud.

Server/DC Feature

Cloud Parity

Parity Notes/Alternatives


Jobs: Custom Scheduled Job

Jira Cloud supports: 

  • A minimum interval of 1 hour. 
  • There is a limit of 240 seconds for script executions. After running for 240 seconds, the logs will be collected, and the code will be terminated.

Jobs: Escalation Service

Jira Cloud supports:

  • The maximum number of issues you can modify in any execution of an Escalation Service job is 50. In other words, we limit the number of issues returned by each JQL query to 50 issues.
  • A minimum interval of 1 hour.

Jobs: Issue Archiving Job

ALT

This can be achieved by writing a custom escalation service that calls the Archive issue API to archive any issues returned by the JQL query specified on the schedule specified.

JQL Functions

Both versions of ScriptRunner use JQL Functions. However, this feature has been implemented as Enhanced Search within ScriptRunner for Jira Cloud.

Server/DC Feature

Cloud Parity

Parity Notes/Alternatives


JQL Functions: addedAfterSprintStart

(tick)

This JQL function will identify issues that were added to an open sprint after the feature was released (21st December 2020). Historical searches for issues added to open sprints prior to that date are not supported.

JQL Functions: aggregateExpression

(error)

Manually calculate using spreadsheets.

JQL Functions: commented

ALT

There is not a like-for-like function in Jira Cloud, but depending on what you want to achieve you could use some ScriptRunner JQL Keywords to achieve the same: firstCommentedDate, lastCommentedDate, commentedOn, commentedBy, lastCommentBy.

JQL Functions: completeInSprint

ALT

There is not a like-for-like match here, but the inSprint JQL function can be used to search for issues in the sprint which have a completed status to get a similar query.

JQL Functions: componentMatch


JQL Functions: dateCompare

(tick)


JQL Functions: earliestUnreleasedVersionByReleaseDate

(error)


JQL Functions: epicsOf

This JQL function is available for Jira company-managed projects but not for team-managed projects. 

JQL Functions: expression

(error)


JQL Functions: fileAttached

ALT

There is not a like-for-like function in Jira Cloud, but depending on what you want to achieve, you could use some ScriptRunner JQL Keywords to achieve the same: numberOfAttachments, attachmentType, firstAttachmentDate, lastAttachmentDate, fileAttachedBy.

JQL Functions: hasAttachments

ALT

There is not a like-for-like function in Cloud, but depending on what you want to achieve, you could use the ScriptRunner JQL Keywords: numberOfAttachments to have the same result.

JQL Functions: hasComments

ALT

The ScriptRunner JQL Keyword: numberOfComments can be used.

JQL Functions: hasLinks

ALT

There is not a like-for-like function in Jira Cloud, but depending on what you want to achieve, you can use native Jira keywords issueLink and issueLinkType. Refer to Atlassian's JQL Fields.

JQL Functions: hasLinkType

ALT

There is not a like-for-like function in Jira Cloud, but depending on what you want to achieve, you can use the native Jira keyword issueLinkType. Refer to Atlassian's JQL Fields.

JQL Functions: hasRemoteLinks

(error)


JQL Functions: hasSubtasks

(tick)

You could use the ScriptRunner JQL Keywords: numberOfSubtasks to have the same result.

JQL Functions: inactiveUsers

(error)


JQL Functions: incompleteInSprint

ALT

There is not a like-for-like match here, but the inSprint JQL function can be used to search for issues in the sprint which have a not completed status to get a similar query. 

JQL Functions: issueFieldExactMatch

(tick)

This feature is called issueFieldMatchExact in Jira Cloud.

JQL Functions: issueFieldMatch

(tick)


JQL Functions: issuesInEpics

(tick)

This JQL function is available for Jira company-managed projects but not for team-managed projects.

JQL Functions: jiraUserPropertyEquals

(error)


JQL Functions: lastComment

ALT

There is not a like-for-like function in Jira Cloud, but depending on what you want to achieve you could use the lastCommentBy or lastCommentedDate ScriptRunner JQL Keywords to achieve the same.

JQL Functions: lastUpdated

ALT

There is not a like-for-like function in Jira Cloud, but depending on what you want to achieve you could use the updated native Jira keyword to search for issues last udpated within a certain timeframe.

JQL Functions: linkedIssuesOf

(tick)

This function can be used in Jira Server/Data Center to search for issues linked with the parent-child hierarchy provided by Advanced Roadmaps/Portfolio but not in the Jira Cloud Enhanced Search.

JQL Functions: linkedIssuesOfAll

(error)


JQL Functions: linkedIssuesOfAllRecursive

(error)


JQL Functions: linkedIssuesOfAllRecursiveLimited

(error)


JQL Functions: linkedIssuesOfRecursive

(tick)


JQL Functions: linkedIssuesOfRecursiveLimited

(tick)


JQL Functions: linkedIssuesOfRemote

(error)


JQL Functions: memberofRole

(error)


JQL Functions: myProjects

(error)


JQL Functions: nextSprint

(tick)


JQL Functions: overdue

(error)


JQL Functions: parentsOf

(tick)


JQL Functions: portfolioChildrenof()

JQL function childrenOf can be used to find all descendant issues of a given subquery, including children, grandchildren, and beyond.

JQL Functions: portfolioParentOf()

JQL function parentsOf can be used to find all ancestor issues of a given subquery, including parents, grandparents, and beyond.

JQL Functions: previousSprint

(tick)


JQL Functions: projectMatch

(tick)

In Jira Cloud this function uses the projectKey, whereas in server/data centre it uses project name.

JQL Functions: projectsOfType

ALT

There is no like-for-like match here, but you can use the native Jira keyword of projectType to return all issues from projects of a certain type such as Software.

JQL Functions: recentProjects

ALT

There is no like-for-like match here, but you can use the native Jira keyword of lastViewed to return issues you last viewd in the past x days to see what projects you interacted with in that timeframe. 

JQL Functions: releaseDate

(error)


JQL Functions: removedAfterSprintStart

(error)


JQL Functions: startDate

(error)


JQL Functions: subtasksOf

(tick)


JQL Functions: versionMatch

(tick)


JQL Functions: workLogged

(error)


Listeners

This feature is known as Script Listeners in Jira Cloud.

Server/DC Feature

Cloud Parity

Parity Notes/Alternatives


Listeners: Adds the current user as a watcher

ALT

The same function can be achieved using a Custom Listener and a script.

Listeners: Clone an issue and links

ALT

The same function can be achieved by writing your own script in the Custom Listener but with all the caveats of time limitations, API availability, etcCheck out our page on Scripting in ScriptRunner for Jira Cloud for tips. 

We have an example script to show how to clone an issue and link it here.

Listeners: Create a sub-task

ALT

The same function can be achieved using a Custom Listener and this script for creating a subtask(s). 

Listeners: Custom Listener

There is a limit of 240 seconds for script executions. After running for 240 seconds, the logs will be collected, and the code will be terminated.

Currently, a custom event may not be created and used to trigger listener actions.

Events supported in Cloud: 

The list below shows the list of events that Jira Cloud supports to trigger listener actions from:

  • Attachment Created
  • Attachment Deleted
  • Board Configuration Changed
  • Board Created
  • Board Deleted
  • Board Updated
  • Comment Created
  • Commented Deleted
  • Comment Updated
  • Filter Created
  • Filter Updated
  • Filter Deleted
  • Issue Created
  • Issue Updated
  • Issue Deleted
  • IssueLink Created
  • IssueLink Deleted
  • IssueType Created
  • IssueType Updated
  • IssueType Deleted
  • Option Attachments Changed
  • Option Issulinks Changed
  • Option TimeTracking Changed
  • Option SubTasks Changed
  • Option UnAssignedIssues Changed
  • Option Voting Changed
  • Option Watching Changed
  • Project Created
  • Project Deleted
  • Project Soft Deleted (Archived)
  • Project Updated
  • Sprint Closed
  • Sprint Started
  • Sprint Deleted
  • Sprint Created
  • Sprint Updated
  • User Created
  • User Updated
  • User Deleted
  • Version Created
  • Version Updated
  • Version Deleted
  • Version Released
  • Version Moved
  • Version Unreleased
  • Worklog Created
  • Worklog Updated
  • Worklog Deleted

Listeners: Execution failure notifier

ALT

In Jira cloud, the Notifications group setting allows you to specify a group of users who will get an email each time a script fails, but this can't be configured to send to other messaging services such as Slack because the notify API doesn’t allow you to email external emails.

Listeners: Fast-track transition an issue

ALT

The same function can be achieved using a Custom Listener and a script to transition an issue.

Listeners: Fires an event when a condition is true

ALT

In Jira Server/Data Center, this listener is used to send an email when a condition occurs. In Jira Cloud, you can add the condition to be matched to the script conditions box, which uses the Jira Expression Framework

When the condition is true, you can call the Send notification for issue API to send a notification to specific users, similar to what is shown in the example script here.

Listeners: Post a message to slack

ALT

The same function can be achieved using a Custom Listener and a script to Post to Slack.

Listeners: Send a custom email (non-issue events)

ALT

The same function can be achieved using a Custom Listener and a script to send a notification.

The notify API doesn’t allow you to email external emails and only allows you to notify users, groups, or user fields (such as assignee or reporter) on an issue.

Listeners: Send a custom email

ALT

The same function can be achieved using a Custom Listener and a script to send a notification.

The notify API doesn’t allow you to email external emails and only allows you to notify Jira users, groups, or user fields (such as assignee or reporter) on an issue. The API does not allow users to send notifications to themselves.

Listeners: Version Synchronizer

ALT

The same function can be achieved by writing your own script in the Custom Listener but with all the caveats of time limitations, API availability, etc. Check out our page on Scripting in ScriptRunner for Jira Cloud for tips. 

Mail Handler

Server/DC Feature

Cloud ParityParity Notes/Alternatives

Mail Handler

(error)


Resources

Server/DC Feature

Cloud ParityParity Notes/Alternatives

Resources: Database Connection

ALT

You can connect to databases in scripts and link to the examples we have in the Script Console examples.

Resources: LDAP Connection

ALT

If the LDAP service exposes a REST API, you could connect to this in Scripts by making a REST API call.

Resources: Local Database Connection

(error)


Resources: Slack Connection

ALT

You can connect to Slack in scripts via the REST API and link to the examples we have in the Script Console examples.

REST End-Points

Server/DC Feature

Cloud ParityParity Notes/Alternatives

REST End-Points: Custom End-Point

(error)

Jira cloud only works via the Atlassian REST API, and this means you can call the external system's REST endpoints directly in Scripts to receive data from external systems.

Script Console

Server/DC Feature

Cloud ParityParity Notes/Alternatives

Script Console

(tick)

There is a limit of 240 seconds for Cloud script executions. After running for 240 seconds, the logs will be collected, and the code will be terminated.

Script Editor

Server/DC Feature

Cloud ParityParity Notes/Alternatives

Script Editor

(error)


HAPI

(error)


Script Fragments

Server/DC Feature

Cloud ParityParity Notes/Alternatives

Script Fragments

ScriptRunner for Jira Cloud supports Web Panels only. Script source must be specified (and accessible to Jira), inline script is not available. 

Script Fields

Server/DC Feature

Cloud ParityParity Notes/Alternatives

Script Fields: Custom Script Fields

Due to current limitations, the value of Scripted Fields will currently only refresh on issue view.

Script Fields: Custom Picker

(error)


Script Fields: Database Picker

(error)

You can connect to databases in scripts and link to the examples we have in the Script Console examples.

Script Fields: Date of the first transition

ALT

The same function can be achieved using a Custom Scripted Field and a script using a Text Field type.

Script Fields: Issue(s) Picker

(error)


Script Fields: LDAP Picker Field


(error)
If the LDAP service exposes a REST API, you could connect to this in Scripts by making a REST API call.

Script Fields: No. of times in a status

ALT

The same function can be achieved by writing your own script in the Custom Scripted Field but with all the caveats of time limitations, API availability, etc. Check out our page on Scripting in ScriptRunner for Jira Cloud for tips. 

Script Fields: Remote issue(s) picker

ALT

You can link to issues in a remote Jira instance using the Create remote issue link API inside a script. We have an example of using this API here.

Script Fields: Show parent issue in a hierarchy

ALT

The same function can be achieved by writing your own script in the Custom Scripted Field but with all the caveats of time limitations, API availability, etc. Check out our page on Scripting in ScriptRunner for Jira Cloud for tips.

Script Fields: Time of Last status Change

ALT

The same function can be achieved using a Custom Scripted Field and a script using a Text Field Type.

Settings

Server/DC Feature

Cloud ParityParity Notes/Alternatives

Script Edit Permissions

(error)


Hapi Code Helper

(error)


In-App Communications

There is no opt-in for this, but we use in-app banners and popups to communicate information relating to Scriptrunner for Jira Cloud.

Switch User Function

(error)


Anonymous Analytics

(error)


User Editor Settings

(error)


Workflow Conditions

ScriptRunner for Jira Cloud provides workflow conditions using the Jira Expression Framework. It is not possible to use the REST API.

Server/DC Feature

Cloud Parity

Parity Notes/Alternatives


Workflow > Condition: All sub-tasks must be resolved

ALT

The same function can be achieved using a custom script condition and a script to check all sub-tasks are resolved.

Workflow > Condition: Allows the transition if this query matches a JQL query

(error)


Workflow > Condition: Checks the issue has been in a status previously

ALT

The same function can be achieved using a custom script condition and a script that Checks the Issue Has Been in a Status Previously.

Workflow > Condition: Custom script condition

ALT

Cloud conditions use Jira Expression language where the result must be true or false.

Workflow > Condition: Field(s) required condition

ALT

The same function can be achieved using a custom script condition and a Field(s) Required script.

Workflow > Condition: Group(s) condition

ALT

The same function can be achieved using a custom script condition and a script to check the user is within a specified user group.

Workflow > Condition: JQL query matches condition

(error)


Workflow > Condition: Linked issues condition

ALT

The same function can be achieved using a custom script condition and a Linked Issues script.

Workflow > Condition: Project role(s) condition

ALT

The same function can be achieved using a custom script condition and a script to check the user is within a specified project role.

Workflow > Condition: Regular expression condition

ALT

The same function can be achieved using a custom script condition and the Regular Expressions script.

Workflow > Condition: Simple scripted condition

Cloud conditions use Jira Expression language where the result must be true or false, it does not use Groovy.

Workflow > Condition: User in field(s) condition

ALT

The same function can be achieved using a custom script condition and the User in Field(s) script.

Workflow > Condition: User(s) and User Group(s) condition

ALT

The same function can be achieved using a custom script condition and the User(s) and User Group(s) script.

Workflow Post Functions

Server/DC Feature

Cloud ParityParity Notes/Alternatives

Workflow > Post Function: Add a comment to this issue

ALT

The same function can be achieved using a custom post function and a script.

Workflow > Post Function: Add/remove from sprint

(tick)


Workflow > Post Function: Adds a comment to linked issues when this issue is transitioned

ALT

The same function can be achieved using a custom post function and a script.

Workflow > Post Function: Adds the current user as a watcher

ALT

The same function can be achieved using a custom post function and a script.


Workflow > Post Function: Archive this issue

ALT

This can be achieved by writing a script to call the Archive issue API to achieve this.  Note: to use this API, you need to be on the Premium or Enterprise tiers of Jira Cloud.

Workflow > Post Function: Assign to first member of role

ALT

The same function can be achieved using a custom post function.

Workflow > Post Function: Assign to last role member

ALT

The same function can be achieved using a custom post function.

Workflow > Post Function: Clear field(s) post function

ALT

The same function can be achieved using a custom post function and a script.

Workflow > Post Function: Clones an issue, and links

(tick)


Workflow > Post Function: Copy field values

ALT

The same function can be achieved by writing your own script in the custom post function but with all the caveats of time limitations, API availability, etc. Check out our page on Scripting in ScriptRunner for Jira Cloud for tips.

We have an example script to show how to clone an issue and link it here. 

Workflow > Post Function: Create a sub-task

(tick)


Workflow > Post Function: Custom script post-function

(tick)


Workflow > Post Function: Fast-track transition an issue

(tick)


Workflow > Post Function: Fires an event when condition is true

ALT

This post function is used to send an email when a condition occurs in Jira Server/Data Center.

In Jira Cloud you can add the condition to be matched to the script conditions box on a custom post function.

When the condition is true, you can call the Send notification for issue API to send a notification to specific users, similar to what is shown in the example script here.

Workflow > Post Function: Post a message to Slack

ALT

The same function can be achieved using a custom script post-function with a script to post to Slack

Workflow > Post Function: Send a custom email

(tick)

The equivalent in Cloud is “Send Notification”.

Workflow > Post Function: Set issue security level depending on the provided condition

ALT

This can be achieved by writing a script that, if the condition matches, calls the Edit Issue API and updates the issue to set the security field on an issue. We have an example of setting issue security here.

Workflow > Post Function: Transition parent when all subtasks are resolved

The same function can be achieved using the fast-track transition issue built-in post function and adding a condition script to verify all subtasks are resolved. 

Workflow Validators

ScriptRunner for Jira Cloud provides workflow validators using the Jira Expression Framework. It is not possible to use the REST API.

Server/DC Feature

Cloud Parity

Parity Notes/Alternatives


Workflow > Validator: Custom script validator

ALT

Cloud conditions use Jira Expression language where the result must be true or false.

Workflow > Validator: Field(s) changed validator

ALT

The same function can be achieved using a custom script validator and the Field(s) Changed script.

Workflow > Validator: Field(s) required validator

ALT

The same function can be achieved using a custom script validator and the Field(s) Required script.

Workflow > Validator: Regular expression validator

ALT

The same function can be achieved using a custom script validator and a script.

Workflow > Validator: Require a comment on transition

ALT

This script can be used to enforce that a comment has been given on transition.

Workflow > Validator: Simple scripted validator

Cloud conditions use the Jira Expression language where the result must be true or false, it does not use Groovy.

Workflow > Validator: User in field(s) validator

ALT

The same function can be achieved using a custom script validator and a script.

On this page