Jira
Jira integration actions allow workflows to create issues directly in Jira using your installed Jira integration.
Prerequisites
- A Jira integration installed in your Port organization.
- The target Jira project and issue type must exist in your Jira site.
- Your Jira credentials must have permission to create issues in the target project.
- Actions processing must be enabled on your integration:
- Hosted by Port / UI / OAuth installations: actions processing is enabled automatically.
- Self-hosted (Helm or Docker): actions processing is disabled by default and must be explicitly enabled. See Enable actions processing (self-hosted) below.
Enable actions processing (self-hosted)
If you installed the Jira Ocean integration as hosted by Port (via the UI or OAuth), actions processing is enabled automatically and you can skip to Configuration.
For self-hosted deployments (Kubernetes/Helm or Docker), the actions processor is disabled by default. You need to enable it explicitly using the flags below, depending on how you deployed the integration:
- Helm
- Docker
Pass the following flags when installing or upgrading the Helm chart:
helm upgrade --install jira port-labs/port-ocean \
--set actionsProcessor.enabled=true \
# ... rest of your values
actionsProcessor.enabled=true - enables the actions processor so the integration can receive and execute Jira issue creation requests from Port.
Add the following environment variables to your Docker run command or docker-compose configuration:
docker run \
-e OCEAN__ACTIONS_PROCESSOR__ENABLED=true \
# ... rest of your env vars
ghcr.io/port-labs/port-ocean-jira:latest
Configuration
| Field | Type | Description |
|---|---|---|
type | string | Required. Must be "INTEGRATION_ACTION" |
installationId | string | Required. Your Jira integration installation ID |
integrationProvider | string | Required. Must be "jira" |
integrationInvocationType | enum | Required. One of the values listed in available actions |
integrationActionExecutionProperties | object | Required. Jira-specific configuration |
The remaining sections describe the execution properties of the action.
Available actions
Currently, Jira integration actions support one operation:
| Action | Invocation type | Description |
|---|---|---|
| Create an issue | create_issue | Create an issue in a Jira project |
Create an issue
Creates an issue in a Jira project. Set integrationInvocationType to create_issue.
Execution properties
| Field | Type | Description |
|---|---|---|
project | string | Required. Jira project key (for example, OPS) |
issueType | string | Required. Issue type name (for example, Bug or Task) |
summary | string | Required. Issue summary |
description | string | Issue description |
priority | string | Issue priority name (for example, High) |
assigneeAccountId | string | Atlassian account ID of the assignee. Use the account ID, not the user's email address |
Basic example
Create a Jira issue (click to expand)
Create a Jira issue from a self-service trigger, passing project, issue type, and summary from the form inputs:
{
"identifier": "create-jira-issue",
"title": "Create Jira Issue",
"config": {
"type": "INTEGRATION_ACTION",
"installationId": "your-installation-id",
"integrationProvider": "jira",
"integrationInvocationType": "create_issue",
"integrationActionExecutionProperties": {
"project": "{{ .outputs.trigger.project }}",
"issueType": "{{ .outputs.trigger.issue_type }}",
"summary": "{{ .outputs.trigger.summary }}",
"description": "{{ .outputs.trigger.description }}"
}
}
}
Dynamic field values
Dynamic field values (click to expand)
Map workflow outputs into issue fields when you need values from earlier steps:
{
"integrationActionExecutionProperties": {
"project": "{{ .outputs.fetch_service.jira_project }}",
"issueType": "Task",
"summary": "[Port] {{ .outputs.trigger.title }}",
"description": "Created from workflow run {{ .workflowRun.identifier }}",
"priority": "High",
"assigneeAccountId": "{{ .outputs.fetch_owner.account_id }}"
}
}
If you ingest Jira users into Port, the jiraUser blueprint stores each user's Atlassian account ID. You can resolve it from catalog data in an earlier workflow step and pass it to assigneeAccountId.
Complete workflow examples
A self-service workflow that creates a Jira issue from form inputs:
Workflow example (click to expand)
{
"identifier": "report-work-item",
"title": "Report Work Item",
"icon": "Jira",
"description": "Create a Jira issue from a self-service form",
"nodes": [
{
"identifier": "trigger",
"title": "Report Work Item",
"config": {
"type": "SELF_SERVE_TRIGGER",
"userInputs": {
"properties": {
"project": {
"type": "string",
"title": "Project key"
},
"issue_type": {
"type": "string",
"title": "Issue type",
"default": "Task"
},
"summary": {
"type": "string",
"title": "Summary"
},
"description": {
"type": "string",
"title": "Description",
"format": "markdown"
}
},
"required": ["project", "issue_type", "summary"]
}
}
},
{
"identifier": "create-jira-issue",
"title": "Create Jira Issue",
"config": {
"type": "INTEGRATION_ACTION",
"installationId": "jira-integration-123",
"integrationProvider": "jira",
"integrationInvocationType": "create_issue",
"integrationActionExecutionProperties": {
"project": "{{ .outputs.trigger.project }}",
"issueType": "{{ .outputs.trigger.issue_type }}",
"summary": "{{ .outputs.trigger.summary }}",
"description": "{{ .outputs.trigger.description }}"
}
}
}
],
"connections": [
{
"sourceIdentifier": "trigger",
"targetIdentifier": "create-jira-issue"
}
]
}
Limitations
- Jira Cloud only: This action uses Port's Jira Cloud integration. For Jira Server (self-hosted), use a webhook node that calls the Jira REST API directly.
- Secrets not supported: Integration actions do not support organization secrets or encrypted user inputs in JQ templates. See the integration actions overview.