Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== diff -u -r334a65882d95c49444f4f71db7c78cf25cae5376 -r9225b20d682774352e82ae8b658ef2f64dc2bebf --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 334a65882d95c49444f4f71db7c78cf25cae5376) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 9225b20d682774352e82ae8b658ef2f64dc2bebf) @@ -690,8 +690,9 @@ final String lessonFinishUrl = server.getLessonFinishUrl(); if (userMark != null && StringUtils.isNotBlank(lessonFinishUrl)) { - Double score = lessonMaxPossibleMark.equals(0L) ? 0 : userMark / lessonMaxPossibleMark; - final String scoreStr = (userMark == null) || lessonMaxPossibleMark.equals(0L) ? "" : score.toString(); + double score = lessonMaxPossibleMark.equals(0L) ? 0 : userMark / lessonMaxPossibleMark; + final String scoreStr = (userMark == null) || lessonMaxPossibleMark.equals(0L) ? "" + : Double.toString(score); final String serverKey = server.getServerid(); final String serverSecret = server.getServerkey(); @@ -1031,12 +1032,20 @@ JsonNode member = membership.get("member"); //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.getUserIdParameterName().equalsIgnoreCase("lis_person_sourcedid") - && lisPersonSourcedid != null && StringUtils.isNotBlank(lisPersonSourcedid.asText()) - ? lisPersonSourcedid.asText() - : member.get("userId").asText(); + String extUserId = member.get("userId").asText(); + String extUserIdParameterName = extServer.getUserIdParameterName(); + // use the same user ID as the server does + if (StringUtils.isNotBlank(extUserIdParameterName)) { + if ("lis_person_sourcedid".equalsIgnoreCase(extUserIdParameterName)) { + extUserIdParameterName = "sourcedId"; + } + JsonNode customExtUserId = member.get(extUserIdParameterName); + if (customExtUserId != null && StringUtils.isNotBlank(customExtUserId.asText())) { + extUserId = customExtUserId.asText(); + } + } + //to address Moodle version 3.7.1 bug String firstName = member.get("givenName") == null ? member.get("giveName").asText() : member.get("givenName").asText();