1. Create a new file named Example.groovy
  2. Copy the file in the JIRA server, path {JIRA_HOME}/scripts/{package}/Example.groovy
  3. NOTE: if the script contains “package example.Example” {package} must be “example” in this case
  4. Then define the Custom Listener in JIRA > Add-ons > ScriptRunner Listeners
    1. In Note: put general Information, for example “MyFirstListener Example”
    2. In Project Key: put all the projects affected for this Listener when a issue is created
    3. Events: In this case, select “Issue Created”
    4. Name of groovy class: “example.Example”

And now, the script contents:

For example, this script obtain custom fields and then send a mail when a issue in a project is created

package example.Example
import com.atlassian.jira.event.issue.AbstractIssueEventListener
import com.atlassian.jira.event.issue.IssueEvent
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.customfields.CustomFieldType
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.mail.Email
import com.atlassian.mail.server.MailServerManager
import com.atlassian.mail.server.SMTPMailServer
import org.apache.log4j.Category
class TaskVersionListener extends AbstractIssueEventListener {
 Category log = Category.getInstance(TaskVersionListener.class)
 void workflowEvent(IssueEvent event) {
 log.debug "Event: ${event.getEventTypeId()} fired for ${event.issue} and caught by TaskVersionListener"
ComponentManager componentManager = ComponentManager.getInstance()
CustomFieldManager customFieldManager = componentManager.getCustomFieldManager()
MailServerManager mailServerManager = componentManager.getMailServerManager()
SMTPMailServer mailServer = mailServerManager.getDefaultSMTPMailServer()

MutableIssue myIssue = event.issue
CustomField cf_location = customFieldManager.getCustomFieldObject("customfield_11300")
CustomField cf_firstName = customFieldManager.getCustomFieldObject("customfield_12001")
CustomField cf_lastName = customFieldManager.getCustomFieldObject("customfield_12002")
CustomField cf_jobTitle = customFieldManager.getCustomFieldObject("customfield_12005")
CustomField cf_startDate = customFieldManager.getCustomFieldObject("customfield_12003")
CustomField cf_leaveDate = customFieldManager.getCustomFieldObject("customfield_12004")
CustomField cf_lineManager = customFieldManager.getCustomFieldObject("customfield_12007")

def location = myIssue.getCustomFieldValue(cf_location)
def firstName = myIssue.getCustomFieldValue(cf_firstName)
def lastName = myIssue.getCustomFieldValue(cf_lastName)
def jobTitle = myIssue.getCustomFieldValue(cf_jobTitle)
def lineManager = myIssue.getCustomFieldValue(cf_lineManager).displayName
def date = myIssue.getCustomFieldValue(cf_startDate)

if ( date == null ) {
 date = myIssue.getCustomFieldValue(cf_leaveDate).format('dd/MM/yyyy')
} else {
 date = myIssue.getCustomFieldValue(cf_startDate).format('dd/MM/yyyy')

if (mailServer) {
 Email email = new Email("barcelona<raulpelaez@gmail.com>")
 email.setSubject("New Starter: ${firstName} ${lastName} ${jobTitle} ${date}" )
 String content = "Hello ${lineManager},"
 content += "<br>"
 content += "<br>"
 content += "We are pleased to confirm that ${firstName} ${lastName} ${jobTitle} will start employment on ${date}."
 content += "<br>"
 content += "<br>"
 content += "Regards,"
else {
 log.error "mailServer: No SMTP mail server defined"

Then when an issue is created in the project target, you can see in the “atlassian-jira.log” the traces:
2015-05-22 11:25:52,860 ajp-bio-8009-exec-46 DEBUG sysadmin 685x25762x1 ddtuzy /secure/QuickCreateIssue.jspa [example.Example.TaskVersionListener] Event: 1 fired for SL-111 and caught by TaskVersionListener

Posted by:.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s