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

Earn badges and make progress

You're on your way to the next level! Join the Kudos program to earn points and save your progress.

Deleted user Avatar
Deleted user

Level 1: Seed

25 / 150 points

Next: Root

Avatar

1 badge earned

Collect

Participate in fun challenges

Challenges come and go, but your rewards stay with you. Do more to earn more!

Challenges
Coins

Gift kudos to your peers

What goes around comes around! Share the love by gifting kudos to your peers.

Recognition
Ribbon

Rise up in the ranks

Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!

Leaderboard

Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,456,416
Community Members
 
Community Events
176
Community Groups

How to Bulk Change Permission Schemes?

Edited

I am looking at migrating around 75 Projects from an existing Permission scheme into a new Permission scheme. Is there any way to change them in a bulk operation rather than going into each existing project & changing the permission scheme it is associated with?

3 answers

1 accepted

0 votes
Answer accepted
Moses Thomas Community Leader May 29, 2018

@Zachary SinghWe have suggestion such as  this  register to  Atlassian so  for now you  can't do  it   base on the API. https://jira.atlassian.com/browse/JRACLOUD-37941

 but you  can try to  use this plugin i believe is possible

https://bobswift.atlassian.net/wiki/spaces/JCLI/pages/91881524/Documentation#Documentation-updateProject

 

I don't  have the exact  query  using this  plugin yet.

 

Best!

@Zachary Singh Did you resolve the issue? If yes, please help me out how to do it, I was in the same boat. 

@niranjan I wasn't able to do so with the plugin provide, so I ended up manually doing so. 

@Zachary Singh @niranjan  anyone please help here if it can be done using REST call ?

@Zachary Singh@niranjan@Narendra Kumar I am trying to accomplish the same for 100+ projects. Did anyone find an easy solution yet? I read about REST or had the idea of Scriptrunner, but I am not sure that this can be achieved easily.

Hi @Bernhard Kirschner  @niranjan  @Zachary Singh I've written script that will help you to change the permission scheme for multiple projects in bulk. 

Please find this as - 

java.util.ArrayList allProjectKeys = ['A','B','C','D']
for( projKey in allProjectKeys){
def result2 = put('/rest/api/2/project/'+ projKey +'/permissionscheme')
.header('Content-Type', 'application/json')
.body([
id: 111111        // ID for new permission scheme
])
.asString()

}

 

Run the above script in script-runner . Thanks!

Like # people like this

Hi @Narendra Kumar 

Can you provide me the script that should be working in Scriptrunner?

The above one is not complete I believe?

Thanks!

Hi @Wim Abts  the above script should run. You've to define the ArrayList for your project and just apply the loop and Put call.

First try to run for 4-5 projects to change the permission scheme. Let us know what error you're getting. Thanks!

Hi @Narendra Kumar 

 

This is the  error I get when running the script in the Scriptrunner console:

 

2020-11-12 09:07:50,757 ERROR [common.UserScriptEndpoint]: ************************************************************************************* 2020-11-12 09:07:50,757 ERROR [common.UserScriptEndpoint]: Script console script failed: groovy.lang.MissingMethodException: No signature of method: org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.put() is applicable for argument types: (String) values: [/rest/api/2/project/HELP/permissionscheme] Possible solutions: put(java.lang.String, java.lang.Object), get(java.lang.String), putAt(java.lang.String, java.lang.Object), wait(), dump(), any() at Script56.run(Script56.groovy:3)

Here is the working code, folks!! It perfectly works.

*Just copy and paste* in your Script Runner's Script Console. Replace the below Project keys with your list (you can put up to *50 Project keys in one go*.. it processed first 50 keys, when I added 75 keys) and replace the Target Permission Scheme name.
====================

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.Project

def list = ["Proj Key 1", "Proj Key 2", "Proj Key 3", "Proj Key 4"]

for(item in list){
def project = ComponentAccessor.getProjectManager().getProjectByCurrentKey(item)

log.warn("Project is:"+project)

String permissionScheme = "Target Permission Scheme"

ComponentAccessor.getPermissionSchemeManager().removeSchemesFromProject(project)
ComponentAccessor.getPermissionSchemeManager().addSchemeToProject(project, ComponentAccessor.getPermissionSchemeManager().getSchemeObject(permissionScheme))
}

This really works with latest script runner plugin as well. Is there a way we can pass .txt file in the def list. ?

@Narendra Kumar 

 

Just wanted to say a big thank you for your script. I just moved 400+ projects to a different permission scheme in about 30mins. This would have taken me hours if I had to do it manually one by one. 

 

Thank you!!

Hi @Hoc

It will be great if you share complete script for this.

Thanks in advance.

Like Narendra Kumar likes this

Hi @Amar Ghag 

 

The script was already provided by Narendra Kumar above.

 

Thanks!

Like Narendra Kumar likes this

Hi @Hoc 

 

I have tried that script but its throws me an error "Cannot find matching method".

Using below script in console: 

import java.util.ArrayList
import groovy.lang.Closure
import java.lang.String


ArrayList<String> allProjectKeys = new ArrayList<String>();
Arrays.asList('A','B');
for( projKey in allProjectKeys)

{
def result2 = put('/rest/api/2/project/'+ projKey +'/permissionscheme')
.header('Content-Type', 'application/json')
.body([
id::12302]).asString()
}

Error :

error.png

------------------------------------------------------------------

Hey,

 

All I did was copy the original script. The only thing I did was add in the project keys and the project id that were unique to my case. 

 

Is that what u did?

Hi Hoc,

 

Yes , earlier I used same code with my project keys and permission scheme ID , same error I got.

After that i have added arrays separately , still same error.

Thanks 

Hey @Amar Ghag 

 

Apologies I didnt see your response. 

 

I believe you're right. I had to reinstall the app to run the script and it no longer works for me. Although I got a different error message than yourself.

In the past I just replaced the project key and permission scheme id with my one

 

Perhaps @Narendra Kumar can help you?

Snip20210521_10.pngSnip20210521_11.png

Hi @Hoc  can you ignore it and run the script? Sometimes, static time error won't stop you to do your work .

If this don't work, just change the Arraylist declaration in Groovy. 

Let me know how it works for you. Thanks!

Regards,
Narendra

Suggest an answer

Log in or Sign up to answer
TAGS

Atlassian Community Events