How to send e-mail on custom field change in JIRA

Currently i'm working as a Test Lead in a new company and we started to move from Bugzilla to JIRA. So it appears, that we have some custom fields and we needed specific behaviour for them - in case when field gets set to "?" or some other value - specific people should be notified with custom e-mails. At first i thought that i could achieve this with Scriptrunner plugin where i would just

  • Install Script Runner plugin from Marketplace
  • Open workflow and click on transition or screen where i need to track field change
  • Click on Post-Function link
  • Select Script Post-Function
  • Click on "Send Custom e-mail"
  • Enter groovy script with condition description. To get value from custom field you need to use
cfValues['Custom field name']*.value.contains('value')
  • Note: this script depends on what type field are you using for custom field, so in case if it doesn't work - try different options here.
  • Email template example can look like this :
Dear <% out << issue.assignee?.displayName %>,
  
The $issue.issueType.name $issue.key with priority <% out <<

issue.priority?.name %> has been assigned to you.
  
Description: ${issue.description}
 
<% if (lastComment)
    out << "Last comment: " << lastComment
%>
 
Custom field value: <% out << issue.getCustomFieldValue(
componentManager.getCustomFieldManager()
.getCustomFieldObjectByName("MySelect")) %>
 
Regards,
<% out << issue.reporter?.displayName %>

This approach is pretty easy to implement, but there's one big disadvantage that made us to decline it:

  • Let's say that we created a ticket and set one of our custom fields to the value that passes post-script condition
  • E-mail get's sent to appropriate person
  • Not you edit this ticket again and do not change custom field
  • E-mail will be sent again to appropriate person, but we didn't want that

That why i decided to write a custom plugin for jira that will handle this situation properly. I will write how to setup project and write the plugin itself in the next articles.