I would like to pull a list of all project roles where the "staff" group is located and add the "Employees" group into the role as well.
Where do I even start? I'm hoping for a groovy solution to run in Script Console.
Hi Michael,
First thing to note is that role membership can vary from project to project. So you can't just say "Give me the names of all project roles, where "Staff" group is located" simply because this group can be in, say, "Developers" role in Project A but not in this very role in Project B.
With that in mind, assuming you want to give your "Employees" group exactly the same role membership as your "Staff" group the correct way to do this would be to check every role membership of every project and if your "Staff" group is found in any role/s in a given project add your "Employees" group to the same role/s in those projects.
And yes, this can be done using scriptrunner script console. Let me know if you need further help with the code.
Hi Ivan,
Yes. I need help with the code to implement this.
"First thing to note is that role membership can vary from project to project. So you can't just say "Give me the names of all project roles, where "Staff" group is located" simply because this group can be in, say, "Developers" role in Project A but not in this very role in Project B. "
--- I am entirely aware that this is the case, that roles changes per project which is why I'm not looking for a list of projects, more so, I would like a list of roles in which "staff" is located within those projects that are meaningful to me.
"With that in mind, assuming you want to give your "Employees" group exactly the same role membership as your "Staff" group the correct way to do this would be to check every role membership of every project and if your "Staff" group is found in any role/s in a given project add your "Employees" group to the same role/s in those projects."
--- This is exactly what I am looking to script.
Ok then, let's get this show on the road, shall we? I'm going to assume your Jira version is 7.x. Use this code to give your "Employees" group the exact same role membership as your "Staff" group:
import com.atlassian.jira.bc.projectroles.ProjectRoleServiceimport com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.security.roles.ProjectRoleimport com.atlassian.jira.util.SimpleErrorCollectionimport com.atlassian.jira.security.roles.ProjectRoleManagerimport com.atlassian.jira.project.ProjectManagerimport com.atlassian.jira.project.Projectimport com.atlassian.jira.security.roles.ProjectRoleActorProjectRoleService projectRoleService = ComponentAccessor.getComponent(ProjectRoleService);ProjectRoleManager projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager);ProjectManager projectManager = ComponentAccessor.getComponent(ProjectManager);List<Project> projects = projectManager.getProjects();Collection<ProjectRole> projectRoles = projectRoleManager.getProjectRoles();SimpleErrorCollection errorCollection = new SimpleErrorCollection();Collection<String> actorCollection = new ArrayList<String>();actorCollection.add("Employees");projects.each{project -> projectRoles.each{role -> Set roleActors = projectRoleManager.getProjectRoleActors(role, project).getRoleActorsByType("atlassian-group-role-actor"); if (roleActors.size() > 0){ roleActors.each{group -> if (group.getDescriptor() == "Staff"){ projectRoleService.addActorsToProjectRole(actorCollection, role, project, ProjectRoleActor.GROUP_ROLE_ACTOR_TYPE, errorCollection) } } } }}
Hi ivan,
This script is working perfectly. My requirement is that to replace the group with existing one.For Example: replace the Staff group with employee.
or could it be to remove the staff group and add one or more group where staff group is existing can you please help me out how i can do it.
your effort will be much appreciated.
Thanks
BR,
Adnan Haider
Hello @Adnan
Did you find a script to your issue below ?
Burma Rajashekar
Hi @Ivan Tovbin
It looks like you're new here. Sign in or register to get started.