Jira integration action
The Jira integration action allows 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 for self-hosted installations below.
Enable actions processing for self-hosted installations
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 | "INTEGRATION_ACTION" | Required. Must be "INTEGRATION_ACTION" |
installationId | string | Required. Your Jira integration installation ID |
integrationProvider | "jira" | Required. Must be "jira" |
integrationInvocationType | "create_issue" | Required. Operation type |
integrationActionExecutionProperties | object | Required. Jira-specific configuration |
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 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
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 example
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.