Comment related issues

Are you using JMWE for Cloud and want to learn how to use this post-function? Head to our documentation here.

Documentation for JMWE 5.0.0 - 6.1.3 is available here.

A workflow post-function that creates a comment on all issue's related issues (such as linked issues, Stories of an Epic, Epic of a Story, subtasks of an issue, issues returned by a Groovy script or a JQL search, etc.).

  • This post-function does not work with remote links (links to Jira issues residing on another Jira instance/server).

  • JMWE now considers "symmetrical" link types (such as "relates to") as one link direction instead of two on the configuration screens and in the post-function execution.

To add the 'Comment linked issues' post-function to a transition:

  1. Click Edit for the workflow that has the transition you wish to configure the post-function on.

  2. In the Workflow Designer, select the transition.

  3. Click Post Functions in the properties panel.

  4. Click Add post function.

  5. Select Comment linked issues from the list of post-functions.

  6. Click Add to add the post-function on the transition.

  7. Select the issues to operate on from Which issue(s) field

  8. Select comment type from the Comment type drop-down.

  9. Input a value in the Comment text field based on the comment type selected in step 8.

  10. Select the options provided to add the required parameters.

  11. Click Add to add the post-function to the transition.

 

When you add this post-function to a transition and trigger it, the add-on picks the value from the Comment text field and adds it as a comment on all the issues related to the current issue. You can customize this post-function with the following options:

Which issue(s)

Select the issues to operate on. They can be:

  • Linked issues: Select issue(s) linked to the current issue through any link type or a specific link type such as blocks, is cloned by, etc.

  • Sub-tasks of the current issue: Select this option to operate on the sub-tasks of the current issue

  • Parent issue of the current sub-task: Select this option to operate on the parent of the current issue

  • Issues that belong to the current Epic: Select this option to operate on the issues that belong to the current Epic

  • Epic of the current issue: Select this option to operate on the Epic of the current issue

  • Child issues of the current issue in the Portfolio hierarchy: Select this option to operate on the child issues of the current issue in the Portfolio hierarchy

  • Parent issue of the current issue in the Portfolio hierarchy: Select this option to operate on the parent issue of the current issue in the Portfolio hierarchy

  • Issues returned by a Groovy script:  Input a Groovy script that returns either a single Issue object, or a Collection of Issue objects, or a String representing the key of an issue, or a Collection of Strings each representing an issue key. For example:

    • "TEST-1"

    • ["TEST-1","TEST-2"]

    • ComponentAccessor.issueManager.getIssueObject("TEST-1")

    • [ComponentAccessor.issueManager.getIssueObject("TEST-1"),ComponentAccessor.issueManager.getIssueObject("TEST-2")]

    • issue.parentObject

    • issue.getLinkedIssues()

  • Issues returned by a JQL search:  Input a JQL search expression, including an optional Groovy Template markup. For example:

    • project = TEST returns issues of the project with the key TEST

    • project = ${issue.get("project").key} and assignee = ${currentUser.name} returns issues of the project the current issue belongs to and assigned to the current user.

    • To operate on issues of a project with key TEST and issue type name same as the value in a text field

      <% if (issue.get("Single line text")) { %> project = TEST and issuetype = ${issue.get("Single line text")} <% } else { %> issuekey=INVALID-1 <% } %>

       

Comment body

The value can be either a:

  • Text or Groovy templateA fixed text that can include a Groovy template markup that can be used as the comment body. For example, The issue will be resolved on or before <%= issue.duedate%> by <%issue.assignee%>.

  • Groovy Expression: A Groovy expression whose return value (of type String) will be used as the comment body. For example, issue.get("description") will add the description of the issue to the issue as a comment.

Comment visibility

  • Restrict to Group: Restricts the visibility of the comment to a specified group. When you input a valid group name in the Restrict to Group field, the comment will be visible only to the members of the specified group. For no restriction, leave the field blank.

  • Restrict to Project Role: Restricts the visibility of the comment to a selected project role. When you select a project role from the Restrict to Project Role drop-down, the comment will be visible only to the members of the selected project role. For no restriction, leave the field blank.

  • Restrict to Internal (Jira Service Desk only) - REQUIRES option "Send 'Issue Commented' notification": Restricts the visibility of the comment to the Service Desk Agents and Collaborators only. This requires the option Send "Issue Commented" notification to be selected.

You can customize this post-function using the following options:

Options 

Send "Issue Commented" notification: You can notify the users when a comment is added on the issue by selecting the option Send "Issue Commented" notification.

Run as

Run as user: Select one of the following options to set the author of the action performed by this post-function as:

  • Current user: The user transitioning the issue.

  • Specific user: The user specified in the select-list provided. Start typing into the field to select a user from the list of auto-suggestions.

  • User in field: The user specified in a user picker field of the issue being transitioned. Select one of the user fields from the list of available options in the field provided.

  • User from script: The user returned by the Groovy script specified in Script. This script should return either the Username of the user or an ApplicationUser object.

    Examples:

    • "jdoe" - Username

    • issue.get("assignee") - the current issue's Assignee

Conditional execution

Input a Groovy expression that returns true if the post-function should run. For more information see Conditional execution using Groovy expressionNote that the condition will be evaluated once per applicable related issue, with each related issue being available, in turn, in the relatedIssue and deprecated linkedIssue variables.

Error Handling

Make transition fail when an error occurs in this post-function: Select this option to make errors raised by the current post-function prevent the transition from completing and show the error in the browser.

By default, all errors (Java Exceptions) raised by this post-function, including those raised by custom Groovy scripts, will be logged in the JIRA log file but will not be reported to the user and will not prevent the transition from completing. However, when designing new workflows or troubleshooting them, it is more convenient to be notified immediately of any such error during the execution of the transition. For example on the production Jira instances you might want to show errors only for the post-function(s) being worked on, in order to avoid disrupting other workflows. To make errors raised by the current post-function prevent the transition from completing and show the error in the browser, select Make transition fail when an error occurs in this post-function.

If you want to show all the errors, either only to the admins or to all users, configure the option globally on the JMWE configuration page. For example, on development and staging Jira instances, you can activate error reporting for all JMWE post-functions, to display all the errors and it is recommended to do so, and on production Jira instances you might want to activate error reporting only to administrators so that they can be made aware of configuration errors.