How to create issues in jira programmatically inside a listener?

Shagufta Gurmukhdas November 7, 2016

I want to programmatically create issues and assign, inside a listener, for example, a VersionCreateEvent. How to do that? Will that be possible with the REST API?

1 answer

1 vote
Vasiliy Zverev
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.
November 7, 2016

Here code exmple for Java API. Try to adopt it for listener

package IssueCreation

import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.issue.index.IssueIndexManager
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.user.util.UserManager
import com.atlassian.jira.util.ErrorCollection

/**
 * Created by VZverev on 10.06.2016.
 */

//Issue issue = null;

IssueService issueService = ComponentAccessor.getIssueService();
IssueInputParameters inputParameters = issueService.newIssueInputParameters();

UserManager userManager = ComponentAccessor.getUserManager();

inputParameters
        .setProjectId(issue.getProjectId())
        .setIssueTypeId("11504")
        .setReporterId(ComponentAccessor.getJiraAuthenticationContext().getUser().getName())
        .setSummary(issue.getSummary())
        .setAssigneeId(userManager.getUserByKey(issue.getAssigneeId()).getName())

ApplicationUser curUser = ComponentAccessor.getJiraAuthenticationContext().getUser();

IssueService.CreateValidationResult createValidationResult = issueService.validateCreate(curUser, inputParameters)

if(!createValidationResult.isValid()){
    ErrorCollection errorCollection = createValidationResult.getErrorCollection();
    return errorCollection.toString()
}
else{
    IssueService.IssueResult createResult = issueService.create(curUser, createValidationResult)
    IssueIndexManager issueIndexManager = ComponentAccessor.getIssueIndexManager();
    issueIndexManager.reIndex(createResult.getIssue())
}
Shagufta Gurmukhdas November 7, 2016

 

 @Vasiliy Zverev , Writing the same inside an event listener would work, right?

Vasiliy Zverev
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.
November 7, 2016

@Shagufta Gurmukhdas, yes it should. 

Note that all values are set into inputParameters object.

Suggest an answer

Log in or Sign up to answer