Developer
News and Updates
Get Support
Sign in
Get Support
Sign in
DOCUMENTATION
Cloud
Data Center
Resources
Sign in
Sign in
DOCUMENTATION
Cloud
Data Center
Resources
Sign in
Forge modules
Automation modules
Bitbucket modules
Compass modules
Confluence modules
Dashboard modules (EAP)
Global module (EAP)
Jira modules
Jira Service Management modules
Customer Service Management modules
Jira Software modules
Rovo modules
Teamwork Graph modules
Last updated Aug 13, 2026

Jira Service Management UI modifications

This section describes a Forge preview feature. Preview features are deemed stable; however, they remain under active development and may be subject to shorter deprecation windows. Preview features are suitable for early adopters in production environments.

We release preview features so partners and developers can study, test, and integrate them prior to General Availability (GA). For more information, see Forge release phases: EAP, Preview, and GA.

The jira:uiModifications module is shared between Jira and Jira Service Management. It allows you to change the look and behavior of:

The agent view shares the same views as Jira, but runs in service projects. Because of this, its extension context also exposes the request type of the work item, and the set of supported fields differs from the request create portal. For each agent view, the viewType in the extension context tells you which view your app is running in: GICAgentView, IssueViewAgentView, or IssueTransitionAgentView.

This page documents how jira:uiModifications works for Jira Service Management-specific views. The module itself is the same but for Jira, see Jira UI modifications.

The module is designed to be used in conjunction with the UI modifications (apps) REST API.

Get started

Manifest structure

1
2
3
4
5
6
7
8
9
10
11
modules {}
└─ jira:uiModifications []
   ├─ key (string) [Mandatory]
   ├─ title (string | i18n) [Mandatory]
   ├─ resource (string) [Mandatory]
   └─ unlicensedAccess (List<string>)

resources []
├─ key (string) [Mandatory]
└─ path (string) [Mandatory]

Properties

PropertyTypeRequiredDescription
key

string

Yes

A key for the module, which other modules can refer to. Must be unique within the manifest.

Regex: ^[a-zA-Z0-9_-]+$

resourcestringRequired if using Custom UI or the latest version of UI Kit.A reference to the static resources entry that your context menu app wants to display. See resources for more details.
titlestring or i18n objectYes

A title for the module.

The i18n object allows for translation. See i18n object.

resolver{ function: string } or
{ endpoint: string }
Yes

Set the function property if you are using a hosted function module for your resolver.

Set the endpoint property if you are using Forge Remote to integrate with a remote back end.

unlicensedAccessList<string>A list of unlicensed user types that can access this module. Valid values are: unlicensed, customer, and anonymous. For more information, see

Access to Forge apps for unlicensed users.

i18n object

KeyTypeRequiredDescription
i18nstringYesA key referencing a translated string in the translation files. For more details, see Translations.

Extension context

UIM Forge modules can retrieve the current context using the getContext bridge method in Custom UI and UI Kit.

The shape of the context depends on the view your app is running in:

  • On the request create portal, the context exposes the current portalId and request type.
  • On the agent view, the context exposes the current project, issueType, and requestTypeId, plus issue and issueTransition where relevant to the view. Use the viewType property to detect which agent view your app is running in.
1
2
3
4
5
6
7
8
9
10
11
12
13
{
  extension: {
    type: 'jira:uiModifications',
    portalId: {
      id: string,
    },
    request: {
      typeId: string
    },
    viewType: 'JSMRequestCreate'
  }
}

Example

The same app can run on both the request create portal and the agent view. Read the viewType from the extension context to work out which view your app is running in, then read only the properties available in that view.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { view } from '@forge/bridge';
import { uiModificationsApi } from '@forge/jira-bridge';

uiModificationsApi.onInit(async ({ api, uiModifications }) => {
  const { getFieldById } = api;
  const context = await view.getContext();

  const { portalId, request } = context.extension;

  uiModifications.forEach(({ data: customDataConfiguredUsingRestApi }) => {
    // ...
  });
}, ({ uiModifications }) => [
  // ...
])

Scopes

UI modifications expose customer data to the app that provides them. Therefore, you must declare either classic (recommended) or granular scopes in your manifest. Note that you always have to declare all scopes from your chosen group.

The same scopes cover both the request create portal and the agent view. The agent view supports more fields, so it needs a few extra scopes on top of the portal ones. These are marked as agent view only in the examples below. If your app runs in both views, declare all of the scopes listed.

Warning

Before general availability, we may add a few more scopes specific to Jira Service Management.

1
2
3
4
5
6
7
8
9
permissions:
  scopes:
    - 'read:jira-user'
    - 'read:jira-work'
    - 'manage:jira-configuration'
    - 'write:jira-work'
    # Agent view only (Preview)
    - 'manage:jira-project'
ScopeData exposedFieldMethod
read:jira-userUser timezone and account IDn/aview.getContext
User display name, account ID, and avatarUser PickergetValue
read:jira-workPortal ID; request type ID of the request being created using portaln/aview.getContext
Data of the request being created using portalAll supported fieldsgetValue
Field nameAll supported fieldsgetName
Field visibilityAll supported fieldsisVisible
manage:jira-configurationField descriptionAll supported fieldsgetDescription
User localen/aview.getContext
Atlassian app license statusn/aview.getContext
The following values can be modified:
  • name
  • description
  • visibility
All supported fields
  • setName
  • setDescription
  • setVisible
write:jira-workDefault field value can be modifiedAll supported fieldssetValue

Additional data exposed in the agent view

This section describes a Forge preview feature. Preview features are deemed stable; however, they remain under active development and may be subject to shorter deprecation windows. Preview features are suitable for early adopters in production environments.

We release preview features so partners and developers can study, test, and integrate them prior to General Availability (GA). For more information, see Forge release phases: EAP, Preview, and GA.

The agent view runs the same views as Jira (global issue create, issue view, and issue transition), so the scopes above expose the same data as they do in Jira. For the full per-field breakdown, see Jira UI modifications: Scopes. The following data is specific to Jira Service Management.

ScopeData exposedFieldMethod
read:jira-workProject ID, key and type; issue type ID and name; work item ID and key; issue transition IDn/aview.getContext
Request type ARI of the work item (requestTypeId)n/aview.getContext

Required user permissions

In case a required permission isn't assigned, the user will see the following error:

1
2
We couldn't load the UI modifications configuration for this form

Permissions are evaluated per view. The request create portal is used by customers, while the agent view runs inside a service project and is used by agents, so each has different requirements.

ViewProduct accessRequired project permission
JSM request create portalTo make UI modifications load the user needs to have an access to Jira and JSM products.n/a – the user needs to be able to raise a request for the request type they've selected.
JSM agent view – global issue create (Preview) The user needs a licensed Jira Service Management agent seat and access to the service project. “Create issues” permission
JSM agent view – issue view (Preview)“Browse projects” permission
JSM agent view – issue transition (Preview)“Transition issues” permission

View-specific requirements and limitations

CategoryDetails
Supported entry points
  • Portal Request create form
Known limitations
  • Flash of unmodified fields – UI modifications are loaded after the Portal Request create view has finished loading. For example, a field will be visible for a moment before being hidden.
  • Anonymous account types are not supported yet. Read more.
  • Embeded request create forms are not supported yet.

Other known limitations

Multiple UIM apps

If you install and configure multiple UIM apps to run for a given combination of project, issue type, and view type, up to 5 apps can apply changes simultaneously. If more than 5 apps are configured, changes from the remaining apps will be disregarded. Apps apply changes asynchronously, so the order of application is random.

There may be conflicts when multiple apps attempt to modify the same field using the same FieldAPI method. In such cases, app developers will receive conflict errors via the onError handler, and users will see corresponding notifications:

If the conflict happens, the changes applied by the app which finished running last will override changes from other apps.

Image previews unavailable until issue is created

The Atlassian Document Format (ADF) supports rich content when using the UIM to add media content (like images) to Jira description, text area, or rich text custom fields.

However, when adding an image through the UIM during issue creation (for example, throught the GIC modal) the image preview might display a Preview unavailable message. This is because the necessary permissions to display the image aren't available yet; they'll be available after the issue is created and/or the page is refreshed.

Rate this page: