Developer Portal for YouTrack and Hub Help

Due Date

This workflow helps you set deadlines for resolving issues.

Name

@jetbrains/youtrack-workflow-due-date

Auto-attached

no

Modules

Require due dates for submitted issues (on-change rule)

Notify assignee about overdue issues (on-schedule rule)

Use Case

This workflow requires that every reporter sets a due date for resolving an issue and notifies the assignee when an issue is overdue.

To use this workflow, you should either add a Due Date field to your project or create another date-type field and modify the reference to the Due Date field in the default workflow.

This workflow was originally taken from a submitted request (JT-5998).

The user who submitted this issue wanted to make a field required for all new issues so that it could be used as the basis for a report.

Rules

The first module contains a rule that prevents the creation of an issue unless the due date is set. If the Due Date field is empty, a warning is displayed.

You can easily modify this rule to require values for one or more custom fields in your project. However, for the rule to work properly, the required fields should have the Can be empty setting enabled. For more information, see https://www.jetbrains.com/help/youtrack/cloud/?Attaching-Custom-Fields-to-Projects.

Require due dates for submitted issues

First, the rule verifies that the issue has not been reported. This means the warning is displayed when the user is still creating the issue or working with an issue draft. If true, it checks for a value in the Due Date field with the required method.

  • If the Due Date field is empty, a warning is displayed. The required field is highlighted. The user cannot create the issue.

  • If the Due Date is set, the user can create the issue.

const entities = require('@jetbrains/youtrack-scripting-api/entities'); const workflow = require('@jetbrains/youtrack-scripting-api/workflow'); exports.rule = entities.Issue.onChange({ title: 'Require due dates for submitted issues', guard: (ctx) => { return ctx.issue.becomesReported; }, action: (ctx) => { ctx.issue.fields.required(ctx.DueDate, workflow.i18n('You must set the Due date!')); }, requirements: { DueDate: { type: entities.Field.dateType, name: 'Due Date' } } });

Notify assignee about overdue issues

The second module contains a rule that checks the value in the Due Date field at 10:00. If the issue is overdue and unassigned, notification is sent to the project owner (referenced here as issue.project.leader). If the issue is assigned, notification is sent to the assignee.

const entities = require('@jetbrains/youtrack-scripting-api/entities'); const workflow = require('@jetbrains/youtrack-scripting-api/workflow'); const dateTime = require('@jetbrains/youtrack-scripting-api/date-time'); exports.rule = entities.Issue.onSchedule({ title: 'Notify assignee about overdue issues', search: '#Unresolved has: {Due Date}', cron: '0 0 10 ? * MON-FRI', guard: (ctx) => { return ctx.issue.fields.DueDate < Date.now(); }, action: (ctx) => { const issue = ctx.issue; let userToNotify = issue.fields.Assignee; if (!userToNotify) { userToNotify = issue.project.leader; } const formattedDate = dateTime.format(issue.fields.DueDate); const notificationText = workflow.i18n('Issue became overdue on <i>{0}</i>:', formattedDate) + ' <a href="' + issue.url + '">' + issue.summary + '</a><p style="color: gray;font-size: 12px;margin-top: 1em;border-top: 1px solid #D4D5D6">' + workflow.i18n('Sincerely yours, YouTrack') + '</p>'; userToNotify.notify(workflow.i18n('[YouTrack, Issue is overdue]'), notificationText); }, requirements: { DueDate: { type: entities.Field.dateType, name: 'Due Date' }, Assignee: { type: entities.User.fieldType } } });
Last modified: 7 November 2024