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

It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

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?

2 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 Tiemco de Jong likes 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)

@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
Community showcase
Published in Apps & Integrations

🍻🍂Apptoberfest Update: Upcoming Virtual Events 🎉

Hello Community! I hope you've been enjoying the 🍂Apptoberfestivities🍂 (I know I have!) The event is heating up next week with a series of virtual events that we're calling the 🍻🍂Partner App ...

134 views 1 10
Read article

Community Events

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

Find an event

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

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you