diff --git a/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java b/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java
index d7883a94c7c1c326fef6d9714c52e2318aaa1fe1..97d727777ef9118ca4f94f5245cdd0ed2191ca52 100644
--- a/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java
+++ b/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java
@@ -514,9 +514,7 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre
 		BreadCrumb crumb  = (BreadCrumb)currentLink.getUserObject();
 		if(crumb.getController() == null) {
 			if(crumbIndex - 1 >= 0) {
-				Link parentLink = stack.get(crumbIndex - 1);
-				BreadCrumb parentCrumb  = (BreadCrumb)parentLink.getUserObject();
-				setContent(parentCrumb.getController());
+				setContent(crumbIndex - 1);
 			}
 		} else {
 			setContent(crumb.getController());
diff --git a/src/main/java/org/olat/core/util/pdf/PdfDocument.java b/src/main/java/org/olat/core/util/pdf/PdfDocument.java
index fe4da289e1924ba9f1d15eb3aa3763c640baf4cb..221d8dc3a32513d55269358ad9f6ac1a7510f66a 100644
--- a/src/main/java/org/olat/core/util/pdf/PdfDocument.java
+++ b/src/main/java/org/olat/core/util/pdf/PdfDocument.java
@@ -153,7 +153,7 @@ public class PdfDocument {
                 text = "";
             } else {
                 String subString = text.substring(0, spaceIndex);
-                float size = fontSize * textFont.getStringWidth(subString) / 1000;
+                float size = getStringWidth(subString, textFont, fontSize);
                 if (size > paragraphWidth) {
                     if (lastSpace < 0) // So we have a word longer than the line... draw it anyways
                         lastSpace = spaceIndex;
@@ -179,15 +179,20 @@ public class PdfDocument {
     }
     
     public float getStringWidth(String string, float fontSize)
+    throws IOException {
+    	return getStringWidth(string, font, fontSize);
+    }
+    
+    public float getStringWidth(String string, PDFont textFont, float fontSize)
     throws IOException {
     	if(string == null || string.length() == 0) return 0.0f;
     	
     	try {
 			string = cleanString(string);
-			return fontSize * font.getStringWidth(string) / 1000;
+			return fontSize * textFont.getStringWidth(string) / 1000;
 		} catch (IllegalArgumentException e) {
 			log.error("", e);
-			return getStringEstimatedWidth(string.length(), fontSize);
+			return getStringEstimatedWidth(string.length(), textFont, fontSize);
 		}
     }
     
@@ -199,10 +204,10 @@ public class PdfDocument {
      * @return A width
      * @throws IOException
      */
-    public float getStringEstimatedWidth(int length, float fontSize) throws IOException {
+    public float getStringEstimatedWidth(int length, PDFont textFont, float fontSize) throws IOException {
     	char[] onlyA = new char[length];
     	Arrays.fill(onlyA, 'A');
-    	return fontSize * font.getStringWidth(String.valueOf(onlyA)) / 1000.0f;
+    	return fontSize * textFont.getStringWidth(String.valueOf(onlyA)) / 1000.0f;
     }
     
     public static String cleanString(String string) {
diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java
index 151037f62c62f6cf1e408481d3d753052e389f67..79698c6bf3e8894a3151c49be4b4c73a3afb8339 100644
--- a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionAssessmentItemListController.java
@@ -205,13 +205,16 @@ public class CorrectionAssessmentItemListController extends FormBasicController
 		for(Map.Entry<Identity, AssessmentTestSession> entry:model.getLastSessions().entrySet()) {
 			if(model.getLastSessions().containsKey(entry.getKey())) {
 				TestSessionState testSessionState = model.getTestSessionStates().get(entry.getKey());
-				for(Map.Entry<TestPlanNodeKey, ItemSessionState> itemEntry:testSessionState.getItemSessionStates().entrySet()) {
-					String itemRefIdentifier = itemEntry.getKey().getIdentifier().toString();
-					CorrectionAssessmentItemRow row = itemRefIdToRows.get(itemRefIdentifier);
-					if(row != null) {
-						AssessmentItemSession itemSession = itemSessionMap
-								.get(new ItemSessionKey(entry.getValue().getKey(), itemRefIdentifier));
-						appendStatistics(row, itemSession, itemEntry.getValue());
+				Map<TestPlanNodeKey, ItemSessionState> itemSessionStates = (testSessionState == null ? null : testSessionState.getItemSessionStates());
+				if(itemSessionStates != null) {
+					for(Map.Entry<TestPlanNodeKey, ItemSessionState> itemEntry:itemSessionStates.entrySet()) {
+						String itemRefIdentifier = itemEntry.getKey().getIdentifier().toString();
+						CorrectionAssessmentItemRow row = itemRefIdToRows.get(itemRefIdentifier);
+						if(row != null) {
+							AssessmentItemSession itemSession = itemSessionMap
+									.get(new ItemSessionKey(entry.getValue().getKey(), itemRefIdentifier));
+							appendStatistics(row, itemSession, itemEntry.getValue());
+						}
 					}
 				}
 			}
diff --git a/src/main/java/org/olat/modules/fo/manager/ForumManager.java b/src/main/java/org/olat/modules/fo/manager/ForumManager.java
index 3a983944f3f134bf1467d08a96e8e116720f0581..39011f62d3eaff47791c0e0221efb23638695ea4 100644
--- a/src/main/java/org/olat/modules/fo/manager/ForumManager.java
+++ b/src/main/java/org/olat/modules/fo/manager/ForumManager.java
@@ -778,12 +778,11 @@ public class ForumManager {
 	 * @param creator
 	 * @param replyToMessage
 	 */
-	public void replyToMessage(Message newMessage, Message replyToMessage) {
+	public Message replyToMessage(Message newMessage, Message replyToMessage) {
 		Message top = replyToMessage.getThreadtop();
 		newMessage.setThreadtop((top != null ? top : replyToMessage));
 		newMessage.setParent(replyToMessage);
-		
-		saveMessage(newMessage);
+		return saveMessage(newMessage);
 	}
 
 	/**
@@ -791,10 +790,10 @@ public class ForumManager {
 	 * @param forum
 	 * @param topMessage
 	 */
-	public void addTopMessage(Message topMessage) {
+	public Message addTopMessage(Message topMessage) {
 		topMessage.setParent(null);
 		topMessage.setThreadtop(null);
-		saveMessage(topMessage);
+		return saveMessage(topMessage);
 	}
 
 	/**
diff --git a/src/main/java/org/olat/modules/fo/ui/MessageEditController.java b/src/main/java/org/olat/modules/fo/ui/MessageEditController.java
index 1c5f6a6f2b594aff27a28c37516d94d2a77dbf93..820b774102190f809c3f1e3e91bf7f99a812fd4a 100644
--- a/src/main/java/org/olat/modules/fo/ui/MessageEditController.java
+++ b/src/main/java/org/olat/modules/fo/ui/MessageEditController.java
@@ -494,7 +494,7 @@ public class MessageEditController extends FormBasicController {
 		if(editMode == EditMode.newThread) {
 			if(foCallback.mayOpenNewThread()) {
 				// save a new thread
-				fm.addTopMessage(message);
+				message = fm.addTopMessage(message);
 				fm.markNewMessageAsRead(getIdentity(), forum, message);
 				persistTempUploadedFiles(message);
 				// if notification is enabled -> notify the publisher about news
@@ -527,7 +527,7 @@ public class MessageEditController extends FormBasicController {
 				showWarning("may.not.save.msg.as.author");
 			}
 		} else if(editMode == EditMode.reply) { 
-			fm.replyToMessage(message, parentMessage);
+			message = fm.replyToMessage(message, parentMessage);
 			fm.markNewMessageAsRead(getIdentity(), forum, message);
 			persistTempUploadedFiles(message);
 			notifiySubscription();
@@ -657,11 +657,7 @@ public class MessageEditController extends FormBasicController {
 	 * @return the edited message
 	 */
 	public Message getMessage() {
-		if (!StringHelper.containsNonWhitespace(message.getTitle()) && message == null) {
-			throw new AssertException("Getting back the edited message failed! You first have to edit one and intialize properly!");
-		} else {
-			return message;
-		}
+		return message;
 	}
 
 	/**
diff --git a/src/main/java/org/olat/modules/fo/ui/MessageListController.java b/src/main/java/org/olat/modules/fo/ui/MessageListController.java
index 2674bb9d4ca97658b8ec887fb8924559692f7265..17de0884c23ebbd53700bf118784ee383466f25f 100644
--- a/src/main/java/org/olat/modules/fo/ui/MessageListController.java
+++ b/src/main/java/org/olat/modules/fo/ui/MessageListController.java
@@ -310,7 +310,7 @@ public class MessageListController extends BasicController implements GenericEve
 			} else {
 				scrollTo(message);
 			}
-		} else if(message != null) {
+		} else if(message != null && message.getKey() != null) {
 			MessageView view = loadView(ureq, message);
 			int index = 0;
 			for(int i=0; i<backupViews.size(); i++) {