diff --git a/src/main/java/org/olat/core/_spring/mainCorecontext.xml b/src/main/java/org/olat/core/_spring/mainCorecontext.xml
index 527c4b40fcef8fdecff08462e61dd9866c8e5f35..02243fec114c0c0138381fba1f234762b4bf9fed 100644
--- a/src/main/java/org/olat/core/_spring/mainCorecontext.xml
+++ b/src/main/java/org/olat/core/_spring/mainCorecontext.xml
@@ -40,7 +40,9 @@
 	<import resource="classpath:/org/olat/core/commons/services/thumbnail/_spring/thumbnailserviceContext.xml"/>
 	<import resource="classpath:/org/olat/core/commons/services/webdav/_spring/webdavContext.xml"/>
 
-	<bean class="org.olat.core.gui.render.velocity.VelocityModule" depends-on="org.olat.core.helpers.Settings" init-method="init"/>
+	<bean class="org.olat.core.gui.render.velocity.VelocityModule" depends-on="org.olat.core.helpers.Settings" init-method="init">
+	    <property name="parserPoolSize" value="${velocity.parser.pool.size}" />	
+	</bean>
 
 	<bean id="mapperSlayerTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
 	    <property name="jobDetail" ref="mapperSlayerJob" />
diff --git a/src/main/java/org/olat/core/extensions/ExtManager.java b/src/main/java/org/olat/core/extensions/ExtManager.java
index 3a1ad3e15d6182e835b764f23ab9007ffd5bc537..cd0a4e2ddb2f0d5eb7b499a46aead84df9fdc946 100644
--- a/src/main/java/org/olat/core/extensions/ExtManager.java
+++ b/src/main/java/org/olat/core/extensions/ExtManager.java
@@ -127,7 +127,7 @@ public class ExtManager extends LogDelegator {
 		if (extensions == null) {
 			synchronized(lockObject) {
 				if (extensions == null) {
-					initExtentions();
+					extensions = initExtentions();
 				}
 			}
 		}
@@ -141,13 +141,13 @@ public class ExtManager extends LogDelegator {
 		return timeOfExtensionStartup;
 	}
 	
-	private void initExtentions() {
+	private ArrayList<Extension> initExtentions() {
 		logInfo("****** start loading extensions *********");
 		Map<Integer, Extension> orderKeys = new HashMap<Integer, Extension>();
 		idExtensionlookup = new HashMap<Long, Extension>();
 		navKeyGAExtensionlookup = new HashMap<ExtensionPointKeyPair, GenericActionExtension>();
 		
-		extensions = new ArrayList<Extension>();
+		ArrayList<Extension> extensionsList = new ArrayList<Extension>();
 		Map<String, Extension> extensionMap = CoreSpringFactory.getBeansOfType(Extension.class);
 		Collection<Extension> extensionValues = extensionMap.values();
 
@@ -182,7 +182,7 @@ public class ExtManager extends LogDelegator {
 					count_duplid++;
 					logWarn("Devel-Info :: duplicate unique id generated for extensions :: "+uid+" [ ["+idExtensionlookup.get(uid)+"]  and ["+extension+"] ]",null);
 			}else{
-				extensions.add(extension);
+				extensionsList.add(extension);
 				idExtensionlookup.put(uid, extension);
 				if (extension instanceof GenericActionExtension) {
 					GenericActionExtension gAE = (GenericActionExtension) extension;
@@ -205,7 +205,8 @@ public class ExtManager extends LogDelegator {
 			logDebug("Created unique-id "+uid+" for extension:: "+extension);
 		}
 		logInfo("Devel-Info :: initExtensions done. :: "+count_disabled+" disabled Extensions, "+count_duplid+" extensions with duplicate ids, "+count_duplnavkey+ " extensions with duplicate navigationKeys");
-		Collections.sort(extensions);
+		Collections.sort(extensionsList);
+		return extensionsList;
 	}
 	
 	private class ExtensionPointKeyPair {
diff --git a/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java b/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java
index b5a16900ffba3e1d084e179905b6d0596036bab1..fd607784c5ba8e8b5a301ca5e5704ed265c5385b 100644
--- a/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java
+++ b/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java
@@ -478,7 +478,7 @@ public abstract class GenericMainController extends MainLayoutBasicController im
 			contentCtr1Tmp = handleOwnMenuTreeEvent(uobject, ureq);
 		}
 		if (contentCtr1Tmp == null) { throw new AssertException(
-				"Node must either be an ActionExtension or implementation must handle this MenuTreeEvent: " + uobject.toString()); }
+				"Node must either be an ActionExtension or implementation must handle this MenuTreeEvent: " + (uobject == null ? "NULL" : uobject.toString())); }
 		return contentCtr1Tmp;
 	}
 	
diff --git a/src/main/java/org/olat/core/gui/render/velocity/VelocityHelper.java b/src/main/java/org/olat/core/gui/render/velocity/VelocityHelper.java
index fca06202bf2078dfe6a39f31aec4260816bc4f15..7408c929a27906c30e96b16ccbb58453e6ea6402 100644
--- a/src/main/java/org/olat/core/gui/render/velocity/VelocityHelper.java
+++ b/src/main/java/org/olat/core/gui/render/velocity/VelocityHelper.java
@@ -81,7 +81,8 @@ public class VelocityHelper extends LogDelegator {
 			p.setProperty(RuntimeConstants.RUNTIME_LOG_INFO_STACKTRACE, "true");
 
 			p.setProperty(RuntimeConstants.INPUT_ENCODING, VelocityModule.getInputEncoding());
-			p.setProperty(RuntimeConstants.OUTPUT_ENCODING, VelocityModule.getOutputEncoding());
+			p.setProperty(RuntimeConstants.OUTPUT_ENCODING, VelocityModule.getOutputEncoding());			
+			p.setProperty(RuntimeConstants.PARSER_POOL_SIZE, VelocityModule.getParsterPoolSize());
 
 
 			if (Settings.isDebuging()) {
diff --git a/src/main/java/org/olat/core/gui/render/velocity/VelocityModule.java b/src/main/java/org/olat/core/gui/render/velocity/VelocityModule.java
index ef7444891ffb0ee89ace156baaa446a510765dac..366ff99534376756a653c9168f86cb65d87016a9 100644
--- a/src/main/java/org/olat/core/gui/render/velocity/VelocityModule.java
+++ b/src/main/java/org/olat/core/gui/render/velocity/VelocityModule.java
@@ -38,6 +38,7 @@ public class VelocityModule implements Initializable {
 
 	private static String inputEncoding = DEFAULT_ENCODING;
 	private static String outputEncoding = DEFAULT_ENCODING;
+	private static String parserPoolSize = "20";
 	
 	/**
 	 * [spring]
@@ -64,4 +65,21 @@ public class VelocityModule implements Initializable {
 		VelocityHelper.getInstance();
 	}
 
+	/**
+	 * @return the parser pool size for the velocity parser pool configuration
+	 */
+	public static String getParsterPoolSize() {
+		return parserPoolSize;
+	}
+	
+	/**
+	 * [SPRING]
+	 * @param newParserPoolSize Set the new parser pool size
+	 */
+	public void setParserPoolSize(String newParserPoolSize) {
+		parserPoolSize = newParserPoolSize;
+	}
+
+
+
 }
\ No newline at end of file
diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties
index dabbf9f9d0f834d16dafeec463c51ae8a3681f86..5a792c399119adec5af6e36a79eb9b6fde7240f3 100644
--- a/src/main/resources/serviceconfig/olat.properties
+++ b/src/main/resources/serviceconfig/olat.properties
@@ -532,6 +532,12 @@ db.hibernate.c3p0.unreturnedConnectionTimeout=120
 infinispan.jndi=
 infinispan.jndi.values=,java:jboss/infinispan/openolatha
 
+########################################################################
+# Velocity Templating Engine
+########################################################################
+velocity.parser.pool.size=20
+infinispan.jndi.comment=20 is Velocity default value, use more when you get errors in the logfile. Only necessary on high load configurations.
+
 ########################################################################
 # Instant Messaging / chat
 ########################################################################