Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== diff -u -r40de3afab4e8d589660daffb6efd6e568e87f8fa -rd2d41bfb7652d3fbcfe21d152af14235eefdcbcb --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 40de3afab4e8d589660daffb6efd6e568e87f8fa) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision d2d41bfb7652d3fbcfe21d152af14235eefdcbcb) @@ -1019,9 +1019,14 @@ for (int i = 0; i < memberships.size(); i++) { JsonNode membership = memberships.get(i); log.debug("membership" + i + ": " + membership.toString()); - JsonNode member = membership.get("member"); - String extUserId = member.get("userId").asText(); + + //get user id using "userId" property, or "sourcedId" if UseAlternativeUseridParameterName option is ON for this LTI server + JsonNode lisPersonSourcedid = member.get("sourcedId"); + String extUserId = extServer.getUseAlternativeUseridParameterName() && lisPersonSourcedid != null + && StringUtils.isNotBlank(lisPersonSourcedid.asText()) ? lisPersonSourcedid.asText() + : member.get("userId").asText(); + //to address Moodle version 3.7.1 bug String firstName = member.get("givenName") == null ? member.get("giveName").asText() : member.get("givenName").asText();