Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

This how-to will explain a way of exclude Email or JIRA users from notifications defining a macro evaluated when a email template is being rendered. The macro can use any data available in the template in order to inhibit a user from notification. 

Step-by-step guide

If the configuration in Notification Mappings is not enough for your notification rules, you can define more complex conditions overriding a system macro. This macro has been included in all the templates.

  1. Enable Email users and JIRA users that you want to be notified in the project notification mapping. Notifications -> Issue -> Edit icon. Confirm the proper Target Audience has been selected.
  2. Add the #macro (inhibitSendingConditions) #end custom macro in Notifications -> Custom Macros -> Edit. The following example uses the recipient type and the event data to only notify Bug issues to Email users (JIRA users may receive any type of issues)

#macro (inhibitSendingConditions)
 
#if ($jemhUtils.getRecipientType() == "EMAIL_CUSTOM_FIELD" && $context.issue.fields.issuetype.name.asText() != "Bug") $jemhUtils.setInhibitSending(true) #end

## 
## The following commented body can be used for reference if you have more recipient type driven conditions 
## 
#*
#if ($jemhUtils.getRecipientType()=="REPORTER" && false) $jemhUtils.setInhibitSending(true) #end
#if ($jemhUtils.getRecipientType()=="ASSIGNEE" && false) $jemhUtils.setInhibitSending(true) #end
#if ($jemhUtils.getRecipientType()=="WATCHER" && false) $jemhUtils.setInhibitSending(true) #end
#if ($jemhUtils.getRecipientType()=="CURRENT_USER" && false) $jemhUtils.setInhibitSending(true) #end
#if ($jemhUtils.getRecipientType()=="PROJECT_LEADER" && false) $jemhUtils.setInhibitSending(true) #end
#if ($jemhUtils.getRecipientType()=="COMPONENT_LEADER" && false) $jemhUtils.setInhibitSending(true) #end
#if ($jemhUtils.getRecipientType()=="USER_CUSTOM_FIELD" && false) $jemhUtils.setInhibitSending(true) #end
#if ($jemhUtils.getRecipientType()=="GROUP_CUSTOM_FIELD" && false) $jemhUtils.setInhibitSending(true) #end
#if ($jemhUtils.getRecipientType()=="EMAIL_CUSTOM_FIELD" && false) $jemhUtils.setInhibitSending(true) #end
#if ($jemhUtils.getRecipientType()=="JEMHC_ADMIN" && false) $jemhUtils.setInhibitSending(true) #end
#if ($jemhUtils.getRecipientType()=="OTHER" && false) $jemhUtils.setInhibitSending(true) #end
*#
#end

If a notification has been inhibited for sending, you should see the following line in the event's report:

Restrict notifications to particular issue field changes

The following macro checks a list of fields that are passed to it, and only allows notification if one of the listed fields was changed.  It also allows comments to be notified.  Add the below velocity macro definition to the end of the Custom Macros list found at JEMHC>Notifications>Custom Macros.

#macro (sendIfFieldChangeOrComment $fieldsToCheck)
    $jemhUtils.setInhibitSending(true)
    #set ($fieldChanged = false)
    #foreach ($item in $fieldsToCheck)
        #if ($jemhUtils.isCreateOrInChangeLog($context, $item))
            #set ($fieldChanged = true)
        #end
    #end
    #if (($jemhUtils.filterRestrictedComments($context.comments).size()>0) || ($fieldChanged==true))
        $jemhUtils.setInhibitSending(false)
    #end
#end

To call the macro in your custom template, you need to add use something similar to the following example usages:

Checking 3 fields for changes: a custom field, the issues description field, and the issues status field
#sendIfFieldChangeOrComment([ "Email Sender Address", "description", "status"])
Checking a single field for changes: the issues standard status field
#sendIfFieldChangeOrComment(["status"])

Note the lowercase name for the standard issue fields.  The field names can be determined through viewing the webhook data for a previous event.

  • No labels