@Override public void beginActivation(String email, String password, String clientId, String redirectUri) { passwordValidator.validate(password); String subject = buildSubjectText(); try { ScimUser scimUser = createUser(email, password, OriginKeys.UAA); generateAndSendCode(email, clientId, subject, scimUser.getId(), redirectUri); } catch (ScimResourceAlreadyExistsException e) { List<ScimUser> users = scimUserProvisioning.query("userName eq \""+email+"\" and origin eq \""+ OriginKeys.UAA+"\"", IdentityZoneHolder.get().getId()); try { if (users.size()>0) { if (users.get(0).isVerified()) { throw new UaaException("User already active.", HttpStatus.CONFLICT.value()); } else { generateAndSendCode(email, clientId, subject, users.get(0).getId(), redirectUri); } } } catch (IOException ioe) { ioe.printStackTrace(); } } catch (IOException e) { logger.error("Exception raised while creating account activation email for " + email, e); } }