Forums

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

Create Sub-Task Based on Custom Field Checkbox

Jh
Contributor
March 4, 2020 edited

I am trying to create sub-tasks based on custom field checkboxes and need a little bit of guidance on how to setup the post-function and writing the condition.

I have created a custom field called "SAP Access?" with 3 checkbox options, BI/PI/ECP, I'd like to create sub-tasks on the condition that the checkboxes are ticked and auto-assign them.

There are post-task functions written that pre-date me but I have tried to copy the formatting and tailored it. Can I get some feedback on whether below is correctly written?

 

//Get SAP Access checkbox value
def sapaccesscustomFieldObject = customFieldManager.getCustomFieldObjectsByName("SAP Access?")

//get all values of the custom field
def sapaccesscustomFieldValues = sapaccesscustomFieldObject.getValue(parentIssues)

//loop through values and create sub tasks
sapaccesscustomFieldValues.each { LazyLoadedOption it ->
def sapaccessValue = it.getValue()
switch (sapaccessValue){
case "SAP BI":
assigneIdList.add("User1")
summariesList.add("SAP BI access for new hire")
descriptionList.add("SAP BI access required")
break
case "SAP PI":
assigneIdList.add("User2")
summariesList.add("SAP PI access for new hire")
descriptionList.add("SAP PI access required")
break
case "SAP ECP":
assigneIdList.add("User3")
summariesList.add("SAP ECP access for new hire")
descriptionList.add("SAP ECP access required")
break
}
}

 

1 answer

0 votes
Stefano Galati March 12, 2020

Hello @Jh 

try with this code

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue

def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def userManager = ComponentAccessor.getUserManager()
def issueFactory = ComponentAccessor.getIssueFactory()
def subTaskManager = ComponentAccessor.getSubTaskManager()
def customfieldManager = ComponentAccessor.getCustomFieldManager()
def constantManager = ComponentAccessor.getConstantsManager()
def issueManager = ComponentAccessor.getIssueManager()

def customField = customfieldManager.getCustomFieldObjectByName("SAP Access?")
def selectedValues = issue.getCustomFieldValue(customField)

def userBi = userManager.getUserByName("User BI")
def userPi = userManager.getUserByName("User PI")
def userEcp = userManager.getUserByName("User ECP")

selectedValues.each { value ->
MutableIssue newSubTask = issueFactory.getIssue()
switch(value) {
case "SAP BI":
newSubTask.setSummary("SAP BI access for new hire")
newSubTask.setDescription("SAP BI access required")
newSubTask.setAssignee(userBi)
case "SAP PI":
newSubTask.setSummary("SAP PI access for new hire")
newSubTask.setDescription("SAP PI access required")
newSubTask.setAssignee(userPi)
case "SAP ECP":
newSubTask.setSummary("SAP ECP access for new hire")
newSubTask.setDescription("SAP ECP access required")
newSubTask.setAssignee(userEcp)
}
newSubTask.setParentObject(issue)
newSubTask.setProjectObject(issue.getProjectObject())

newSubTask.setIssueTypeId(constantManager.getAllIssueTypeObjects().find{
it.getName() == "Sub-task" // or the type you want to use
}.id)


Map<String,Object> newIssueParams = ["issue" : newSubTask] as Map<String,Object>
issueManager.createIssueObject(user, newIssueParams)
subTaskManager.createSubTaskIssueLink(issue, newSubTask, user)
}

Suggest an answer

Log in or Sign up to answer
TAGS
atlassian, jira product discovery, jpd premium, product management, idea management, product discovery, jira premium, product planning, atlassian community, product development, roadmap planning, product prioritization, feature management

Introducing Jira Product Discovery Premium ✨

Jira Product Discovery Premium is now available! Get more visibility, control, and support to build products at scale.

Learn more
AUG Leaders

Atlassian Community Events