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) |
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 Attach 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.
var entities = require('@jetbrains/youtrack-scripting-api/entities');
var workflow = require('@jetbrains/youtrack-scripting-api/workflow');
exports.rule = entities.Issue.onChange({
title: workflow.i18n('Require due dates for submitted issues'),
guard: function(ctx) {
return ctx.issue.becomesReported;
},
action: function(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 Lead. If the issue is assigned, notification is sent to the assignee.
var entities = require('@jetbrains/youtrack-scripting-api/entities');
var workflow = require('@jetbrains/youtrack-scripting-api/workflow');
var dateTime = require('@jetbrains/youtrack-scripting-api/date-time');
exports.rule = entities.Issue.onSchedule({
title: workflow.i18n('Notify assignee about overdue issues'),
search: '#Unresolved has: {Due Date}',
cron: '0 0 10 * * ?',
guard: function(ctx) {
return ctx.issue.fields.DueDate < Date.now();
},
action: function(ctx) {
var issue = ctx.issue;
var userToNotify = issue.fields.Assignee;
if (!userToNotify) {
userToNotify = issue.project.leader;
}
var formattedDate = dateTime.format(issue.fields.DueDate);
var 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
}
}
});