YouTrack
Import YouTrack issues and tagged comments and synchronize comments, state, work time, and assignment routing.
1. Create a YouTrack token
In YouTrack:
- Open your avatar → Profile.
- Open Account Security.
- Select New token.
- Name it Denly.
- Select the YouTrack scope.
- Create it and copy it immediately.
YouTrack only shows the token once. It is used as a bearer token for API access. Read JetBrains’ permanent token guide.
2. Create the Denly connection
Open Workspace → Integrations → Connect → YouTrack.
- External workspace or repository: project short name, such as
DEV. - API base URL:
https://your-company.youtrack.cloudor your public HTTPS Server URL. - Permanent token: paste the token.
- State field name: leave blank unless your project renamed its State field or has more than one.
- Trigger tag:
denly; leave Trigger on create disabled initially. - Initial Denly stage: Plan first, with Post worklogs enabled.
Routing is optional. Leave Default Denly assignee blank for unassigned tasks, or choose one workspace member to own everything from this connection.
For per-person routing use Route by external assignee: each row pairs one person in the provider (left) with a workspace member (right), and + adds another row. Routing follows the item's assignee in the provider, not whoever created it, and a matching row beats the default above.
The left-hand value must be the identifier the provider actually sends, which the field's placeholder names for you. Matching ignores surrounding spaces and letter case, but nothing else: a near-miss routes nothing and looks the same as a broken integration.
Create the connection and copy the generated webhook URL and inbound secret. The secret is shown only once.
3. Make YouTrack send events
Go to Administration → Workflows, create a JavaScript workflow, add an On-change rule, paste this script, replace DENLY_URL and DENLY_SECRET, then attach and enable the workflow for your project.
const entities = require('@jetbrains/youtrack-scripting-api/entities');
const http = require('@jetbrains/youtrack-scripting-api/http');
const DENLY_URL = 'https://your-public-host/integrations/youtrack/webhook/YOUR_CONNECTION_ID';
const DENLY_SECRET = 'paste-your-inbound-secret-here';
function sendIssue(issue, eventName) {
const tags = [];
issue.tags.forEach(tag => tags.push({ name: tag.name }));
const assignee = issue.fields.Assignee;
const reporter = issue.reporter;
const payload = {
event: eventName,
issue: {
idReadable: issue.idReadable,
id: issue.id,
summary: issue.summary || '',
description: issue.description || '',
tags: tags,
assignee: assignee ? { login: assignee.login, name: assignee.name } : {},
reporter: reporter ? { login: reporter.login, name: reporter.name } : {},
project: { shortName: issue.project.shortName }
}
};
const connection = new http.Connection(DENLY_URL);
connection.addHeader('Content-Type', 'application/json');
connection.addHeader('X-Denly-Token', DENLY_SECRET);
const response = connection.postSync('', null, JSON.stringify(payload));
console.log('Denly response: ' + response.code + ' ' + response.response);
}
exports.rule = entities.Issue.onChange({
title: 'Send tagged issues to Denly',
guard: ctx => {
const issue = ctx.issue;
return issue.becomesReported || issue.isChanged('tags') || issue.isChanged('Assignee');
},
action: ctx => {
const issue = ctx.issue;
const tags = [];
issue.tags.forEach(tag => tags.push(tag.name.toLowerCase()));
const hasDenlyTag = tags.includes('denly');
const hasAssignee = issue.fields.Assignee != null;
if (hasDenlyTag || hasAssignee) sendIssue(issue, issue.becomesReported ? 'created' : 'updated');
},
requirements: {}
});
4. Test and troubleshoot
Create or update an issue and add denly. In Recent events, Processed means it became a task and Skipped means the project, tag or assignee did not match. No row at all means X-Denly-Token is wrong – the delivery never reached the queue.
Denly finds your project's State field on its own. Name it in State field name only if the project renamed it or has more than one. Status mappings must use exact names such as In Progress, Fixed, or Blocked.
Denly