Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to generate notification for IssueLinkCreatedEvent ?

Deleted user June 21, 2021

The event IssueLinkCreatedEvent is available within the listener "Send a custom email (non-issue events)" but I can't send a notification to the watchers of the link issues.

The event IssueLinkCreatedEvent is not available within the listener "Send a custom email" where I could simply send a notification to related issues watchers.\

 

I thought about creating a "Custom listener" that would generate a "GenericEvent" on "IssueLinkCreatedEvent". Then, a listener "Send a custom email" would send the email.

Can I create a GenericEvent programatically? What other options do I have?

Thanks

 

2 answers

Suggest an answer

Log in or Sign up to answer
0 votes
Martin Bayer _MoroSystems_ s_r_o__
Community Champion
September 25, 2021

Hi @[deleted] , I didn't test it but IssueLinkCreatedEvent object has method getIssueLink . It returs a com.atlassian.jira.issue.link.IssueLink object and it contains reference to the source and destination issues (getSourceObject(),  getDestinationObject()).

So you can get watchers from the linked issues.

0 votes
PD Sheehan
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 21, 2021

The issueLinkCreatedEvent won't have an issue object to act on. So the built-in Send Email script won't know which email to send email to.

Your options are either, use the custom scripted listener to send the email:

import com.atlassian.mail.server.SMTPMailServer
import com.atlassian.mail.server.MailServerManager
import com.atlassian.mail.Email
import com.atlassian.mail.MailException
import com.atlassian.mail.MailFactory
import com.atlassian.mail.queue.SingleMailQueueItem
import com.atlassian.jira.component.ComponentAccessor

def recipients = 'xxx@yyy'
def subject = 'whatever subject you want'
def body = 'contruct your own body'
def plain = true //or false if you want to include html in body

def mailServerManager = ComponentAccessor.mailServerManager
def mailServer = mailServerManager.defaultSMTPMailServer

if (mailServer && !MailFactory.settings.sendingDisabled) {
def email = new Email(recipients)
email.setFrom(mailServer.defaultFrom)
email.setSubject(subject)
if(plain) {
email.setMimeType("text/plain")
} else {
email.setMimeType("text/html")
}
email.setBody(msgBody)
try {
def item = new SingleMailQueueItem(email);
ComponentAccessor.getMailQueue().addItem(item);
Date today = new Date()
return "Success"
} catch (MailException e) {
log.error e.message
}
} else {
log.warn "Sending is disabled"
}

 

Or, as you suggested, use the custom listener to fire a new event using the isseEventManager

import com.atlassian.jira.component.ComponentAccessor
def issueEventManager = ComponentAccessor.issueEventManager
issueEventManager.dispatchEvent(eventId,issue, user,false)
TAGS
AUG Leaders

Atlassian Community Events