Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Scriptrunner - Add multi users into a Group

Qi Jiang
Contributor
February 20, 2018

I want to add multi user into one group, So I came with script below:

 

import com.atlassian.seraph.auth.DefaultAuthenticator
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.ApplicationUser
import java.util.ArrayList
import java.util.List
import java.lang.String


def userUtil = ComponentAccessor.getUserUtil()
def groupManager = ComponentAccessor.getGroupManager()
def group = groupManager.getGroup("Group1")
def user
def names = "A,B,C".split(",")
def arrayLength = names.length
for (def i =0; i < arrayLength; i++){
   user = userUtil.getUser(names[i])
  groupManager.addUserToGroup(user,group)
}

But I got few error such as :

CannotCreateTransactionException: Could not create DirContext instance for transaction;

 

Please help me on this:

2 answers

1 accepted

0 votes
Answer accepted
Ivan Tovbin
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

Try this:

import com.atlassian.jira.component.ComponentAccessor

def grpMgr = ComponentAccessor.getGroupManager()
def usrMgr = ComponentAccessor.getUserManager()
def targetGroup = grpMgr.getGroup("group name")
ArrayList usersToAdd = new ArrayList()
usersToAdd.addAll("usernameA","usernameB","usernameC")

for (int i = 0; i < usersToAdd.size(); i++){
grpMgr.addUserToGroup(usrMgr.getUserByName(usersToAdd[i]), targetGroup)
}
Qi Jiang
Contributor
February 20, 2018

@Ivan Tovbin

I did try, get error as below.

Can not find matching method at line 10 column 3, 25.

Ivan Tovbin
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

@Qi Jiang

I imagine it's the static type checking which is not always accurate in ScriptRunner as per this doc. So in this very case you can simply ignore these errors. I've just tested it in my instance and it works just fine even though I get the same error message as you.

Qi Jiang
Contributor
February 21, 2018

@Ivan Tovbin

i got error as below:

org.springframework.transaction.CannotCreateTransactionException: Could not create DirContext instance for transaction; nested exception is org.springframework.ldap.CommunicationException

Ivan Tovbin
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 21, 2018

@Qi Jiang

Check out this KB article.

Qi Jiang
Contributor
August 27, 2018

@Ivan Tovbin

Hey Ivan,

I am starting error below:Can not find matching method com.atlassian.jira.user.UserManager#getUserByName(E)

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.ApplicationUser

def groupManager = ComponentAccessor.getGroupManager()
def usrMgr = ComponentAccessor.getUserManager()
ArrayList usersToAdd = new ArrayList()
def group = groupManager.getGroup("ABC_Users")
usersToAdd.addAll("A","B","C")
def user

for (int i = 0; i < usersToAdd.size(); i++){
user = (ApplicationUser) usrMgr.getUserByName(usersToAdd[i])
groupManager.addUserToGroup(user,group)
}

 

1 vote
Vijay Sv
Contributor
May 5, 2021

Try This....

 

import com.atlassian.jira.component.ComponentAccessor


def userUtil = ComponentAccessor.userUtil
def userManager = ComponentAccessor.userManager
final String groupName = "GROUPA" // the group you want to add users
def group = ComponentAccessor.groupManager.getGroup(groupName) // user names of the users to add
final List<String> userToAdd = ["USR1", "USR2", "USR3"]


userToAdd.each {
def usertoadd = userManager.getUserByName(it)
if (!usertoadd) {
log.warn("User: $userToAdd doesn't exist")
return

}

if (ComponentAccessor.getGroupManager().getGroupsForUser(usertoadd).contains(group)) {
log.warn("User: $usertoadd.username already in the group: $groupName")
return

}

if(!group) {
log.warn("Group: $groupName doesn't exist")

} else {

userUtil.addUserToGroup(group, usertoadd)
log.warn("User: $usertoadd.username added to the $groupName")

}

}

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events