Portal Community

When to Use

Configuration

Connection

FieldRequiredDescription
HostRequiredJira instance base URL. Example: https://acmecorp.atlassian.net
EmailRequiredAtlassian account email. Example: automation@acmecorp.com
ApiTokenRequiredAPI token from Atlassian security settings. Store in Credentials Manager.

Operation Fields

FieldRequiredDescription
IssueKeyRequiredThe key of the issue to transition. Example: PROJ-123.
TransitionIdRequiredThe numeric transition ID obtained from issue/getTransitions. Example: "41". Do not hardcode this value — resolve dynamically per execution.
FieldsOptionalJSON object of fields required by the transition screen. Only needed if the transition has a screen with mandatory fields (e.g. a "Resolution" field required on closing). Format follows Jira field format.

Sample Configuration

Close a resolved issue with a resolution field (typical for Done/Close transitions):

{
  "resource": "issue",
  "operation": "executeTransition",
  "Host": "https://acmecorp.atlassian.net",
  "Email": "automation@acmecorp.com",
  "ApiToken": "{{ $credentials.jiraApiToken }}",
  "IssueKey": "{{ $json.issueKey }}",
  "TransitionId": "{{ $output.getTransitions.transitions.find(t => t.name === 'Done').id }}",
  "Fields": {
    "resolution": { "name": "Fixed" }
  }
}

Validation Errors

Error CodeCause
VAL_MISSING_ISSUE_KEYIssueKey is empty or null.
VAL_MISSING_TRANSITION_IDTransitionId is empty or null.
TRANSITION_NOT_VALIDThe transition ID does not exist or is not valid from the issue's current status. Call getTransitions to confirm availability.
MISSING_REQUIRED_FIELDSThe transition screen requires fields that were not supplied in Fields.
ISSUE_NOT_FOUNDNo issue exists with the given key, or insufficient access.
AUTH_FAILEDInvalid credentials or expired API token.

Output Fields

FieldTypeDescription
statusstring"success" or "error"
issueKeystringKey of the transitioned issue. Example: "PROJ-123"
newStatusstringName of the status the issue has moved to. Example: "Done", "In Review".
resourcestringAlways "issue"
operationstringAlways "executeTransition"

Sample Output

{
  "status": "success",
  "issueKey": "OPS-347",
  "newStatus": "Done",
  "resource": "issue",
  "operation": "executeTransition"
}

Expression Reference

ExpressionTypeExample ValueUse
{{ $output.executeTransition.newStatus }}string"Done"Confirm the target status was reached
{{ $output.executeTransition.issueKey }}string"OPS-347"Include in post-transition Slack notification
{{ $output.executeTransition.status }}string"success"Guard downstream steps on transition confirmation

Node Policies & GuardRails

Workflow Examples

Example 1 — PR Merge Auto-Transition to "In Review"

// Step 1: GitHub webhook — PR opened
// Step 2: Extract Jira key from branch (e.g. feature/PROJ-123-payment-fix)
// Step 3: issue/getTransitions
{
  "IssueKey": "{{ $json.extractedKey }}"
}
// Step 4: Function — resolve transition ID
// const t = $output.getTransitions.transitions.find(t => t.name === "In Review");
// Step 5: issue/executeTransition
{
  "IssueKey": "{{ $json.extractedKey }}",
  "TransitionId": "{{ $output.findTransition.id }}"
}

Example 2 — Auto-Close Resolved Incidents Older Than 72h

// Step 1: ScheduledTrigger (daily)
// Step 2: issue/getAll
{
  "Jql": "project = OPS AND status = Resolved AND updated <= -72h ORDER BY updated ASC",
  "Limit": 50
}
// Step 3: Loop over issues
// Step 4 per issue: issue/getTransitions  { IssueKey: $loopItem.key }
// Step 5: Resolve "Close" transition ID
// Step 6: issue/executeTransition
{
  "IssueKey": "{{ $loopItem.key }}",
  "TransitionId": "{{ $output.closeTransitionId }}",
  "Fields": { "resolution": { "name": "Done" } }
}