I am trying to change the parentId of a sub-task via a Groovy script in the Scriptrunner Console, but for some reason the change is not actually being saved.
Below, is the code I am using.
As you will see, I am getting the new parent from the change history of the sub-task, as it was moved by mistake. We have multiple cases like this, which is why I am trying to do this via a script.
Any help or guidance is appreciated.
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.event.type.*
import com.atlassian.jira.issue.index.IssueIndexingService
import com.atlassian.jira.util.ImportUtils
def issueManager = ComponentAccessor.getIssueManager();
def changeHistoryManager = ComponentAccessor.changeHistoryManager
def issueIndexingService = ComponentAccessor.getComponent(IssueIndexingService)
final String issueKey = 'CLTAST-18782'
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def issue = ComponentAccessor.issueManager.getIssueByCurrentKey(issueKey)
def parent = ""
changeHistoryManager.getChangeItemsForField(issue, "Parent").each { def it -> parent = it.getFromString(); log.warn(it.getFromString()) }
if (issue.getParentObject().getKey() != parent){
log.warn ("Not the same parent")
def parentIssue = ComponentAccessor.issueManager.getIssueByCurrentKey(parent)
def parentId = parentIssue.getId()
issue.setParentId(parentId)
issueManager.updateIssue(user, issue, EventDispatchOption.ISSUE_UPDATED, false);
boolean wasIndexing = ImportUtils.isIndexIssues();
ImportUtils.setIndexIssues(true);
log.warn("Reindex issue ${issue.key} ${issue.id}")
issueIndexingService.reIndex(issueManager.getIssueObject(issue.id));
ImportUtils.setIndexIssues(wasIndexing);
}