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

Next challenges

Recent achievements

  • Global
  • Personal

Recognition

  • Give kudos
  • Received
  • Given

Leaderboard

  • Global

Trophy case

Kudos (beta program)

Kudos logo

You've been invited into the Kudos (beta program) private group. Chat with others in the program, or give feedback to Atlassian.

View group
Highlighted

Scriptrunner sends a notification when opening a question with a component

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