The value of this read-only custom field is dynamically calculated from a custom text expression.
It can be used to show a text which aggregates information from one or more field values returned by field codes.
You can also create any custom text value depending on the values of other fields in the current work item or in any other work items (linked work, sub-tasks, epics, stories, JQL selected work items, etc).
Create a smart text field
Choose the template
Just like for any other smart field, follow the steps outlined here: Create and configure smart fields and select the Custom smart text field template in the field creation assistant.
Once selected click on Next.
Provide the expression
Creating an expression from scratch might feel like a challenge, especially if you are not familiar with our expression editor (known from our app Jira Workflow Toolbox). But we have you covered!
Either start by looking at the built-in example expressions or browse through the use cases and examples we have collected for you at the bottom of this page.
Preview the output
Once you have provided the expression you can preview and validate the output by selecting an existing work item.
Even if you don’t have the option to individually customize the display format (yet), you can choose to display emojis instead of just plain text just like in the example above RAG - due date traffic light.
📚 Use cases and examples
|
Use case |
Parsing mode |
Expression |
|---|---|---|
|
Jira expression |
let minDate = issue?.links.map(link => link.linkedIssue.customfield_nnnnn).filter( d => d != null); minDate.length > 0 ? new Date(minDate.reduce((a, b) => a < b ? a : b )).toString() : "" |
|
|
Jira expression |
let minDate = issue?.links.map(link => link.linkedIssue.customfield_nnnnn).filter( d => d != null); minDate.length > 0 ? new CalendarDate(minDate.reduce((a, b) => a < b ? a : b )).toString() : "" |
|
|
General |
%{matches(%{issue.cfnnnnn},"6|7|8|9") ? "Valid":"Invalid"} |
|
|
Jira expression |
issue.changelogs.filter(changelog => changelog.items.some(item => item.fieldId == 'duedate' && item.from != null)).map( changelog => {duedateentry: changelog.items.filter(item => item.fieldId == 'duedate' )}).map(e => new CalendarDate( e.duedateentry[0].from).toString()).join(", ") |
|
|
General |
%{filterByProject(linkedIssues(), %{issue.project.key})} |
|
|
Jira expression |
issue.subtasks.filter(s => s?.originalEstimate == null && s?.customfield_nnnnn == null).map(i => i.key).join(", ") |
|
|
Jira expression |
issue.changelogs.filter(changelog => changelog.items.some(item => item.fieldId == 'status')).map(changelog => changelog.created).concat(issue.created)[0].toString() |
|
|
General |
%{{issue.dueDate} = null or %{issue.resolution} != null? "⚪" : (addDays({system.currentDateTime}, 14, RUN_AS_LOCAL) < {issue.dueDate} ? "🟢" : (addDays({system.currentDateTime}, 7, RUN_AS_LOCAL) < {issue.dueDate} ? "🟡" : ({system.currentDateTime} < {issue.dueDate} ? "🟠" : "🔴")))} |
|
|
General |
%{%{issue.status.category} = "To Do" ? "🔴⚪️⚪️" : ( %{issue.status.category} = "In Progress" ? "⚪️🟡⚪️" : ( %{issue.status.category} = "Done" ? "⚪️⚪️🟢" : "⚪️⚪️⚪️" ))} |
|
|
General |
%{count(findPattern(%{issue.cfnnnnn}, "\b(?:https?://|www\.)\S*(?=.*utm_source=)(?=.*utm_medium=)(?=.*utm_campaign=)\S\b")) = count(findPattern(%{issue.cfnnnnn}, "\b(?:https?://|www\.)\S+\b")) ? "🟢" : "🔴"} |
|
|
General |
let subtasks = issue.subtasks|| []; if (subtasks.length == 0){ 'No sub-tasks' } else{ let doneSubtasks = subtasks.filter(s => s.status.name == "Done"); let value = (doneSubtasks.length / subtasks.length) * 100; let percent = value - value % 1 + (value % 1 >= 0.5 ? 1 : 0); let totalBlocks = 10; let filled = (percent / 100) * totalBlocks; let full = filled - filled % 1 + (filled % 1 >= 0.5 ? 1 : 0); let bar = '🟩'.repeat(full) + '⬜️'.repeat(totalBlocks - full); `${bar} ${percent}%` } |
|
|
General |
%{%{issue.status} = "Open" ? "🟩🟩🟩🟩🟩" : ( %{issue.status} = "Planning" ? "🟩🟩⬜️⬜️⬜️" : ( %{issue.status} = "In Progress" ? "🟩🟩🟩⬜️⬜️" : ( %{issue.status} = "In Review" ? "🟩🟩🟩🟩⬜️" : ( %{issue.status} = "Done" ? "🟩🟩🟩🟩🟩" : "⬜️⬜️⬜️⬜️⬜️" ))))} |