Hi
One of our use case, We need to update the all confluence users email addresses. I was trying to implement it through script, but somehow its not working. I was tried with UserAccessor & PersonalInformationManager services and its failing.
com.atlassian.user.User usr = (com.atlassian.user.User)userManager.getUser("suressak");
String email = "sureshsakhare@xxxx.com";
usr.setEmail(email);
userAccessor.saveUser(usr)
return "updated"com.atlassian.user.User user = (com.atlassian.user.User)userAccessor.getUser("suressak");
if(personalInformationManager.hasPersonalInformation("suressak")){
PersonalInformation personalInfo = personalInformationManager.getOrCreatePersonalInformation(user);
personalInfo.setEmail("sureshsakhare@xxx.com")
personalInformationManager.savePersonalInformation(personalInfo,personalInformationManager.getOrCreatePersonalInformation(usr));
return "updated"
}
Can you help on this? How I can achieve it?
Confluence Data center version : 6.6.11.
We are also using scriptrunner plugin.
Thanks in advanced !!!
importcom.atlassian.sal.api.component.ComponentLocatorimportorg.apache.log4j.Levelimportorg.apache.log4j.Loggerimportcom.atlassian.user.Userimportcom.atlassian.confluence.user.UserAccessorimportcom.atlassian.confluence.user.ConfluenceUserimportcom.atlassian.user.impl.DefaultUserLogger log = Logger.getLogger("com.xxx.updateusers")log.setLevel(Level.ALL)try{log.info("<------------------------------ User update activity started -------------------------------------------->");File file =newFile('/confluence-sb-uat/shared-home/scripts/azure_confluence_users.csv')def csvMapList = []file.eachLine { line ->def columns = line.split(",")def tmpMap = [:]tmpMap.putAt("original_username", columns[0])tmpMap.putAt("new_username", columns[1])tmpMap.putAt("original_email", columns[2])tmpMap.putAt("new_email", columns[3])csvMapList.add(tmpMap)}finalString stringConstant ="New";csvMapList.each { map ->try{String originalUserName = map.getAt("original_username")String newUserName = map.getAt("new_username")String originalEmail = map.getAt("original_email")String newEmail = map.getAt("new_email")log.info(originalUserName+" : "+newUserName+" : "+originalEmail+" : "+newEmail);UserAccessor userAccessor = ComponentLocator.getComponent(UserAccessor)if(userAccessor.exists(originalUserName)){if(userAccessor.exists(newUserName)){String renameNewUser = newUserName + stringConstant;String renameEmail = newEmail + stringConstant;/*Rename the new user's username & email*/ConfluenceUser usr = userAccessor.getUserByName(newUserName);finalDefaultUser mNewUser =newDefaultUser((User) usr);mNewUser.setEmail(renameEmail);userAccessor.saveUser((User)mNewUser);userAccessor.renameUser(usr,renameNewUser);/*disabled new user*/userAccessor.deactivateUser((com.atlassian.user.User) userAccessor.getUserByName(renameNewUser));/*Update originalUser with New user's username & Email*/try{ConfluenceUser originalUser = userAccessor.getUserByName(originalUserName);finalDefaultUser mOriginalUser =newDefaultUser((User) originalUser);mOriginalUser.setEmail(newEmail);userAccessor.saveUser((User)mOriginalUser);userAccessor.renameUser(originalUser,newUserName);log.info(originalUserName+" :Old user updated successfully with new user's username:"+newUserName+" & email:"+newEmail);}catch(e){log.error("Something went wrong while updating the old user. Rollbacking new user rename operation. User:"+newUserName);ConfluenceUser usrRollback = userAccessor.getUserByName(renameNewUser);userAccessor.reactivateUser((com.atlassian.user.User) usrRollback);finalDefaultUser mNewUserRollback =newDefaultUser((User) usrRollback);mNewUserRollback.setEmail(newEmail);userAccessor.saveUser((User)mNewUserRollback);userAccessor.renameUser(usrRollback,newUserName);}}else{log.warn("New user not created yet. We are skiping the user update action for user:"+originalUserName);}}else{log.warn("user not found:"+originalUserName);}}catch(e){log.warn("Something went wrong while updating the user : "+map.getAt("original_username")+" due to "+e.getMessage());}}log.info("<------------------------------ User update activity end -------------------------------------------->");}catch(e){log.error("Something went wrong while updating the user "+e);}
I tried it successfully. This may help someone.
Hi all, this script is now available in our script library for ScriptRunner for Confluence Server/DC (tested by our engineers).
Feel free to copy or customise it as you wish https://library.adaptavist.com/entity/update-user-emails-in-bulk
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.