diff --git a/src/main/java/org/olat/course/run/CourseRuntimeController.java b/src/main/java/org/olat/course/run/CourseRuntimeController.java
index a18734e8254707a7012a94bde3d6bddd2583de1f..47e0615b398ed966d7d61095f8af037cc5bd3016 100644
--- a/src/main/java/org/olat/course/run/CourseRuntimeController.java
+++ b/src/main/java/org/olat/course/run/CourseRuntimeController.java
@@ -303,6 +303,7 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im
 			} else {
 				uce.setCourseReadOnly(Boolean.FALSE);
 			}
+			uce.getScoreAccounting().evaluateAll(true);
 		}
 		
 		courseRightsCache = new HashMap<>();
diff --git a/src/main/java/org/olat/course/run/scoring/AssessmentAccounting.java b/src/main/java/org/olat/course/run/scoring/AssessmentAccounting.java
index 78bbeb407204a94526829022c02f1179a22df036..c0b17d34646dbe1b43d2eab7e448b8366ad57918 100644
--- a/src/main/java/org/olat/course/run/scoring/AssessmentAccounting.java
+++ b/src/main/java/org/olat/course/run/scoring/AssessmentAccounting.java
@@ -134,7 +134,13 @@ public class AssessmentAccounting implements ScoreAccounting {
 	private AssessmentEntry getOrCreateAssessmentEntry(CourseNode courseNode) {
 		AssessmentEntry entry = identToEntry.get(courseNode.getIdent());
 		if (entry == null) {
-			entry = getAssessmentManager().createAssessmentEntry(courseNode, getIdentity(), null);
+			entry = getAssessmentManager().getAssessmentEntry(courseNode, getIdentity());
+			if (entry == null) {
+				entry = getAssessmentManager().createAssessmentEntry(courseNode, getIdentity(), null);
+			}
+			identToEntry.put(entry.getSubIdent(), entry);
+			AssessmentEvaluation assessmentEvaluation = getAssessmentEvaluation(courseNode);
+			courseNodeToEval.put(courseNode, assessmentEvaluation);
 		}
 		return entry;
 	}