How to use the Jira Expression API to calculate dependant field values
TLDR: How to Store External Asset Platform Field Values in a Text Field for Better Integration with Dashboards
Using an External Asset Platform field type in Jira can have its limitations, especially when integrating with dashboard widgets. To address this issue, you can create a custom solution that writes the value of the selected asset into a separate text field. This will make it easier to work with in Jira.
Prerequisites:
An external asset platform field (e.g., customfield_10083)
An target text field
Data Source
Create a new data source of type Local Jira
. Modify the URL to call the Expression API as follows:
.../rest/api/3/expression/eval
Add the JIRA expression with a variable in the body:
{
"expression": "issues.map(i => {
length = i.customfield_10083?.length || 0;
if (length > 1) {
return { fallback: 'MULTIPLE' };
} else if (length == 1) {
return { asset: i.customfield_10083[0]};
}else {
return { fallback: 'EMPTY' };
}
})",
"context": {
"issues": {
"jql": {
"query": "id={ID}",
"maxResults": 1
}
}
}
}
The id={ID}
variable will be used later to select the current issue, ensuring the expression runs only for a single issue.
The expression will analyse the length of the external asset platform field and either return MULTIPLE
, EMPTY
or the asset itself.
Dependant Field
Create a new Dependant Field and select the data source we have just created and enter $.issue.id
into the ID variable of the data source. This should already show you a result for the current issue in the selected context.
The asset object doesn't return the label of the asset, so use a helper function to retrieve it and use the fallback value for multiple or empty assets.
{ GET_EXTERNAL_ASSET_LABEL(( $.value[0].asset )) || $.value[0].fallback}
With these steps, you have successfully created a custom solution to store External Asset Platform field values in a text field, allowing for better integration with JIRA dashboards.