Bulk User Creation

intermediate medium risk User Management

Description

Create multiple users with specific roles and permissions in bulk

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

Boolean

Send 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

user creation bulk roles permissions