diff --git a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
index fde0c6a0c72a48c4b9e69ea76c9cfe88c0fcb8d2..c3a897b7637e373a2b15618cd2092bfdb1a8994e 100644
--- a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
+++ b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
@@ -989,6 +989,9 @@ public class BaseSecurityManager implements BaseSecurity, UserDataDeletable {
 			String newCredentials = Encoder.encrypt(password, currentSalt, algorithm);
 			if(newCredentials.equals(authentication.getCredential())) {
 				//same credentials
+				if(BaseSecurityModule.getDefaultAuthProviderIdentifier().equals(authentication.getProvider())) {
+					authentication = updateAuthentication(authentication);
+				}
 				return authentication;
 			}
 		}
diff --git a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java
index dede2a938cea0d69e8b7a9a3bd73e0fd6087c9fb..d8f13a3b2d3fcd7effcee4dff10f7c3716696c59 100644
--- a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java
+++ b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java
@@ -1186,27 +1186,32 @@ public class QTI21ServiceImpl implements QTI21Service, UserDataDeletable, Initia
 	}
 	
 	private void recordOutcomeVariable(AssessmentTestSession candidateSession, OutcomeVariable outcomeVariable, Map<Identifier,String> outcomes) {
-		Identifier identifier = outcomeVariable.getIdentifier();
-		Value computedValue = outcomeVariable.getComputedValue();
-
-		if (QtiConstants.VARIABLE_DURATION_IDENTIFIER.equals(identifier)) {
-			log.audit(candidateSession.getKey() + " :: " + outcomeVariable.getIdentifier() + " - " + stringifyQtiValue(computedValue));
-		} else if (QTI21Constants.SCORE_IDENTIFIER.equals(identifier)) {
-			if (computedValue instanceof NumberValue) {
-				double score = ((NumberValue) computedValue).doubleValue();
-				candidateSession.setScore(new BigDecimal(score));
-			}
-		} else if (QTI21Constants.PASS_IDENTIFIER.equals(identifier)) {
-			if (computedValue instanceof BooleanValue) {
-				boolean pass = ((BooleanValue) computedValue).booleanValue();
-				candidateSession.setPassed(pass);
-			}
+		if(outcomeVariable.getCardinality() == null) {
+			log.error("Error outcome variable without cardinlaity: " + outcomeVariable, null);
+			return;
 		}
 		
+		Identifier identifier = outcomeVariable.getIdentifier();
 		try {
+			Value computedValue = outcomeVariable.getComputedValue();
+			if (QtiConstants.VARIABLE_DURATION_IDENTIFIER.equals(identifier)) {
+				log.audit(candidateSession.getKey() + " :: " + outcomeVariable.getIdentifier() + " - " + stringifyQtiValue(computedValue));
+			} else if (QTI21Constants.SCORE_IDENTIFIER.equals(identifier)) {
+				if (computedValue instanceof NumberValue) {
+					double score = ((NumberValue) computedValue).doubleValue();
+					candidateSession.setScore(new BigDecimal(score));
+				}
+			} else if (QTI21Constants.PASS_IDENTIFIER.equals(identifier)) {
+				if (computedValue instanceof BooleanValue) {
+					boolean pass = ((BooleanValue) computedValue).booleanValue();
+					candidateSession.setPassed(pass);
+				}
+			}
+			
 			outcomes.put(identifier, stringifyQtiValue(computedValue));
 		} catch (Exception e) {
-			log.error("", e);
+			log.error("Error recording outcome variable: " + identifier, e);
+			log.error("Error recording outcome variable: " + outcomeVariable, null);
 		}
 	}