Under Community Review

Bulk upload for adding Review Space users

As part of our onboarding process, we work with a large number of Review Space reviewers. To streamline this, we’d like to request an enhancement that allows us to bulk upload Review Space users from a comma-separated file (CSV).

For example, the file would include the following columns:

  • Display Name
  • Username
  • Password (this would be empty for us, as we use SSO)
  • User Group
  • User Roles
  • Language
  • Email
  • User Team
  • User Type
  • External ID

This functionality would greatly improve efficiency and reduce manual setup time during onboarding.

Thank you for considering this request! Please let us know if you need any additional details.

Best,

Christina

  • Hi Christina! Thanks for posting this idea!

    While we are exploring interest from the community you can use this script, but please note that it is not a productized solution and past only basic testing flow.
    You may need to adjust it slightly for your needs. For example, User team is not an OOTB field, so it's not included in the script

    Here's an example of the list first:
    Display Name; Username; Password; User Group; User Roles; Language; Email; User Type; External ID
    User1 DN; User1; ; First Department; Reviewer; en; user1@your.company; Internal;
    User2 DN; User2; ; Second Department, Third Department; Reviewer, Author; fr; user2@your.company; Internal; User2

    Note that I used semicolon as a separator because I used commas when there is more than one Group or Role for a user.

    $WsBaseUrl = "https://your.server/ISHWS"
    $ishSession = New-IshSession -WsBaseUrl $WsBaseUrl -ishUserName "name_of_administrator_user" -ishPassword "administrator_password"
    
    $userGroupObjects =  Find-IshUserGroup -RequestedMetadata (Set-IshRequestedMetadataField -IshSession $ishSession -Name "FISHUSERGROUPNAME" | Set-IshRequestedMetadataField -IshSession $ishSession -Name "FISHUSERGROUPNAME")
    $userRoleObjects = Find-IshUserRole -IshSession $ishSession -RequestedMetadata (Set-IshRequestedMetadataField -IshSession $ishSession -Name "FISHUSERROLENAME")
    $languageObjects = Get-IshLovValue -IshSession $ishSession -LovId DLANGUAGE
    
    Function Get-UserGroups([string]$listOfUserGroups)
    {
        $userGroups = $listOfUserGroups -split ',' | ForEach-Object { $_.Trim() }
    
        $userGroupsIshRefs = foreach ($userGroup in $userGroups) {
            $match = $userGroupObjects | Where-Object { $_.fishusergroupname -eq $userGroup }
            if ($match) { $match.IshRef }
        }
    
        return ($userGroupsIshRefs -join ', ')
    }
    
    Function Get-UserRoles([string]$listOfUserRoles)
    {
        $userRoles = $listOfUserRoles -split ',' | ForEach-Object { $_.Trim() }
    
        $userRolesIshRefs = foreach ($userRole in $userRoles) {
            $match = $userRoleObjects | Where-Object { $_.fishuserrolename -eq $userRole }
            if ($match) { $match.IshRef }
        }
    
        return ($userRolesIshRefs -join ', ')
    }
    
    Function CreateUser(
        [string]$displayName,
        [string]$name,
        [string]$password,
        [string]$group,
        [string]$roles,
        [string]$language,
        [string]$email,
        [string]$type,
        [string]$externalId)
    {
        $groupIshRefs = Get-UserGroups -listOfGroups.$user."User Group"
        $rolesIshRefs = Get-UserRoles -listOfRoles.$user."User Roles"
        $languageObject = $languages | Where-Object { $_.Label -eq $language }
        $userWorkingLanguage = $languageObject.IshRef
    
    	$metadata = Set-IshMetadataField -IshSession $ishSession -Name FISHUSERDISPLAYNAME -Level None -Value $displayName `
                     | Set-IshMetadataField -IshSession $ishSession -Name PASSWORD -Level None -Value $password `
                     | Set-IshMetadataField -IshSession $ishSession -Name FUSERGROUP -Level None -ValueType Element -Value $groupIshRefs `
                     | Set-IshMetadataField -IshSession $ishSession -Name FISHUSERROLES -Level None -ValueType Element -Value $rolesIshRefs `
                     | Set-IshMetadataField -IshSession $ishSession -Name FISHUSERLANGUAGE -Level None -ValueType Element -Value $userWorkingLanguage `
                     | Set-IshMetadataField -IshSession $ishSession -Name FISHEMAIL -Level None -Value $email `
                     | Set-IshMetadataField -IshSession $ishSession -Name FISHUSERTYPE -Level None -Value $type `
                     | Set-IshMetadataField -IshSession $ishSession -Name FISHEXTERNALID -Level None -Value $externalId
    
    	$user = Add-IshUser -IshSession $ishSession -Name $name -Metadata $metadata
    }
    
    $users = Get-Content "c:\file_path\users.csv" | ConvertFrom-Csv -Delimiter ";"
    foreach ($user in $users) { 
        CreateUser `
             -displayName $user."Display Name" `
             -name $user.Username `
             -password $user.Password `
             -userGroup $user."User Group" `
             -userRole $user."User Roles" `
             -language $user.Language `
             -email $user.Email `
             -type $user."User Type" `
             -externalId $user."External ID"
    }


    I hope this could be helpful for you!