Is it possible to bulk edit usernames that email addresses to eliminate @emailaddress? this is to ensure GDPR compliance
Hi @Joe Ben Clark
Yes, a simple script using the rename method of Crowd REST API will do. For instance in Groovy:
import groovy.json.JsonSlurperimport groovy.json.JsonOutputCROWD_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
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.
Ah rightio - makes sense!
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.
It looks like you're new here. Sign in or register to get started.