Update newly linked issue tempo custom field

Raynard Rhodes
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.
September 16, 2019

I'm attempting to update the Tempo Account custom field of a linked issue during the IssueLinkCreatedEvent. The below code executes successfully, but does not update the account field. I am using Custom Listener inside of scriptrunner

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.issue.IssueEvent
import com.atlassian.jira.event.issue.link.IssueLinkCreatedEvent
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.bc.issue.IssueService.UpdateValidationResult
import com.atlassian.jira.bc.issue.IssueService.IssueResult
import com.atlassian.jira.user.ApplicationUser
import org.apache.log4j.Logger
import org.apache.log4j.Level

def log = Logger.getLogger("com.acme.CreateSubtask")
log.setLevel(Level.INFO)

def CustomFieldManager = ComponentAccessor.getCustomFieldManager()

def IssueManager = ComponentAccessor.getIssueManager()

def event = event as IssueLinkCreatedEvent

def sourceIssue = event.getIssueLink().getSourceObject()
log.info("sourceIssue: " + sourceIssue.key)

IssueService issueService = ComponentAccessor.getIssueService()

IssueInputParameters issueInputParameters = issueService.newIssueInputParameters();


if (sourceIssue.issueType.name != "Epic"){
log.info("Exiting ... sourceIssue type of" +sourceIssue)
}

MutableIssue issue = event.getIssueLink().getDestinationObject() as MutableIssue

log.info("issue: " + issue.key)

def customFieldManager = ComponentAccessor.getCustomFieldManager()

def CfAccount = customFieldManager.getCustomFieldObjectByName("Account")
log.info("CfAccount: " + CfAccount)
def cfValue = event.issueLink.sourceObject.getCustomFieldValue(CfAccount)
log.info("Epic Account Value: "+cfValue)
def issueAccount = customFieldManager.getCustomFieldObjects(issue).find {it.name == "Account"}

if(issue){

issueInputParameters.addCustomFieldValue(issueAccount.getIdAsLong(),cfValue.toString());

ApplicationUser loggedInUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser();
UpdateValidationResult validationResult = issueService.validateUpdate(loggedInUser, issue.getId(), issueInputParameters);
if (validationResult.isValid()){
IssueResult result = issueService.update(loggedInUser, validationResult);
}

}

0 answers

Suggest an answer

Log in or Sign up to answer