Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Scriptrunner and Issue Security Levels

Marc Minten _EVS_
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.
February 20, 2018

I want to automate/set the Issue Security Level from with a groovy script (in a listener script, based on some other info in the issue).

Next code seems to work:

...
mutableIssue.setSecurityLevelId(issueSecurityLevelId)
issueManager.updateIssue(securityUser, mutableIssue, EventDispatchOption.DO_NOT_DISPATCH, false)
...

where issueSecurityLevelId is the id of a Issue Security Level that is in a scheme associated with the project the issue is in. And securityUser is a user that has the rights in the project to set the Issue Security Level.

For my test I hard coded the Issue Security Level id.

But my question: how to find the issue Security Levels that can be used with the current project ? Or how to get the Issue Security Scheme associated with the project, and how to get the Issue Security Levels in the Scheme ?

1 answer

1 accepted

Suggest an answer

Log in or Sign up to answer
2 votes
Answer accepted
Thanos Batagiannis _Adaptavist_
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.
February 26, 2018

Hi Marc, 

Hopefully the following will help 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.security.IssueSecurityLevelManager
import com.atlassian.jira.issue.security.IssueSecuritySchemeManager

def issueSecuritySchemeManager = ComponentAccessor.getComponent(IssueSecuritySchemeManager)
def issueSecurityLevelManager = ComponentAccessor.getComponent(IssueSecurityLevelManager)

def schemeFromName = issueSecuritySchemeManager.getSchemeObjects().find { it.name == "Name of the Scheme" }
def schemeFromProject = issueSecuritySchemeManager.getSchemeFor(ComponentAccessor.projectManager.getProjectByCurrentKey("ATG"))

def securityLvl = issueSecurityLevelManager.getIssueSecurityLevels(schemeFromName.id).find { it ->
it.name == "Security Level A"
}?.id

 Let me know if you have any more questions,

Regards, Thanos

Marc Minten _EVS_
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.
February 26, 2018

Hi Thanos,

Thanks for your answer.I was missing the method issueSecuritySchemeManager.getSchemeFor(Project) !

This indeed solves my problem!

Marc

Aaron Whigham October 23, 2020

Hi Thanos,

 

I need to do the same thing here but in Scriptrunner Cloud version. I cannot find documentation on how to set "Issue Level Security" using a Listener in Scriptrunner Cloud.

 

Respectfully,

 

Aaorn

TAGS
AUG Leaders

Atlassian Community Events