Create multiple users with specific roles and permissions in bulk
Bulk User Creation
intermediate medium risk User Management
Description
Prerequisites
- User group definitions
- Role templates
- Email templates for notifications
Parameters
userData
Collection*Collection of user data objects with uid, email, and roles
userGroup
String*Default user group for new users
sendWelcomeEmail
BooleanSend welcome email to new users
Default: true
Script Code
import de.hybris.platform.core.model.user.UserModel
import de.hybris.platform.core.model.user.UserGroupModel
import de.hybris.platform.servicelayer.model.ModelService
import de.hybris.platform.servicelayer.user.UserService
def userData = parameters.userData
def userGroupName = parameters.userGroup
def sendWelcomeEmail = parameters.sendWelcomeEmail ?: true
def errors = []
def createdCount = 0
try {
def userGroup = userService.getUserGroupForUID(userGroupName)
if (!userGroup) {
errors.add("User group '$userGroupName' not found")
return
}
userData.each { userInfo ->
try {
// Check if user already exists
def existingUser = userService.getUserForUID(userInfo.uid)
if (existingUser) {
errors.add("User with UID '$userInfo.uid' already exists")
return
}
// Create new user
def newUser = modelService.create(UserModel.class)
newUser.setUid(userInfo.uid)
newUser.setName(userInfo.name ?: userInfo.uid)
newUser.setEmail(userInfo.email)
newUser.setPassword(userInfo.password ?: 'defaultPassword123')
// Add to user group
userService.addUserToGroup(newUser, userGroup)
// Add specific roles if provided
if (userInfo.roles) {
userInfo.roles.each { roleName ->
def role = userService.getUserGroupForUID(roleName)
if (role) {
userService.addUserToGroup(newUser, role)
}
}
}
modelService.save(newUser)
createdCount++
if (sendWelcomeEmail) {
// Send welcome email logic here
println "Welcome email sent to $userInfo.email"
}
} catch (Exception e) {
errors.add("Error creating user '$userInfo.uid': $e.message")
}
}
println "Created $createdCount users successfully"
if (errors) {
println "Errors encountered:"
errors.each { println " - $it" }
}
} catch (Exception e) {
errors.add("Bulk user creation failed: $e.message")
}Script Information
Author:SAP Commerce Team
Execution Time:3-8 minutes
Rating:4.7/5
Downloads:980
Last Updated:2024-01-12
Version:1.5.0
Tags
tools.groovyScriptLibrary.ui.title
tools.groovyScriptLibrary.ui.subtitle