Jira tasks

Updated October 2026

Describes how DousenDesktop lists your Jira issues, how a task links to a Perforce changelist, and how DousenCore moves the issue when you submit.

Dousen doesn’t store tasks, because Jira Cloud is the task system. Dousen uses two Jira connections:

Use a Jira task for a publish

  1. Connect your Jira account in Settings → Jira. See Connect your Jira account.
  2. In the My tasks tab, select the issue.
  3. If the task has no changelist, click Open changelist.
  4. Launch the DCC from DousenDesktop and check that its panel shows the same task and changelist.
  5. Publish the checked instances, check the result in Unreal, and click Submit changes.
  6. If the project moves issues on submit, check the issue in Jira. If its status didn’t change, see Transition the issue on submit.

Connect your Jira account

In Settings → Jira, fill in these fields. The setup wizard asks for the same ones. Your Jira account must be able to browse your issues.

FieldValue
Base URL Your Jira Cloud site, for example https://yourstudio.atlassian.net.
Email The email address you sign in to Jira with.
API Token A personal token from your Atlassian account (id.atlassian.com → Security → API tokens). The tab also has a Create or manage Jira API tokens link.

Test Connection sends GET /rest/api/3/myself with your email and token as HTTP Basic credentials. It shows Connected if Jira answers 200 and Failed otherwise. The test doesn’t save anything.

DousenDesktop stores the token in its app-data folder, separate from your sign-in session. The file is obfuscated with a random per-install key, kept in a second file that only your account can read. This isn’t strong encryption. Jira requests go from your machine straight to Jira Cloud with Basic authentication. The only Jira data DousenDesktop sends to DousenCore is the issue key (for example DOU-142), when you work with a task’s changelist.

The My tasks tab

My tasks lists the issues assigned to you that aren’t Done, using this JQL query:

TEXTassignee=currentUser() AND statusCategory != Done
CallWhat it fetches
GET /rest/api/3/search/jql The task list. Query parameters: jql (above), fields=summary,status,priority,description,assignee, expand=renderedFields, maxResults=50, and startAt.
GET /rest/api/3/issue/{key} The full detail of one issue, fetched when you select it. It uses the same fields and expand values.

My tasks loads your open issues 50 at a time. If more are available, click Load more tasks below the list to add the next 50. Issues you move to a Done status in Jira leave the list.

DousenDesktop refreshes the list every 30 seconds by default. To change this, set Task poll interval in Settings → Connection to 5–3600 seconds. While extra pages are loaded, the automatic refresh pauses so it doesn’t replace them. Click Refresh to reload from the first page and resume it.

Search matches the Jira key or the title, and Status filters by status. Both apply only to the issues that are loaded, so click Load more tasks to search further. Refresh fetches the list again.

Select a task to see its status, Jira key (REF), PROJECT, TASK ID, linked changelist (CL), shelved changelist (SHELVED, see Shelving), and description. The description comes from renderedFields.description, so headings, lists, and images look as they do in Jira. DousenDesktop downloads description images (/secure/attachment/... URLs) with your credentials, keeps them in memory for the session, and scales down any that are wider than the pane.

ButtonAction
Open in Jira Opens the issue in your system browser.
Open changelist Opens a Perforce changelist for this issue. See Perforce.
Submit changes Submits the linked changelist.
Restore shelved changes Unshelves the most recently shelved changelist for this task (preview). See Shelving.
The My tasks tab in DousenDesktop. The task list is on the left, with search and status filters above it. The details pane on the right shows the selected task's status, project, changelist, and description, with the Open in Jira, Restore shelved changes, Open changelist, and Submit changes buttons below.
The My tasks tab. Select a task to see its description and changelist actions. Screenshots on this page use a sample project.

When Jira is slow or unreachable

If Jira is slow or unreachable, the tab keeps showing the last known tasks, and DousenDesktop polls less often until Jira answers. If Jira rejects your credentials (401 or 403), polling stops until you save valid credentials. For the backoff intervals and exact messages, see My tasks and Troubleshooting.

Link a task to a Perforce changelist

Open changelist opens a Perforce changelist and links it to the issue key (for example DOU-142) in DousenCore. While the task stays selected, every DCC addon receives the task and changelist through the task.context bridge event, and your exports carry them. See DCC addons.

DousenDesktop gets the task’s changelist state from DousenCore. After the list refreshes, Submit changes stays enabled and Open changelist stays disabled while the task has an open changelist. For how changelists are opened and submitted, see Perforce.

Transition the issue on submit

When you submit a task’s changelist, DousenCore can move the Jira issue to another status, using the project’s Jira connection. DousenDesktop doesn’t call Jira for this. A project admin sets up two things:

  1. A project Jira connection. In the portal, open Projects, select the project, open Project settings, and find Jira Configuration. Enter the Base URL, Project Key, Email, and API Token, then click Update. The API token field is write-only. Leave it blank to keep the current token, or enter a value to set or replace it.
  2. The jira.on_submit_transition pipeline setting, which names the transition to run. In Pipeline settings it is the Jira transition on CL submit field under Integrations. In the YAML it looks like this:
YAMLjira:
  on_submit_transition: "In Review"

Then submit a test changelist for a task and check that the issue moves.

After a successful submit, DousenCore lists the issue’s transitions (GET /rest/api/3/issue/{key}/transitions), picks the one whose name matches the setting (ignoring case), and runs it with a POST to the same URL. If no transition matches or the call fails, DousenCore logs the problem. The submit still succeeds, but the issue doesn’t move.

Enter the name of the Jira workflow transition, which can differ from the status it leads to. For example, a transition called "Send to Review" can move the issue to a status called "In Review". To see your transition names, open Project settings → Workflow in Jira.

DousenCore uses the project that was selected when the changelist was opened. If the changelist has no recorded project, it uses the project that DousenDesktop sends with the submit. If the project uses a separate source repository, the issue moves after the task’s last non-empty changelist is submitted. See Perforce.

Inbound Jira webhook

DousenCore accepts webhook events from Jira at POST /webhooks/jira. The X-Hub-Signature-256 header must be sha256= followed by the HMAC-SHA256 of the raw body, computed with DOUSEN_WEBHOOK_SECRET.

ConditionResponse
Valid X-Hub-Signature-256 for DOUSEN_WEBHOOK_SECRET 200 OK. DousenCore parses and logs the event.
Missing or mismatched signature 401 Unauthorized.
Body isn’t a Jira webhook payload 400 Bad Request.
DOUSEN_WEBHOOK_SECRET is not set 503 Service Unavailable. The endpoint rejects requests unless DOUSEN_ALLOW_INSECURE_WEBHOOK=true is set, which is for development only.

The endpoint doesn’t change any changelist or task state. To move issues on submit, use jira.on_submit_transition.