js/generating-new-issues/release-management.js (40 lines of code) (raw):

var entities = require('@jetbrains/youtrack-scripting-api/entities'); exports.rule = entities.Issue.onChange({ title: 'Release management', guard: function(ctx) { var issue = ctx.issue; return issue.becomesReported && issue.fields.Type.name === ctx.Type.Release.name; }, action: function(ctx) { var issue = ctx.issue; var createIssue = function(name, subsystem) { var newIssue = new entities.Issue(ctx.currentUser, issue.project, name + ' for ' + issue.summary); newIssue.fields.Subsystem = subsystem; newIssue.fields.Type = ctx.Type.Task; newIssue.links['subtask of'].add(issue); }; createIssue('Update distribution', ctx.Subsystem.Distribution); createIssue('Update documentation', ctx.Subsystem.Documentation); createIssue('Update "What\'s new"', ctx.Subsystem.Site); createIssue('Blog post', ctx.Subsystem.Blog); createIssue('Newsletter for customers', ctx.Subsystem.Newsletters); createIssue('Newsletter for resellers', ctx.Subsystem.Newsletters); }, requirements: { Type: { type: entities.EnumField.fieldType, Release: {}, Task: {} }, Subsystem: { type: entities.OwnedField.fieldType, Distribution: {}, Documentation: {}, Site: {}, Blog: {}, Newsletters: {} } } });