diff --git a/src/main/java/org/olat/ims/qti/editor/ItemNodeTabbedFormController.java b/src/main/java/org/olat/ims/qti/editor/ItemNodeTabbedFormController.java
index c7804c4b9bb53502577c84bb4e7f6533006887bc..1bc3e26fab5d88e387d9f8afb09fa5441ccfd3d7 100644
--- a/src/main/java/org/olat/ims/qti/editor/ItemNodeTabbedFormController.java
+++ b/src/main/java/org/olat/ims/qti/editor/ItemNodeTabbedFormController.java
@@ -87,6 +87,9 @@ public class ItemNodeTabbedFormController extends TabbableDefaultController {
 				itemCtrl = new EssayItemController(ureq, getWindowControl(), item, qtiPackage, getTranslator(), restrictedEdit);
 				break;
 		}
+		if(itemCtrl != null) {
+			listenTo(itemCtrl);
+		}
 	}
 
 	/**
@@ -151,11 +154,12 @@ public class ItemNodeTabbedFormController extends TabbableDefaultController {
 			int questionType = item.getQuestion().getType();
 			
 			tabbedPane.addTab(translate("tab.question"), itemCtrl.getInitialComponent());			
-			listenTo(itemCtrl);
+			
 			if (!isSurvey && questionType != Question.TYPE_ESSAY) {
 				tabbedPane.addTab(translate("tab.feedback"), feedbackPanel);
 			}
 			Controller itemPreviewController = new ItemPreviewController(getWindowControl(), item, qtiPackage, getTranslator());
+			listenTo(itemPreviewController);
 			tabbedPane.addTab(translate("tab.preview"), itemPreviewController.getInitialComponent());
 			tabbedPane.addListener(itemPreviewController);
 		}
diff --git a/src/main/java/org/olat/ims/qti/qpool/QTIQPoolServiceProvider.java b/src/main/java/org/olat/ims/qti/qpool/QTIQPoolServiceProvider.java
index a2c0d19048cc3226e11d9a85ad04096929267c98..d0dc7e2ebbe2c7aaa63ef507d364da97f65c3429 100644
--- a/src/main/java/org/olat/ims/qti/qpool/QTIQPoolServiceProvider.java
+++ b/src/main/java/org/olat/ims/qti/qpool/QTIQPoolServiceProvider.java
@@ -361,8 +361,7 @@ public class QTIQPoolServiceProvider implements QPoolSPI {
 
 	@Override
 	public Controller getPreviewController(UserRequest ureq, WindowControl wControl, QuestionItem item, boolean summary) {
-		QTI12PreviewController previewCtrl = new QTI12PreviewController(ureq, wControl, item, summary);
-		return previewCtrl;
+		return new QTI12PreviewController(ureq, wControl, item, summary);
 	}
 
 	@Override
@@ -372,9 +371,6 @@ public class QTIQPoolServiceProvider implements QPoolSPI {
 
 	@Override
 	public Controller getEditableController(UserRequest ureq, WindowControl wControl, QuestionItem item) {
-		QTI12EditorController previewCtrl = new QTI12EditorController(ureq, wControl, item);
-		return previewCtrl;
+		return new QTI12EditorController(ureq, wControl, item);
 	}
-	
-
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java
index c3372ffd68891ed521f5b07f8511924515a6f2c3..31632355f0279616c562b445b317ace4333a74ab 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java
@@ -139,7 +139,7 @@ public class AssessmentItemEditorController extends BasicController {
 			displayTabPosition = tabbedPane.addTab(translate("preview"), displayCtrl);
 		
 			solutionCtrl = new AssessmentItemPreviewSolutionController(ureq, getWindowControl(), resolvedAssessmentItem, rootDirectory, itemFile);
-			listenTo(displayCtrl);
+			listenTo(solutionCtrl);
 			solutionTabPosition = tabbedPane.addTab(translate("preview.solution"), solutionCtrl);
 		}
 		
@@ -181,7 +181,7 @@ public class AssessmentItemEditorController extends BasicController {
 			displayTabPosition = tabbedPane.addTab(translate("preview"), displayCtrl);
 
 			solutionCtrl = new AssessmentItemPreviewSolutionController(ureq, getWindowControl(), resolvedAssessmentItem, rootDirectory, itemFile);
-			listenTo(displayCtrl);
+			listenTo(solutionCtrl);
 			solutionTabPosition = tabbedPane.addTab(translate("preview.solution"), solutionCtrl);
 		}
 
diff --git a/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java b/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java
index 69e978b5997bdbfef363d1dcc03ddb54f809fbd2..8d61a4532ff713fd76b760cd6099aa6463f3e64c 100644
--- a/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/metadata/MetadatasController.java
@@ -85,11 +85,13 @@ public class MetadatasController extends BasicController {
 
 		if (qpoolModule.isPoolsEnabled()) {
 			poolsCtrl = new PoolsMetadataController(ureq, wControl, item);
+			listenTo(poolsCtrl);
 			mainVC.put("details_pools", poolsCtrl.getInitialComponent());
 		}
 		
 		if (qpoolModule.isSharesEnabled()) {
 			sharesController = new SharesMetadataController(ureq, wControl, item);
+			listenTo(sharesController);
 			mainVC.put("details_shares", sharesController.getInitialComponent());
 		}