Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== diff -u -rb89b4282be5db1310440d337d16c232e4e1a46d6 -r49a6db52b3ac5eea1be2f6fe83b99bd5c66f1c68 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision b89b4282be5db1310440d337d16c232e4e1a46d6) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 49a6db52b3ac5eea1be2f6fe83b99bd5c66f1c68) @@ -433,10 +433,18 @@ private ExtUserUseridMap createExtUserUseridMap(ExtServer extServer, String extUsername, String password, String salt, String[] userData, boolean prefix) throws UserInfoValidationException { - String login = prefix ? buildName(extServer.getPrefix(), extUsername) : extUsername; + String email = userData[11]; + String loginBase = extUsername; + // in LTI Advantage external user ID does not need to match LAMS login + if (!extUsername.equals(email) && StringUtils.isNotBlank(email) + && StringUtils.isNotBlank(extServer.getUserIdParameterName()) + && extServer.getUserIdParameterName().strip().equalsIgnoreCase("email")) { + loginBase = email.strip(); + } + + String login = prefix ? buildName(extServer.getPrefix(), loginBase) : loginBase; String firstName = userData[1]; String lastName = userData[2]; - String email = userData[11]; // login validation if (StringUtils.isBlank(login)) {