Post function script to update linked items

John Hastings-Kimball June 9, 2020

I have written a scriptrunner post function that should update the status of a linked item when its run. Essentially, when our dev team reviews and accepts a client issue for development we want to clear the assignee (with conditions) and reviewed flags on the client issue. This script i have generates no sytax errors and runs without issue but doesnt seem to want to update the linked item: 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.search.SearchProvider
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.link.IssueLink

def issueService = ComponentAccessor.getIssueService()
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def v3Reporter = issue.getReporter()
def linkType = ["Inducted"]
def linkMgr = ComponentAccessor.getIssueLinkManager()
def desc = "start"

for (IssueLink link in linkMgr.getInwardLinks(issue.id)) {
if (linkType.contains(link.issueLinkType.name)) {
MutableIssue clientIssue = link.sourceObject as MutableIssue

def customFieldManager = ComponentAccessor.customFieldManager
def clientAssignee = clientIssue.getAssignee()
def review = customFieldManager.getCustomFieldObjectByName("Reviewed by Product Team")
def reviewValue = clientIssue.getCustomFieldValue(review)
if (v3Reporter == clientAssignee){
clientIssue.setAssignee(null)
clientIssue.setCustomFieldValue(review, "Yes")
} else {
clientIssue.setCustomFieldValue(review, "Yes")
}
}
}

1 answer

0 votes
John Hastings-Kimball June 10, 2020

ok - so i now realize that i need to use the issue service to make the updates and have re-written to this but the update doesnt seem to be valid: 

import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.customfields.option.Options
import com.atlassian.jira.issue.link.IssueLink

IssueService issueService = ComponentAccessor.getComponent(IssueService);
def customFieldManager = ComponentAccessor.getComponent(CustomFieldManager);
def optionsManager = ComponentAccessor.getComponent(OptionsManager);
IssueInputParameters issueInputParameters = issueService.newIssueInputParameters()

def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def v3Reporter = issue.getReporter()
def linkType = ["Inducted"]
def linkMgr = ComponentAccessor.getIssueLinkManager()
def user = ComponentAccessor.getJiraAuthenticationContext().loggedInUser

for (IssueLink link in linkMgr.getInwardLinks(issue.id)) {
if (linkType.contains(link.issueLinkType.name)) {
def clientIssue = link.sourceObject
def clientAssignee = clientIssue.getAssignee()
def review = customFieldManager.getCustomFieldObjectByName("Reviewed by Product Team")

if (v3Reporter == clientAssignee){
issueInputParameters.setAssigneeId(null)
issueInputParameters.addCustomFieldValue(review.id, "Yes")
} else {
issueInputParameters.addCustomFieldValue(review.id, "Yes")
}
def update = issueService.validateUpdate(user, clientIssue.id, issueInputParameters)
if (update.isValid()) {
issueService.update(user, update)

}
}

 

any thoughts on what i'm missing? 

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events