diff --git a/src/main/java/de/bps/onyx/plugin/run/OnyxRunController.java b/src/main/java/de/bps/onyx/plugin/run/OnyxRunController.java
index 446d769852c1c9c25e71a40dd47599f10cdaf35d..b85dc027c8e89cd5127fc94e7c66424300ef340e 100644
--- a/src/main/java/de/bps/onyx/plugin/run/OnyxRunController.java
+++ b/src/main/java/de/bps/onyx/plugin/run/OnyxRunController.java
@@ -214,6 +214,12 @@ public class OnyxRunController extends BasicController {
 
 		if (viewmode != SURVEYVIEW) {
 			ScoreEvaluation se = null;
+			
+			//<OLATCE-1232>
+			boolean isVisibilityPeriod = AssessmentHelper.isResultVisible(modConfig);
+			vc.contextPut("showResultsVisible", new Boolean(isVisibilityPeriod));
+			//</OLATCE-1232>
+				
 			if (courseNodeTest != null) {
 				// <OLATCE-498>
 				Integer attempts = courseNodeTest.getUserAttempts(userCourseEnv);
@@ -271,7 +277,7 @@ public class OnyxRunController extends BasicController {
 			if (hasResult) {
 				vc.contextPut("hasResult", Boolean.TRUE);
 				boolean isPassesSet = se.getPassed() != null;
-				vc.contextPut(IQEditController.CONFIG_KEY_RESULT_ON_HOME_PAGE, modConfig.get(IQEditController.CONFIG_KEY_RESULT_ON_HOME_PAGE));
+				vc.contextPut("showResultsOnHomePage", modConfig.get(IQEditController.CONFIG_KEY_RESULT_ON_HOME_PAGE));
 				if (isPassesSet) {
 					vc.contextPut("passed", se.getPassed());
 				} else {
diff --git a/src/main/java/de/bps/onyx/plugin/run/_content/onyxrun.html b/src/main/java/de/bps/onyx/plugin/run/_content/onyxrun.html
index 897543b96e13617544ad76add644256374d19463..d2a8279deda1f514c2c58c9c96fd8d97b72ed489 100644
--- a/src/main/java/de/bps/onyx/plugin/run/_content/onyxrun.html
+++ b/src/main/java/de/bps/onyx/plugin/run/_content/onyxrun.html
@@ -1,4 +1,3 @@
-##
 <h3>$!menuTitle</h3>
 <i>$!displayTitle</i>
 
@@ -24,38 +23,26 @@
 			#end
 			</td>
 	</tr>
-	<tr>
-			#if ($attampts)
-			<td>			
-				$r.translate("attempts.yourattempts"): 
-			</td>
-			<td>
-				$attempts
-			</td>
-			#end
+	#if($attempts)
+		<tr>
+			<td>$r.translate("attempts.yourattempts"):</td>
+			<td>$attempts</td>
 		</tr>
+	#end
 	#if ($attempts && $attempts >0 || $self)
 		<tr>
 			<td colspan="2"><b>$r.translate("attempts.result")</b></td>
 		</tr>
 		#foreach ($var in $qtivars)
 		<tr>
-			<td>			
-				${var.getIdentifier()}: 
-			</td>
-			<td>
-				${var.getValue()}
-			</td>
+			<td>${var.getIdentifier()}:</td>
+			<td>${var.getValue()}</td>
 		</tr>
-      	#end
-      	#if ($hasResult == true)
-      	<tr>
-			<td>			
-				$r.translate("score.yourscore"): 
-			</td>
-			<td>
-				$score
-			</td>
+    #end
+    #if ($hasResult == true)
+    <tr>
+			<td>$r.translate("score.yourscore"):</td>
+			<td>$score</td>
 		</tr>
 		##<OLATCE-1014> hide status - line if there is no passed value set
 		#if($passed != "")
@@ -73,13 +60,11 @@
 		##<OLATCE-1014>
 		#end
 		##</OLATCE-1014>
-		#else
+	#else
 		<tr>
-			<td>
-			$r.translate("no.testresults")
-			</td>
+			<td colspan="2">$r.translate("no.testresults")</td>
 		</tr>
-		#end
+	#end
 		<tr>
 			<td>
 			#if($showResultsOnHomePage && $attempts && $attempts >0)
diff --git a/src/main/java/org/olat/NewControllerFactory.java b/src/main/java/org/olat/NewControllerFactory.java
index 9a2960af31b21a8372fec375bdef115ac048e90f..2e3bca280f0d047599c69337d0afa036666f9e44 100644
--- a/src/main/java/org/olat/NewControllerFactory.java
+++ b/src/main/java/org/olat/NewControllerFactory.java
@@ -140,7 +140,10 @@ public class NewControllerFactory extends LogDelegator {
 	
 	private ContextEntryControllerCreator getContextEntryControllerCreator(String type) {
 		ContextEntryControllerCreator typeHandler = contextEntryControllerCreators.get(type);
-		return typeHandler.clone();
+		if(typeHandler != null) {
+			return typeHandler.clone();
+		}
+		return null;
 	}
 
 	/**
diff --git a/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java b/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java
index 5e6becf4a2276875a5cc5c189f0de719eb06c5b3..a9a40a3ccda2e1aebf57413c2758047e9683d352 100644
--- a/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java
+++ b/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java
@@ -104,7 +104,7 @@ public class ResumeController extends FormBasicController implements SupportsAft
 					//make the resume secure. If something fail, don't generate a red screen
 					NewControllerFactory.getInstance().launch(ureq, bwControl);
 				} catch (Exception e) {
-					logError("Error while resumging", e);
+					logError("Error while resuming", e);
 				}
 			}
 			return false;
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java
index f04a3ef89ccd10f5f8be23127b2c1912281b3946..e819c25820dede08c6c430c57663929ade8faf97 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java
@@ -105,6 +105,7 @@ public class RichTextConfiguration implements Disposable {
 	private static final String FORCED_ROOT_BLOCK = "forced_root_block";
 	private static final String FORCED_ROOT_BLOCK_VALUE_NOROOT = "";
 	private static final String DOCUMENT_BASE_URL = "document_base_url";
+	private static final String PASTE_DATA_IMAGES = "paste_data_images";
 	//
 	// Generic boolean true / false values
 	private static final String VALUE_FALSE = "false";
@@ -258,6 +259,7 @@ public class RichTextConfiguration implements Disposable {
 		setQuotedConfigValue(EXTENDED_VALID_ELEMENTS, EXTENDED_VALID_ELEMENTS_VALUE_FULL);
 		setQuotedConfigValue(INVALID_ELEMENTS, INVALID_ELEMENTS_FILE_FULL_VALUE_UNSAVE);
 		
+		setNonQuotedConfigValue(PASTE_DATA_IMAGES, "true");
 		// Setup file and link browser
 		if (baseContainer != null) {
 			setFileBrowserCallback(baseContainer, customLinkTreeModel, IMAGE_SUFFIXES_VALUES, MEDIA_SUFFIXES_VALUES, FLASH_PLAYER_SUFFIXES_VALUES);
diff --git a/src/main/java/org/olat/course/assessment/AssessmentHelper.java b/src/main/java/org/olat/course/assessment/AssessmentHelper.java
index d8c1a0e5552dc8cffcd892ec613ccb2dfd404469..d72dd7e8dc50067d69b7df5e3f944336b68a9766 100644
--- a/src/main/java/org/olat/course/assessment/AssessmentHelper.java
+++ b/src/main/java/org/olat/course/assessment/AssessmentHelper.java
@@ -436,17 +436,16 @@ public class AssessmentHelper {
 	public static boolean isResultVisible(ModuleConfiguration modConfig) {
 		boolean isVisible = false;
 		Boolean showResultsActive = (Boolean)modConfig.get(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS);
-		if(showResultsActive!=null && showResultsActive.booleanValue()) {
-		  Date startDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_START_DATE);
-		  Date endDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_END_DATE);
-		  Date currentDate = new Date();
-		  if(currentDate.after(startDate) && (endDate==null || currentDate.before(endDate))) {
-		  	isVisible = true;
-		  }
+		if(showResultsActive != null && showResultsActive.booleanValue()) {
+			Date startDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_START_DATE);
+			Date endDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_END_DATE);
+			Date currentDate = new Date();
+			if(startDate != null && currentDate.after(startDate) && (endDate == null || currentDate.before(endDate))) {
+				isVisible = true;
+			}
 		} else {
 			isVisible = true;
 		}
 		return isVisible;
 	}
-	
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/course/site/CourseSiteDef.java b/src/main/java/org/olat/course/site/CourseSiteDef.java
index 4487d7e0ed329c5a9581af0bede6f51a9754a35e..9d4462474e22865a5ce89e51bf33a7ebeb8a2265 100644
--- a/src/main/java/org/olat/course/site/CourseSiteDef.java
+++ b/src/main/java/org/olat/course/site/CourseSiteDef.java
@@ -98,6 +98,15 @@ public class CourseSiteDef extends AbstractSiteDefinition implements SiteDefinit
 			return null;
 		}
 		String icon = courseConfig.getNavIconCssClass();
+		return createCourseSiteInstance(ureq, langConfig, showToolController, siteSecCallback, icon);
+	}
+	
+	/**
+	 * Warning: there is no check against null.
+	 * It's only to return the right type, CourseSie or CourseSite2.
+	 */
+	protected CourseSite createCourseSiteInstance(UserRequest ureq, LanguageConfiguration langConfig,
+			boolean showToolController, SiteSecurityCallback siteSecCallback, String icon) {
 		return new CourseSite(this, ureq.getLocale(), langConfig.getRepoSoftKey(), showToolController,
 				siteSecCallback, langConfig.getTitle(), icon);
 	}
diff --git a/src/main/java/org/olat/course/site/CourseSiteDef2.java b/src/main/java/org/olat/course/site/CourseSiteDef2.java
index a6401dc5773febec11a43e140abbf01949ddee31..eb1785b94160492424d42af59d82ba2cb06495c0 100644
--- a/src/main/java/org/olat/course/site/CourseSiteDef2.java
+++ b/src/main/java/org/olat/course/site/CourseSiteDef2.java
@@ -20,8 +20,11 @@
 package org.olat.course.site;
 
 import org.olat.core.CoreSpringFactory;
+import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.navigation.SiteDefinitions;
+import org.olat.core.gui.control.navigation.SiteSecurityCallback;
 import org.olat.course.site.model.CourseSiteConfiguration;
+import org.olat.course.site.model.LanguageConfiguration;
 
 /**
  * 
@@ -39,4 +42,11 @@ public class CourseSiteDef2 extends CourseSiteDef {
 		CourseSiteConfiguration config = siteModule.getConfigurationCourseSite2();
 		return config;
 	}
+
+	@Override
+	protected CourseSite createCourseSiteInstance(UserRequest ureq, LanguageConfiguration langConfig,
+			boolean showToolController, SiteSecurityCallback siteSecCallback, String icon) {
+		return new CourseSite2(this, ureq.getLocale(), langConfig.getRepoSoftKey(), showToolController,
+				siteSecCallback, langConfig.getTitle(), icon);
+	}
 }
diff --git a/src/main/java/org/olat/dispatcher/RESTDispatcher.java b/src/main/java/org/olat/dispatcher/RESTDispatcher.java
index 38da54bad0975bf4f8f6d6d1d6f4f0beb2f3f997..8a882bfe293ee1bcba7bf71c02550f5c62bb383a 100644
--- a/src/main/java/org/olat/dispatcher/RESTDispatcher.java
+++ b/src/main/java/org/olat/dispatcher/RESTDispatcher.java
@@ -48,6 +48,7 @@ import org.olat.core.id.context.BusinessControl;
 import org.olat.core.id.context.BusinessControlFactory;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
+import org.olat.core.logging.activity.ThreadLocalUserActivityLoggerInstaller;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.UserSession;
 import org.olat.core.util.WebappHelper;
@@ -138,6 +139,9 @@ public class RESTDispatcher implements Dispatcher {
 		// create the olat ureq and get an associated main window to spawn the "tab"
 		//
 		UserSession usess = CoreSpringFactory.getImpl(UserSessionManager.class).getUserSession(request);
+		if(usess != null) {
+			ThreadLocalUserActivityLoggerInstaller.initUserActivityLogger(request);
+		}
 		UserRequest ureq = null;
 		try {
 			//upon creation URL is checked for 
diff --git a/src/main/java/org/olat/dispatcher/RemoteLoginformDispatcher.java b/src/main/java/org/olat/dispatcher/RemoteLoginformDispatcher.java
index 4b737d2ea32f1368ee6ea297d177c222354d8d32..195406faafc1a9453bc3d802f57866b0e0ec7d9d 100644
--- a/src/main/java/org/olat/dispatcher/RemoteLoginformDispatcher.java
+++ b/src/main/java/org/olat/dispatcher/RemoteLoginformDispatcher.java
@@ -43,6 +43,7 @@ import org.olat.core.gui.render.URLBuilder;
 import org.olat.core.id.Identity;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
+import org.olat.core.logging.activity.ThreadLocalUserActivityLoggerInstaller;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.UserSession;
 import org.olat.core.util.WebappHelper;
@@ -138,6 +139,9 @@ public class RemoteLoginformDispatcher implements Dispatcher {
 			}
 			
 			UserSession usess = ureq.getUserSession();
+			//re-init the activity logger to pass the user session and identity
+			ThreadLocalUserActivityLoggerInstaller.initUserActivityLogger(request);
+			
 			//sync over the UserSession Instance to prevent double logins
 			synchronized (usess) {
 				// Login user, set up everything
diff --git a/src/main/java/org/olat/group/ui/portlet/GroupsPortletRunController.java b/src/main/java/org/olat/group/ui/portlet/GroupsPortletRunController.java
index 6df832ab4fbabcd078d2c8a0362d4ff6d1a31b81..8aea250ad1eabea2640e31b0dc5a3713d2ece20f 100644
--- a/src/main/java/org/olat/group/ui/portlet/GroupsPortletRunController.java
+++ b/src/main/java/org/olat/group/ui/portlet/GroupsPortletRunController.java
@@ -35,7 +35,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.commons.lang.StringEscapeUtils;
 import org.olat.NewControllerFactory;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
@@ -317,7 +316,8 @@ public class GroupsPortletRunController extends AbstractPortletRunController<Bus
 			  	return -comparisonResult;
 			  }
 			  return comparisonResult;
-			}};
+			}
+		};
 	}
   
   /**
@@ -328,7 +328,7 @@ public class GroupsPortletRunController extends AbstractPortletRunController<Bus
    * Initial Date:  10.12.2007 <br>
    * @author Lavinia Dumitrescu
    */
-  private class GroupTableDataModel extends PortletDefaultTableDataModel<BusinessGroupEntry> {  	
+  private static class GroupTableDataModel extends PortletDefaultTableDataModel<BusinessGroupEntry> {  	
   	public GroupTableDataModel(List<PortletEntry<BusinessGroupEntry>> objects) {
   		super(objects, 1);
   	}
@@ -338,9 +338,7 @@ public class GroupsPortletRunController extends AbstractPortletRunController<Bus
   		BusinessGroupEntry businessGroup = entry.getValue();
   		switch (col) {
   			case 0:
-  				String name = businessGroup.getName();
-  				name = StringEscapeUtils.escapeHtml(name).toString();
-  				return name;
+  				return businessGroup.getName();
   			default:
   				return "ERROR";
   		}
@@ -360,7 +358,7 @@ public class GroupsPortletRunController extends AbstractPortletRunController<Bus
    * Initial Date:  10.12.2007 <br>
    * @author Lavinia Dumitrescu
    */
-	private class GroupsManualSortingTableDataModel extends PortletDefaultTableDataModel<BusinessGroupEntry>  {		
+	private static class GroupsManualSortingTableDataModel extends PortletDefaultTableDataModel<BusinessGroupEntry>  {		
 		/**
 		 * @param objects
 		 * @param locale
@@ -396,7 +394,7 @@ public class GroupsPortletRunController extends AbstractPortletRunController<Bus
 		}
 	}
 	
-	private class GroupPortletEntry implements PortletEntry<BusinessGroupEntry> {
+	private static class GroupPortletEntry implements PortletEntry<BusinessGroupEntry> {
 	  	private BusinessGroupEntry value;
 	  	private Long key;
 	  	
diff --git a/src/main/java/org/olat/search/service/indexer/JmsIndexer.java b/src/main/java/org/olat/search/service/indexer/JmsIndexer.java
index 1ebabed6de12298d0386dee12e286ce7301c822d..d084f639515f837f280289035f0eeb227d403cbc 100644
--- a/src/main/java/org/olat/search/service/indexer/JmsIndexer.java
+++ b/src/main/java/org/olat/search/service/indexer/JmsIndexer.java
@@ -350,6 +350,8 @@ public class JmsIndexer implements MessageListener, LifeFullIndexer {
 	 */
 	@Override
 	public void addDocument(Document document) {
+		if(document == null) return;//nothing to do
+		
 		IndexWriter writer = null;
 		try {
 			String resourceUrl = document.get(AbstractOlatDocument.RESOURCEURL_FIELD_NAME);
@@ -357,8 +359,8 @@ public class JmsIndexer implements MessageListener, LifeFullIndexer {
 
 			DirectoryReader reader = getReader();
 			IndexSearcher searcher = new IndexSearcher(reader);
-	    TopDocs hits = searcher.search(new TermQuery(uuidTerm), 10);
-	    writer = permanentIndexWriter.getAndLock();
+			TopDocs hits = searcher.search(new TermQuery(uuidTerm), 10);
+			writer = permanentIndexWriter.getAndLock();
 			if(hits.totalHits > 0) {
 				writer.updateDocument(uuidTerm, document);
 			} else {
@@ -378,7 +380,7 @@ public class JmsIndexer implements MessageListener, LifeFullIndexer {
 			Term uuidTerm = new Term(AbstractOlatDocument.RESOURCEURL_FIELD_NAME, resourceUrl);
 			DirectoryReader reader = getReader();
 			IndexSearcher searcher = new IndexSearcher(reader);
-	    TopDocs hits = searcher.search(new TermQuery(uuidTerm), 10);
+			TopDocs hits = searcher.search(new TermQuery(uuidTerm), 10);
 			if(hits.totalHits > 0) {
 				writer.updateDocument(uuidTerm, document);
 			} else {
diff --git a/src/main/java/org/olat/shibboleth/ShibbolethDispatcher.java b/src/main/java/org/olat/shibboleth/ShibbolethDispatcher.java
index 40412c2749410499100e2c073239587bc78316c6..ae5069cd16090134f567cf2bd1573f031d13c4f6 100644
--- a/src/main/java/org/olat/shibboleth/ShibbolethDispatcher.java
+++ b/src/main/java/org/olat/shibboleth/ShibbolethDispatcher.java
@@ -55,6 +55,7 @@ import org.olat.core.logging.OLATRuntimeException;
 import org.olat.core.logging.OLATSecurityException;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
+import org.olat.core.logging.activity.ThreadLocalUserActivityLoggerInstaller;
 import org.olat.core.util.Util;
 import org.olat.core.util.WebappHelper;
 import org.olat.core.util.i18n.I18nModule;
@@ -144,6 +145,10 @@ public class ShibbolethDispatcher implements Dispatcher{
 			redirectToShibbolethRegistration(resp);
 			return;
 		}
+		if(ureq.getUserSession() != null) {
+			//re-init the activity logger
+			ThreadLocalUserActivityLoggerInstaller.initUserActivityLogger(req);
+		}
 		int loginStatus = AuthHelper.doLogin(auth.getIdentity(), ShibbolethDispatcher.PROVIDER_SHIB, ureq);
 		if (loginStatus != AuthHelper.LOGIN_OK) {
 			if (loginStatus == AuthHelper.LOGIN_NOTAVAILABLE) {