diff --git a/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java b/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java
index 1eb19866837e3a195166ff330f07434423a9e27b..25cea0126da348d7cf4d81d141770901cf4827d4 100644
--- a/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java
+++ b/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java
@@ -328,6 +328,13 @@ public class AuthenticatedDispatcher implements Dispatcher {
 				Window w = windowBackOffice.getWindow();
 				w.dispatchRequest(ureq, true); // renderOnly
 			} catch (Exception e) {
+				// try to render something
+				try {
+					Window w = windowBackOffice.getWindow();
+					w.dispatchRequest(ureq, true); // renderOnly
+				} catch (Exception e1) {
+					redirectToDefaultDispatcher(ureq.getHttpReq(), ureq.getHttpResp());
+				}
 				log.error("", e);
 			}
 		}
diff --git a/src/main/java/org/olat/ims/qti21/model/xml/interactions/MultipleChoiceAssessmentItemBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/interactions/MultipleChoiceAssessmentItemBuilder.java
index 46c96bd7291b056103fdb246be624b50d9f9190e..182f48efcfb0634153e66b3cddd3b5b866c2aa4e 100644
--- a/src/main/java/org/olat/ims/qti21/model/xml/interactions/MultipleChoiceAssessmentItemBuilder.java
+++ b/src/main/java/org/olat/ims/qti21/model/xml/interactions/MultipleChoiceAssessmentItemBuilder.java
@@ -371,6 +371,23 @@ public class MultipleChoiceAssessmentItemBuilder extends SimpleChoiceAssessmentI
 		ResponseElse responseElse = new ResponseElse(rule);
 		rule.setResponseElse(responseElse);
 		
+		{//outcome score
+			SetOutcomeValue scoreOutcome = new SetOutcomeValue(responseElse);
+			scoreOutcome.setIdentifier(QTI21Constants.SCORE_IDENTIFIER);
+			responseElse.getResponseRules().add(scoreOutcome);
+			
+			Sum sum = new Sum(scoreOutcome);
+			scoreOutcome.getExpressions().add(sum);
+			
+			Variable scoreVar = new Variable(sum);
+			scoreVar.setIdentifier(QTI21Constants.SCORE_CLX_IDENTIFIER);
+			sum.getExpressions().add(scoreVar);
+			
+			MapResponse mapResponse = new MapResponse(sum);
+			mapResponse.setIdentifier(choiceInteraction.getResponseIdentifier());
+			sum.getExpressions().add(mapResponse);
+		}
+		
 		{// outcome feedback
 			SetOutcomeValue incorrectOutcomeValue = new SetOutcomeValue(responseElse);
 			incorrectOutcomeValue.setIdentifier(QTI21Constants.FEEDBACKBASIC_IDENTIFIER);
diff --git a/src/main/java/org/olat/ims/qti21/pool/QTI12To21Converter.java b/src/main/java/org/olat/ims/qti21/pool/QTI12To21Converter.java
index 623a2b9019e67f6a7c260cb808b1ceb9b59709a8..486898185610afc6beb4d0bf1da013b6e4ac7f81 100644
--- a/src/main/java/org/olat/ims/qti21/pool/QTI12To21Converter.java
+++ b/src/main/java/org/olat/ims/qti21/pool/QTI12To21Converter.java
@@ -207,7 +207,8 @@ public class QTI12To21Converter {
 		
 		RubricBlock rubricBlock = assessmentSection.getRubricBlocks().get(0);
 		rubricBlock.getBlocks().clear();
-		htmlBuilder.appendHtml(rubricBlock, section.getObjectives());
+		String objectives = section.getObjectives();
+		htmlBuilder.appendHtml(rubricBlock, prepareContent(objectives));
 
 		boolean shuffle = SelectionOrdering.RANDOM.equals(section.getSelection_ordering().getOrderType());
 		assessmentSection.getOrdering().setShuffle(shuffle);
@@ -263,7 +264,7 @@ public class QTI12To21Converter {
 				
 				//collect max score
 				Double maxScore = QtiNodesExtractor.extractMaxScore(assessmentItem);
-				if(maxScore != null) {
+				if(maxScore != null && maxScore.doubleValue() > 0.0d) {
 					atomicMaxScore.add(maxScore.doubleValue());
 				}
 			}
diff --git a/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java b/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java
index 16a32165b91311d6e3364efb1342a0a9b2907897..458669538c06fdf9667bd3c89762d5a32fba72b1 100755
--- a/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java
+++ b/src/main/java/org/olat/portfolio/ui/EPArtefactPoolRunController.java
@@ -123,7 +123,7 @@ public class EPArtefactPoolRunController extends BasicController implements Acti
 
 			putInitialPanel(viewComp);
 		} else {
-			putInitialPanel(new Panel("empty"));
+			putInitialPanel(createVelocityContainer("portfolio_disabled"));
 		}
 	}
 
@@ -278,16 +278,18 @@ public class EPArtefactPoolRunController extends BasicController implements Acti
 	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
 		if(entries == null || entries.isEmpty()) return;
 		
-		String type = entries.get(0).getOLATResourceable().getResourceableTypeName();
-		if("All".equalsIgnoreCase(type)) {
-			initTPAllView(ureq);
-			segmentView.select(artefactsLink);
-		} else if("Browse".equalsIgnoreCase(type)) {
-			initTPBrowseView(ureq);
-			segmentView.select(browseLink);
-		} else if("Search".equalsIgnoreCase(type)) {
-			initTPFilterView(ureq);
-			segmentView.select(searchLink);
+		if(portfolioModule.isEnabled()) {
+			String type = entries.get(0).getOLATResourceable().getResourceableTypeName();
+			if("All".equalsIgnoreCase(type)) {
+				initTPAllView(ureq);
+				segmentView.select(artefactsLink);
+			} else if("Browse".equalsIgnoreCase(type)) {
+				initTPBrowseView(ureq);
+				segmentView.select(browseLink);
+			} else if("Search".equalsIgnoreCase(type)) {
+				initTPFilterView(ureq);
+				segmentView.select(searchLink);
+			}
 		}
 	}
 
diff --git a/src/main/java/org/olat/portfolio/ui/_content/portfolio_disabled.html b/src/main/java/org/olat/portfolio/ui/_content/portfolio_disabled.html
new file mode 100644
index 0000000000000000000000000000000000000000..0a9843b8825b3fd75e52d5df3d4ffcf1e3a740e4
--- /dev/null
+++ b/src/main/java/org/olat/portfolio/ui/_content/portfolio_disabled.html
@@ -0,0 +1 @@
+<div class="o_warning" role="alert"><i class="o_icon o_icon-fw o_icon_important"> </i> $r.translate("warning.portfolio.module.disabled")</div>
\ No newline at end of file
diff --git a/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_de.properties
index 3e487a67f840f75451c19118cb6baaf6cc0c8b9f..b50130268d6ca82b5c8f5f11782a2197e860e23a 100644
--- a/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_de.properties
@@ -52,6 +52,7 @@ view.mode.table=Tabelle
 viewTab.all=Artefakte
 viewTab.browse=Tag-Browser
 viewTab.search=Suche
+warning.portfolio.module.disabled=ePortfolio v1 ist nicht eingeschaltet.
 wizard.intro=Das Artefakt-Sammelwerkzeug enth\u00E4lt verschiedene Schritte in einem Wizard. Einige der Schritte k\u00F6nnen Sie je nach Bedarf aktivieren oder deaktivieren.
 wizard.step.copyright=Urheberschaft vom Benutzer best\u00E4tigen lassen
 wizard.step.reflexion=Reflexion erfassen
diff --git a/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_en.properties
index 37629a7eedbc591a5cc7ec1254e7d4958db2658e..d79e891562110d1bd2836a86630f861e0dfa198c 100644
--- a/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/portfolio/ui/_i18n/LocalStrings_en.properties
@@ -52,6 +52,7 @@ view.mode.table=Table
 viewTab.all=Artefacts
 viewTab.browse=Tag browser
 viewTab.search=Search
+warning.portfolio.module.disabled=ePortfolio v1 is disabled.
 wizard.intro=Within the accumulative artefact tool there are several steps to complete. Some of them are optional. You can completely disable those steps if not needed.
 wizard.step.copyright=Ask user for copyright
 wizard.step.reflexion=Collect a reflexion