Hi,
I am trying to create a task automatically on Epic creation, but I am unable to set 'Epic Link' for the task - no link is added and I am getting also issues that there is an error with the links - no able to view the task, or delete etc - Integrity Checker usually fix this problem (delete any inconsistent links in background - "ERROR: The following Issue Link will be removed due to a related invalid issue: IssueLink (ID:111345)").
JIRA: v7.3.6
ScriptRunner: v5.2.2
Any idea how to make this working and without issues?
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.link.IssueLink
import com.atlassian.jira.util.ImportUtils
import com.opensymphony.workflow.WorkflowContext
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.user.util.UserManager
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.IssueFactory
import com.atlassian.jira.project.ProjectManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.project.Project
import com.atlassian.jira.bc.project.component.ProjectComponent
import com.atlassian.jira.bc.project.component.ProjectComponentManager
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.Issue
import org.apache.log4j.Logger
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.issue.fields.CustomField
import org.apache.log4j.Category
def Category log = Category.getInstance("com.onresolve.jira.groovy")
log.setLevel(org.apache.log4j.Level.DEBUG)
// Get project object
Project project = issue.getProjectObject()
IssueManager issueMgr = ComponentAccessor.getIssueManager()
ProjectManager projectMgr = ComponentAccessor.getProjectManager()
CustomFieldManager cfMgr = ComponentAccessor.getCustomFieldManager()
// Get user object
String currentUser = (String) ((WorkflowContext) transientVars.get("context")).getCaller();
ApplicationUser currentUserObj = ComponentAccessor.getUserManager().getUserByKey(currentUser);
def wasIndexing = ImportUtils.indexIssues
ImportUtils.indexIssues = true
IssueFactory issueFactory = ComponentAccessor.getIssueFactory()
// 1. INITIATION
// #1
MutableIssue newissue1 = issueFactory.getIssue()
newissue1.setSummary("Summary and business impact")
newissue1.setProjectObject(project)
newissue1.setIssueTypeId("3") // Task
newissue1.description = "Summary 1"
newissue1.reporter = issue.getReporter()
// Set component
ProjectComponentManager projectComponentManager = ComponentAccessor.getProjectComponentManager();
ProjectComponent projectComponent = projectComponentManager.findByComponentName(project.getId(), "1. INITIATION");
Collection<ProjectComponent> myComponents = new HashSet<ProjectComponent>()
myComponents.add(projectComponent)
newissue1.setComponent(myComponents)
// Set 'Epic Link'
def epicLinkField = cfMgr.getCustomFieldObjects(newissue1).find {it.name == 'Epic Link'}
newissue1.setCustomFieldValue(epicLinkField, issue)
// Create Issue
issueMgr.createIssueObject(currentUserObj, newissue1)
ImportUtils.indexIssues = wasIndexing