Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Scriptrunner sends a notification when opening a question with a component

Andrew
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 4, 2019

Hi @All here !! 

Recently, I tasked to send an e-mail notification to an address when issue with component 'A' is open.

This is easy to do in the workflow post function, but it is necessary for several projects, and each project use several workflows. So, one solution is to change a dozen workflows or use listeners.

My example with the listener.

The first step is to create a listener 'Send a custom email'. By this we can set our projects scope. I set the event 'All issue events' and provided condition what issues are being taken for us.

 

def result = false
//log.info(event.getEventTypeId())
if (event.getEventTypeId() == X ){
if (event.getChangeLog().getRelated("ChildChangeItem").find{ it.field == "status" && it.newvalue == "Z" }){
if (event.issue.getComponents().find{ it.getName() == "component A"}){
result = true
}
}
}


if (event.getEventTypeId() == 1){
if (event.issue.getStatusId() == "1"){
if (event.issue.getComponents().find{ it.getName() == "component A"}){
result = true
}
}
}
return result

 

Let's take a closer look.

event.getEventTypeId() == X 

It is designed for transition events in "Open".  How to find the value of X? Only experimental, use log.info for this (event.getEventTypeId ()).

if (event.getChangeLog().getRelated("ChildChangeItem").find{ it.field == "status" && it.newvalue == "Z" }){

If the issue status has been changed to the new value “Z”. We check only issue which 'Opened'. Value of 'Z' may find in schemes. For example when edit status in admin page in URL you see this identifier.

And last point it is check that issue has 'component A'. This condition returns true if the components of the list contain "component A".

if (event.getEventTypeId() == 1){

This is for created issue. 

After we receive the 'true' of the condition, we can send an email. For example, insert a link to the body of the letter:

Issue <h1><a href="https://YOURJIRA/browse/$issue.key"> $issue.key </a></h1> with component 'component A'.

I hope this post was helpful.

B.R.

0 comments

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events