Yes, a simple script using the rename method of Crowd REST API will do. For instance in Groovy:
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
CROWD_SERVER_URL = "http://localhost:8095/crowd"
APPLICATION_NAME = "test"
APPLICATION_PASSWORD = "password"
boolean isEmailAddress(String s){
emailPattern = /[_A-Za-z0-9-]+(.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(.[A-Za-z0-9]+)*(.[A-Za-z]{2,})/
return s ==~ emailPattern
}
def removeEmailDomainFromUsername(String username){
def url = "${CROWD_SERVER_URL}/rest/usermanagement/1/user/rename?username=${URLEncoder.encode(username)}"
def body = JsonOutput.toJson(["new-name":username.substring(0,username.indexOf('@'))]).getBytes('UTF-8')
def connection = new URL(url).openConnection()
connection.setRequestProperty('Authorization', "Basic ${(APPLICATION_NAME + ':' + APPLICATION_PASSWORD).bytes.encodeBase64().toString()}")
connection.setRequestProperty('Content-Type', 'application/json')
connection.setRequestProperty('Accept', 'application/json')
connection.setRequestMethod('POST')
connection.setDoOutput(true)
connection.getOutputStream().write(body)
if (connection.responseCode.equals(200)){
return true
} else return false
}
def searchAllUsers(){
def url = "${CROWD_SERVER_URL}/rest/usermanagement/1/search?entity-type=user"
def connection = new URL(url).openConnection()
connection.setRequestProperty('Authorization', "Basic ${(APPLICATION_NAME + ':' + APPLICATION_PASSWORD).bytes.encodeBase64().toString()}")
connection.setRequestProperty('Accept', 'application/json')
connection.setRequestMethod('GET')
if (connection.responseCode.equals(200)){
def json = connection.inputStream.withCloseable { inStream ->
new JsonSlurper().parse( inStream as InputStream )
}
return json.users.name
} else return []
}
searchAllUsers().each{ username ->
if (isEmailAddress(username)){
println "${username} is an email address. Trying to remove the domain extension..."
if (removeEmailDomainFromUsername(username)){
println "Success!"
} else{
println "Failed to remove domain extension"
}
} else{
println "${username}: nothing to do here"
}
}
Hope this helps!
Bruno
Hi joe,
Out of interest, wondering how removing the domain from the username helps with GDPR compliance when the username is still it’s own field?
Given a persons name is still PII, my understanding is that all this info would still need to comply with GDPR requirements.
thanks!
CCM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
We use crowd for Confluence and JIRA in a public setting. In JIRA, Usernames are exposed when tagging individuals in comments. To avoid this, we intend to convert email based usernames.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Ah rightio - makes sense!
CCM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Awesome! But I would also like to recommend this one https://gmailbulkemail.com/gmail-bulk-email/ if you want cheap & easy version that enables the user to send mass email without complications.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.