Post Function - Deleting all Sub-Tasks of specific type

Hello,

since it is not possible to set separate delete permissions for Sub-Tasks, I have to look into other solutions so I came upon this idea https://devblog.xing.com/qa/deleting-issues-with-jira-post-functions/, but I am having hard time adjusting it to my needs since it's about deleting current Issue.

If nobody can help with deletion of specific Sub-Task issue type, delete all Sub-tasks via Post Function in the current ticket would already help a lot! Anyone has experience with it?

Cheers,

Rok

3 answers

1 accepted

Hi Rok

The code below will DELETE ALL the subtasks of the parent issue. All the sub tasks have issue type SubTask therefore you have to find another condition in order to specify which you want to delete. For more information about the issue deletion functions: https://docs.atlassian.com/jira/latest/com/atlassian/jira/issue/IssueManager.html

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption
// for JIRA v6.*
def user = ComponentAccessor.getJiraAuthenticationContext().user.directoryUser
// for JIRA v7.*
// def user = ComponentAccessor.getJiraAuthenticationContext().user
def issueManager = ComponentAccessor.getIssueManager()
// will return a Collection<Issue> with all the subtasks of the current issue
def subTasksList = issue.getSubTaskObjects()
for (subTask in subTasksList) {
	// add a condition here if you DO NOT want to delete all the sub-tasks
	issueManager.deleteIssue(user, subTask, EventDispatchOption.ISSUE_DELETED, false)
}

Hope that script gives you an idea

Kind regards,

Thanos

Hi Rok, Which version of JIRA ?

I used the code for removing subtasks (same like https://www.adaptavist.com/doco/display/SFJ/Delete+all+subtasks+of+a+parent+issue+as+a+workflow+post+function), but I have the problem, that my Index isn't correct after deleting subtasks.

 

If I search for the Issue-Title (Summary), there is still an invalid result in the search-result.

So I have to start a manual Background reindex to get correct results.

 

Any Ideas?

We have the same problem, using the following code to delete all subtasks of an issue:

Issue currentIssue = issue as Issue
Collection<Issue> currentIssueSubTasks = currentIssue.getSubTaskObjects()
if (currentIssueSubTasks) {
    ApplicationUser currentApplicationUser = ComponentAccessor.getJiraAuthenticationContext().getUser()
    User currentUser = ApplicationUsers.toDirectoryUser(currentApplicationUser)
    IssueService issueService = ComponentAccessor.getIssueService()
    for (currentIssueSubTask in currentIssueSubTasks) {
        DeleteValidationResult deleteValidationResult = issueService.validateDelete(currentUser, currentIssueSubTask.getId())
        if (deleteValidationResult.isValid()) {
            issueService.delete(currentUser, deleteValidationResult)
        } else {
            log.debug(deleteValidationResult.getErrorCollection())
        }
    }
}

SOMETIMES, the deleted subtasks are still visible on the agile boards and if you click on them you get a popup stating that "Error   Issue Does Not Exist"...

Suggest an answer

Log in or Join to answer
Community showcase
Emilee Spencer
Published yesterday in Marketplace Apps

Marketplace Spotlight: DeepAffects

Hello Atlassian Community! My name is Emilee, and I’m a Product Marketing Manager for the Marketplace team. Starting with this post, I'm kicking off a monthly series of Spotlights to highlight Ma...

40 views 0 3
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you
Atlassian Team Tour

Join us on the Team Tour

We're bringing product updates and pro tips on teamwork to ten cities around the world.

Save your spot