Possible to automatically create stories when an epic is created (ScriptRunner)

Wes September 10, 2018

Hello All,

I'd like to know if it is possible through ScriptRunner or another addon to easily set some rules to create stores. Something like this:

Let's say on Epic, there is a custom field with A, B, and C

If Epic is created and custom field = A, create story 1, 2, and 3

If Epic is created and custom field = B, create story 4

If Epic is created and custom field = C, create story 5

 

If this is possible, does anyone have an example I could reference?

2 answers

Suggest an answer

Log in or Sign up to answer
0 votes
Orkun Gedik
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 13, 2018

Hello Wes,

I think the following  postfunction script will be helpful for you. Do not forget the place the postfunction to move under the issue created event.

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.fields.CustomField
import org.apache.log4j.Logger

Logger log = Logger.getLogger("Your script name")
log.debug ("Script started")

try {
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def issue = issue

def customField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject("your custom field id")
def customFieldValue = customField.getValue(issue)

switch (customFieldValue){
case "A":
createStory(user, issue, ...); // story1
createStory(user, issue ,...); // story2
createStory(user, issue, ...); // story3
break
case "B":
createStory(user, issue, ...); // story4
break
case "C":
createStory(user, issue, ...); // story5
break
default:
log.error("Invalid input!")
break
}
}catch(Exception e){
log.error(e)
}

private void createStory(user, issue, ...){
MutableIssue newStory = ComponentAccessor.getIssueFactory().getIssue()
newStory.setSummary(...)
newStory.setReporter(...)
newStory.setAssignee(...)
newStory.setParentObject(...)
newStory.setProjectObject(...)
newStory.setIssueTypeId(...)

def inputParameters = ["issue": newStory] as Map<String, Object>
ComponentAccessor.getIssueManager().createIssueObject(user, inputParameters)
ComponentAccessor.getSubTaskManager().createSubTaskIssueLink(issue, newStory, user)
}
0 votes
Milan Chheda [INFOSYSTA]
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 10, 2018

You can use Create on transition add-on. Once this add-on installed, you can go to workflow, and add a post-function which will show you below options:

 

createIssueOnTransition.PNG

You can create issues based on the conditions. Hope this helps.

TAGS
AUG Leaders

Atlassian Community Events