You're on your way to the next level! Join the Kudos program to earn points and save your progress.
Level 1: Seed
25 / 150 points
Next: Root
1 badge earned
Challenges come and go, but your rewards stay with you. Do more to earn more!
What goes around comes around! Share the love by gifting kudos to your peers.
Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!
Join now to unlock these features and more
The Atlassian Community can help you and your team get more value out of Atlassian products and practices.
There are 5 issue types in use in a project.
Now I want the issue-type Problem to be selected only by users in the project role Coordinator when creating. The project role Coordinator therefore has a choice of 5.
All other users should not be given Problem as a choice and therefore only the other 4.
I solved this with the behavior below.
But the disadvantage of this is that if an issue type is added to a project, it must be remembered that the behavior is behind it.
Can I modify the script to be specific to Problem?
Regards, Marco Brundel
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.security.roles.ProjectRoleManager
import static com.atlassian.jira.issue.IssueFieldConstants.ISSUE_TYPE
def projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager)
def allIssueTypes = ComponentAccessor.constantsManager.allIssueTypeObjects
def user = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def issueTypeField = getFieldById(ISSUE_TYPE)
def remoteUsersRoles = projectRoleManager.getProjectRoles(user, issueContext.projectObject)*.name
def availableIssueTypes = []
if ("Coordinator" in remoteUsersRoles) {
availableIssueTypes.addAll(allIssueTypes.findAll { it.name in ["Change", "Incident","Problem","Question","Service Request"] })
}
else {
availableIssueTypes.addAll(allIssueTypes.findAll { it.name in ["Change", "Incident","Question","Service Request"] })
}
issueTypeField.setFieldOptions(availableIssueTypes)
You can use removeAll() to remove an item from a list in groovy.
Use getIssueTypes() from the project object in the context to get the list of available issue types and remove the issue type with name "Problem", if condition is met.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.security.roles.ProjectRoleManager
import static com.atlassian.jira.issue.IssueFieldConstants.ISSUE_TYPE
def projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager)
def issueTypes = issueContext.projectObject.getIssueTypes()
def user = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def issueTypeField = getFieldById(ISSUE_TYPE)
def remoteUsersRoles = projectRoleManager.getProjectRoles(user, issueContext.projectObject)*.name
def isCoordinator = "Coordinators" in remoteUsersRoles
if (!isCoordinator) {
issueTypes.removeAll(issueTypes.findAll { it.name in ["Problem"] })
issueTypeField.setFieldOptions(issueTypes)
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.