Create jira sub-task during issue creation time using script runner

 //Description: used for create subtask per component in  If user select coponents and CIP# field value

// Date: 2021-07

import com.atlassian.jira.component.ComponentAccessor

import com.atlassian.jira.issue.Issue

import com.atlassian.jira.issue.IssueInputParametersImpl

import org.apache.log4j.Logger

import com.atlassian.jira.issue.CustomFieldManager

def log = Logger.getLogger("com.acme.workflows")


def ftopor_cip_customField =  ComponentAccessor.getCustomFieldManager().getCustomFieldObject("customfield_20320");

def ftopor_cip_values = (String)issue.getCustomFieldValue(ftopor_cip_customField);


final newLabel = 'create_subtask'


if (!issue.subTask) {

    //log.warn (issue.getComponentObjects().getAt(0)?.getName())

    no_of_componets = issue.getComponentObjects().size()

    if(no_of_componets>0){

        for (i=0; i<no_of_componets; i++){

            createSubtask(issue,issue.getComponentObjects().getAt(i)?.getId(),issue.getComponentObjects().getAt(i)?.getName())

        }

    }

    

}


def createSubtask(Issue parentIssue,component_name,component_name_str) {

    def subTaskManager = ComponentAccessor.subTaskManager

    def asUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser

    def constantsManager = ComponentAccessor.constantsManager

    def issueService = ComponentAccessor.issueService


    def subtaskIssueType = constantsManager.allIssueTypeObjects.findByName('Sub-task')

    def load_cip_customField=  ComponentAccessor.getCustomFieldManager().getCustomFieldObject("customfield_20320");

def issue_cip_values = (String)parentIssue.getCustomFieldValue(load_cip_customField);

def set_subtask_title ='';

if(issue_cip_values!=null){

//set_subtask_title = issue_cip_values+ ' '+parentIssue.getSummary();

set_subtask_title =component_name_str+ ' '+'CIP'+ issue_cip_values;

}else{

//set_subtask_title = parentIssue.getSummary();

set_subtask_title =component_name_str+ ' '+parentIssue.getSummary();

}


    assert subtaskIssueType?.subTask


    def issueInputParameters = new IssueInputParametersImpl()

    issueInputParameters

        .setProjectId(parentIssue.projectId)

        .setIssueTypeId(subtaskIssueType.id)

        .setSummary(set_subtask_title)

.setComponentIds(component_name)

        //.setDescription('A description')

        .setReporterId(asUser.username)


    def createValidationResult = ComponentAccessor.issueService.validateSubTaskCreate(asUser, parentIssue.id, issueInputParameters)

    if (!createValidationResult.valid) {

        log.error createValidationResult.errorCollection

        return

    }

    

    


    def newIssue = issueService.create(asUser, createValidationResult).issue

    subTaskManager.createSubTaskIssueLink(parentIssue, newIssue, asUser)

}


Comments

Popular posts from this blog

About Me

Add Jira field validation using Script runner beheaviour (field value check or unque value setup)