I am wondering there is a way to create sub-tasks automatically when issue created.
For example, I create a custom Standard Issue Type, XXX, and Sub-tasks Issue Type YYY and ZZZ. When I create a issue with type XXX, then two sub-tasks with respective issue type YYY and ZZZ will be created automatically.
You could so this easily using Jira Scripting Suite by using post function on issue creation transition on the project's workflow. Sample code:
from com.atlassian.jira.util import ImportUtils
from com.atlassian.jira import ManagerFactory
from com.atlassian.jira.issue import MutableIssue
from com.atlassian.jira import ComponentManager
from com.atlassian.jira.issue.link import DefaultIssueLinkManager
from org.ofbiz.core.entity import GenericValue;
# get issue objects
issueManager = ComponentManager.getInstance().getIssueManager()
issueFactory = ComponentManager.getInstance().getIssueFactory()
authenticationContext = ComponentManager.getInstance().getJiraAuthenticationContext()
subTaskManager = ComponentManager.getInstance().getSubTaskManager();
issueLinkManager = ComponentManager.getInstance().getIssueLinkManager()
customFieldManager = ComponentManager.getInstance().getCustomFieldManager()
userUtil = ComponentManager.getInstance().getUserUtil()
# define subtask
issueObject = issueFactory.getIssue()
issueObject.setProject(issue.getProject())
issueObject.setIssueTypeId("5") # normal subtask
issueObject.setParentId(issue.getId())
# set subtask attributes
issueObject.setFixVersions(issue.getFixVersions())
issueObject.setAffectedVersions(issue.getAffectedVersions())
issueObject.setPriority(issue.getPriority())
issueObject.setSummary("Auto created sub task- "+issue.getSummary())
issueObject.setAssignee(userUtil.getUserObject("joe"))
# Create subtask on JIRA 4.x
# subTask = issueManager.createIssue(authenticationContext.getUser(), issueObject)
# subTaskManager.createSubTaskIssueLink(issue.getGenericValue(), subTask, authenticationContext.getUser())
# Create subtask on JIRA 5 and higher
subTask = issueManager.createIssueObject(authenticationContext.getLoggedInUser(), issueObject)
subTaskManager.createSubTaskIssueLink(issue, subTask, authenticationContext.getLoggedInUser())
# Link parent issue to subtask issueLinkManager.createIssueLink(issue.getId(),issueObject.getId(),10300,1,authenticationContext.getUser())
# Update search indexes
ImportUtils.setIndexIssues(True);
ComponentManager.getInstance().getIndexManager().reIndex(subTask)
ImportUtils.setIndexIssues(False)