diff --git a/src/main/java/org/olat/admin/AdminModule.java b/src/main/java/org/olat/admin/AdminModule.java
index 922f21c78eba7ac180c56f2d6c9043112e7a5ee1..e04438f1aea973dae17ad0c23b53e5d501d38598 100644
--- a/src/main/java/org/olat/admin/AdminModule.java
+++ b/src/main/java/org/olat/admin/AdminModule.java
@@ -26,7 +26,6 @@
 package org.olat.admin;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang.RandomStringUtils;
 import org.olat.NewControllerFactory;
@@ -36,13 +35,18 @@ import org.olat.basesecurity.AuthHelper;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.fullWebApp.util.GlobalStickyMessage;
 import org.olat.core.commons.persistence.DBFactory;
-import org.olat.core.configuration.AbstractOLATModule;
-import org.olat.core.configuration.PersistedProperties;
+import org.olat.core.configuration.AbstractSpringModule;
 import org.olat.core.id.User;
 import org.olat.core.id.context.SiteContextEntryControllerCreator;
+import org.olat.core.logging.OLog;
+import org.olat.core.logging.Tracing;
+import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.session.UserSessionManager;
 import org.olat.properties.Property;
 import org.olat.properties.PropertyManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
 
 /**
  * Description:<BR>
@@ -53,31 +57,38 @@ import org.olat.properties.PropertyManager;
  *
  * @author gnaegi 
  */
-public class AdminModule extends AbstractOLATModule {
+@Service("adminModule")
+public class AdminModule extends AbstractSpringModule {
+	
+	private static final OLog log = Tracing.createLoggerFor(AdminModule.class);
 
 	private static final String CONFIG_LOGIN_BLOCKED = "loginBlocked";
 	/** Category for system properties **/
 	public static String SYSTEM_PROPERTY_CATEGORY = "_o3_";
 	public static final String PROPERTY_MAINTENANCE_MESSAGE    = "maintenanceMessageToken";
 	public static final String PROPERTY_SESSION_ADMINISTRATION = "sessionAdministrationToken";
-	private static final String CONFIG_ADMIN_MAX_SESSION = "maxNumberOfSessions";
+	
+	@Value("${maxNumberOfSessions:0}")
+	private int maxNumberOfSessions;
+	
+	@Autowired
 	private PropertyManager propertyManager;
 
 	/**
 	 * [used by spring]
 	 */
-	public AdminModule(PropertyManager propertyManager) {
-		super();
-		this.propertyManager = propertyManager;
+	@Autowired
+	public AdminModule(CoordinatorManager coordinatorManager) {
+		super(coordinatorManager);
 	}
 
-/**
- * Check if system property for maintenance message exists, create one if it
- * doesn't
- * This generated token is used by the remote http maintenance message
- * setting mechanism, see method below
- * @param tokenPropertyName
- */
+	/**
+	 * Check if system property for maintenance message exists, create one if it
+	 * doesn't
+	 * This generated token is used by the remote http maintenance message
+	 * setting mechanism, see method below
+	 * @param tokenPropertyName
+	 */
 	private void initializeSystemTokenProperty(String tokenPropertyName) {
 		Property p = propertyManager.findProperty(null, null, null, SYSTEM_PROPERTY_CATEGORY, tokenPropertyName);
 		if (p == null) {
@@ -98,18 +109,18 @@ public class AdminModule extends AbstractOLATModule {
 		GlobalStickyMessage.setGlobalStickyMessage(message, true);
 	}
 	
-	public boolean checkMaintenanceMessageToken(HttpServletRequest request, HttpServletResponse response) {
+	public boolean checkMaintenanceMessageToken(HttpServletRequest request) {
 		return checkToken(request, PROPERTY_MAINTENANCE_MESSAGE);
 	}
 
-	public boolean checkSessionAdminToken(HttpServletRequest request, HttpServletResponse response) {
+	public boolean checkSessionAdminToken(HttpServletRequest request) {
 		return checkToken(request, PROPERTY_SESSION_ADMINISTRATION);
 	}
 
 	private boolean checkToken(HttpServletRequest request, String tokenPropertyName) {
 		String submittedToken = request.getParameter("token");
 		if (submittedToken == null) {
-			logAudit("Trying to set maintenance message without using a token. Remote address::" + request.getRemoteAddr());
+			log.audit("Trying to set maintenance message without using a token. Remote address::" + request.getRemoteAddr());
 			return false;
 		}
 		// get token and compare
@@ -119,7 +130,7 @@ public class AdminModule extends AbstractOLATModule {
 		if (token.matches(submittedToken)) { // limit access to token
 			return true;
 		} else {
-			logAudit("Trying to set maintenance message using a wrong token. Remote address::" + request.getRemoteAddr());
+			log.audit("Trying to set maintenance message using a wrong token. Remote address::" + request.getRemoteAddr());
 			return false;
 		}
 	}
@@ -129,7 +140,7 @@ public class AdminModule extends AbstractOLATModule {
 	 * @param newLoginBlocked
 	 */
 	public void setLoginBlocked(boolean newLoginBlocked, boolean persist) {
-		logAudit("Session administration: Set login-blocked=" + newLoginBlocked);
+		log.audit("Session administration: Set login-blocked=" + newLoginBlocked);
 		AuthHelper.setLoginBlocked(newLoginBlocked);
 		setBooleanProperty(CONFIG_LOGIN_BLOCKED, newLoginBlocked, persist);
 	}
@@ -147,7 +158,7 @@ public class AdminModule extends AbstractOLATModule {
 	 * @param rejectDMZRequests
 	 */
 	public void setRejectDMZRequests(boolean rejectDMZRequests) {
-		logAudit("Session administration: Set rejectDMZRequests=" + rejectDMZRequests);
+		log.audit("Session administration: Set rejectDMZRequests=" + rejectDMZRequests);
 		AuthHelper.setRejectDMZRequests(rejectDMZRequests);
 	}
 
@@ -165,7 +176,7 @@ public class AdminModule extends AbstractOLATModule {
 	 * @param maxSession
 	 */
 	public void setMaxSessions(int maxSession) {
-		logAudit("Session administration: Set maxSession=" + maxSession);
+		log.audit("Session administration: Set maxSession=" + maxSession);
 		AuthHelper.setMaxSessions(maxSession);
 	}
 
@@ -174,7 +185,7 @@ public class AdminModule extends AbstractOLATModule {
 	 * @param sessionTimeout
 	 */
 	public void setSessionTimeoutDepr(int sessionTimeout) {
-		logAudit("Session administration: Set session-timeout=" + sessionTimeout);
+		log.audit("Session administration: Set session-timeout=" + sessionTimeout);
 		//in seconds
 		CoreSpringFactory.getImpl(UserSessionManager.class).setGlobalSessionTimeout(sessionTimeout);
 	}
@@ -219,17 +230,11 @@ public class AdminModule extends AbstractOLATModule {
 
 	@Override
 	protected void initDefaultProperties() {
-			int maxNumberOfSessions = getIntConfigParameter(CONFIG_ADMIN_MAX_SESSION, 0);
-			AuthHelper.setMaxSessions(maxNumberOfSessions);
+		AuthHelper.setMaxSessions(maxNumberOfSessions);
 	}
 
 	@Override
 	protected void initFromChangedProperties() {
-		//nothin to do
-	}
-
-	@Override
-	public void setPersistedProperties(PersistedProperties persistedProperties) {
-		this.moduleConfigProperties = persistedProperties;
+		//nothing to do
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/admin/AdminModuleDispatcher.java b/src/main/java/org/olat/admin/AdminModuleDispatcher.java
index 2ddd2ecb8a514439b448cd4c1a895572dc450501..ced3c8502198b7220b2c100901eaf1afff4a96ca 100644
--- a/src/main/java/org/olat/admin/AdminModuleDispatcher.java
+++ b/src/main/java/org/olat/admin/AdminModuleDispatcher.java
@@ -72,7 +72,7 @@ public class AdminModuleDispatcher implements Dispatcher {
 		if (cmd.equalsIgnoreCase(CMD_SET_MAINTENANCE_MESSAGE) || cmd.equalsIgnoreCase(CMD_SET_INFO_MESSAGE)) {
 			handleSetMaintenanceOrInfoMessage(request, response, cmd);
 		} else {
-			if (CoreSpringFactory.getImpl(AdminModule.class).checkSessionAdminToken(request, response)) {
+			if (CoreSpringFactory.getImpl(AdminModule.class).checkSessionAdminToken(request)) {
 				handleSessionsCommand(request, response, cmd);
 			} else {
 				DispatcherModule.sendForbidden(request.getPathInfo(), response);
@@ -168,7 +168,7 @@ public class AdminModuleDispatcher implements Dispatcher {
 	 */
 	private void handleSetMaintenanceOrInfoMessage(HttpServletRequest request, HttpServletResponse response, String cmd) {
 		AdminModule adminModule = CoreSpringFactory.getImpl(AdminModule.class);
-		if (adminModule.checkMaintenanceMessageToken(request, response)) {
+		if (adminModule.checkMaintenanceMessageToken(request)) {
 			String message = request.getParameter(PARAMETER_MSG);
 			if (cmd.equalsIgnoreCase(CMD_SET_INFO_MESSAGE)){
 				InfoMessageManager mrg = (InfoMessageManager) CoreSpringFactory.getBean(InfoMessageManager.class);
diff --git a/src/main/java/org/olat/admin/_spring/adminContext.xml b/src/main/java/org/olat/admin/_spring/adminContext.xml
index c49f2d2d4a1fa8bd7cf08279bc9451f5f191506c..303c915d63c50fe62781b0ce33c612a98fa7bca6 100644
--- a/src/main/java/org/olat/admin/_spring/adminContext.xml
+++ b/src/main/java/org/olat/admin/_spring/adminContext.xml
@@ -8,7 +8,7 @@
         http://www.springframework.org/schema/context 
         http://www.springframework.org/schema/context/spring-context.xsd">
   
-	<context:component-scan base-package="org.olat.admin.layout" />
+	<context:component-scan base-package="org.olat.admin" />
   
   	<import resource="classpath:/org/olat/admin/jmx/_spring/jmxContext.xml"/>
 	<import resource="classpath:/org/olat/admin/landingpages/_spring/landingPagesContext.xml"/>
@@ -17,33 +17,6 @@
 	<import resource="classpath:/org/olat/admin/user/delete/service/_spring/deletionContext.xml"/>
 	<import resource="classpath:/org/olat/admin/user/tools/_spring/userToolsContext.xml"/>
 
-	<bean id="adminModule" class="org.olat.admin.AdminModule">
-		<constructor-arg index="0" ref="propertyManager" />
-		<property name="persistedProperties">
-			<bean class="org.olat.core.configuration.PersistedProperties" scope="prototype" init-method="init" destroy-method="destroy">
-				<constructor-arg index="0" ref="coordinatorManager"/>
-				<constructor-arg index="1" ref="adminModule" />
-			</bean>
-		</property>	
-	</bean>
-                       
-	<bean  class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
-		<property name="targetObject" ref="adminModule" />
-        <property name="targetMethod" value="init" />
-        <property name="arguments">
-        			<!-- Important: Set tomcats policy to allow read/write access to Root and TmpDir  -->
-                    <value>
-                    <!-- 
-					    -1 =: no user sessions, only Administrator roles can log in
-					     0 =: unlimited, hence limited only by RAM
-			          1..n =: n sessions at max, then a static not available page is displayed.
-			          default is 0		     
-					-->
-	                    maxNumberOfSessions=0
-	                </value>
-	     </property>
-	</bean>
-	
 	<!-- Sites admin. panel -->
 	<bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints">
 		<property name="order" value="8215" />
@@ -63,5 +36,4 @@
 			</list>
 		</property>
 	</bean>
-
 </beans>
\ No newline at end of file
diff --git a/src/main/java/org/olat/admin/landingpages/LandingPagesModule.java b/src/main/java/org/olat/admin/landingpages/LandingPagesModule.java
index 06e851df1dbc8122ba8da69c399ef21597c125ea..28779381af004faef106247714390fe0bf70f3a7 100644
--- a/src/main/java/org/olat/admin/landingpages/LandingPagesModule.java
+++ b/src/main/java/org/olat/admin/landingpages/LandingPagesModule.java
@@ -23,10 +23,12 @@ import java.util.ArrayList;
 
 import org.olat.admin.landingpages.model.Rule;
 import org.olat.admin.landingpages.model.Rules;
-import org.olat.core.configuration.AbstractOLATModule;
-import org.olat.core.configuration.PersistedProperties;
+import org.olat.core.configuration.AbstractSpringModule;
 import org.olat.core.util.StringHelper;
+import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.xml.XStreamHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import com.thoughtworks.xstream.XStream;
 
@@ -36,7 +38,8 @@ import com.thoughtworks.xstream.XStream;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
-public class LandingPagesModule extends AbstractOLATModule {
+@Service("landingPagesModule")
+public class LandingPagesModule extends AbstractSpringModule {
 	private static final String CONFIG_RULES = "rules";
 	private static final XStream rulesXStream;
 	static {
@@ -46,6 +49,11 @@ public class LandingPagesModule extends AbstractOLATModule {
 	}
 	
 	private Rules rules;
+	
+	@Autowired
+	public LandingPagesModule(CoordinatorManager coordinatorManager) {
+		super(coordinatorManager);
+	}
 
 	@Override
 	public void init() {
@@ -67,11 +75,6 @@ public class LandingPagesModule extends AbstractOLATModule {
 	protected void initFromChangedProperties() {
 		init();
 	}
-
-	@Override
-	public void setPersistedProperties(PersistedProperties persistedProperties) {
-		this.moduleConfigProperties = persistedProperties;
-	}
 	
 	public Rules getRules() {
 		return rules;
diff --git a/src/main/java/org/olat/admin/landingpages/_spring/landingPagesContext.xml b/src/main/java/org/olat/admin/landingpages/_spring/landingPagesContext.xml
index f5757d67a1de19b04a8bf638275dfbea114908db..2c394b8256bc1704925b0e60724585436f45f11e 100644
--- a/src/main/java/org/olat/admin/landingpages/_spring/landingPagesContext.xml
+++ b/src/main/java/org/olat/admin/landingpages/_spring/landingPagesContext.xml
@@ -4,16 +4,6 @@
 	xsi:schemaLocation="
   http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans.xsd">
-
-	<bean id="landingPagesModule" class="org.olat.admin.landingpages.LandingPagesModule" 
-		init-method="init" depends-on="coordinatorManager">
-		<property name="persistedProperties">
-			<bean class="org.olat.core.configuration.PersistedProperties" scope="prototype" init-method="init" destroy-method="destroy">
-				<constructor-arg index="0" ref="coordinatorManager"/>
-				<constructor-arg index="1" ref="landingPagesModule"/>
-			</bean>
-		</property>
-	</bean>
 	
 	<bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints">
 		<property name="order" value="7206" />
diff --git a/src/main/java/org/olat/admin/landingpages/ui/LandingPagesAdminController.java b/src/main/java/org/olat/admin/landingpages/ui/LandingPagesAdminController.java
index b0904424a04ebb461190ea3399d658433082592a..12d19100fc3d6e775d9380b28315c3d88ba76731 100644
--- a/src/main/java/org/olat/admin/landingpages/ui/LandingPagesAdminController.java
+++ b/src/main/java/org/olat/admin/landingpages/ui/LandingPagesAdminController.java
@@ -140,9 +140,9 @@ public class LandingPagesAdminController extends FormBasicController {
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(RCols.landingPageChooser.i18nKey(), RCols.landingPageChooser.ordinal()));
 		
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("up", -1, "up",
-				new StaticFlexiCellRenderer("", "up", "o_icon_move_up o_icon-lg",translate("up"))));
+				new StaticFlexiCellRenderer("", "up", "o_icon o_icon-lg o_icon_move_up",translate("up"))));
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("down", -1, "down",
-				new StaticFlexiCellRenderer("", "down", "o_icon_move_down o_icon-lg", translate("down"))));
+				new StaticFlexiCellRenderer("", "down", "o_icon o_icon-lg o_icon_move_down", translate("down"))));
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("add", translate("add"), "add"));
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("delete", translate("delete"), "delete"));
 
diff --git a/src/main/java/org/olat/admin/registration/_spring/registrationContext.xml b/src/main/java/org/olat/admin/registration/_spring/registrationContext.xml
index 4a7ff782eadc6ff18232fca643657129adcdb01a..4a85d11eacfd5a91f7f36c947a3dc7e23125a974 100644
--- a/src/main/java/org/olat/admin/registration/_spring/registrationContext.xml
+++ b/src/main/java/org/olat/admin/registration/_spring/registrationContext.xml
@@ -3,7 +3,7 @@
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="
   http://www.springframework.org/schema/beans 
-  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
+  http://www.springframework.org/schema/beans/spring-beans.xsd">
 
 	<bean id="systemRegistrationModule" class="org.olat.admin.registration.SystemRegistrationModule" 
 		init-method="init" depends-on="coordinatorManager">
diff --git a/src/main/java/org/olat/admin/site/ui/SitesConfigurationController.java b/src/main/java/org/olat/admin/site/ui/SitesConfigurationController.java
index b611016f3f18f2ee45cd798e5ce5b344acc1bb0f..757d9244041515f5694928f01e9b877d8817e800 100644
--- a/src/main/java/org/olat/admin/site/ui/SitesConfigurationController.java
+++ b/src/main/java/org/olat/admin/site/ui/SitesConfigurationController.java
@@ -137,9 +137,9 @@ public class SitesConfigurationController extends FormBasicController {
 		}
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, SiteCols.defaultOrder.i18nKey(), SiteCols.defaultOrder.ordinal(), false, null));
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("up", SiteCols.up.ordinal(), "up",
-				new StaticFlexiCellRenderer("", "up", "o_icon_move_up o_icon-lg", translate("up"))));
+				new StaticFlexiCellRenderer("", "up", "o_icon o_icon-lg o_icon_move_up", translate("up"))));
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("down", SiteCols.down.ordinal(), "down",
-				new StaticFlexiCellRenderer("", "down", "o_icon_move_down o_icon-lg", translate("down"))));
+				new StaticFlexiCellRenderer("", "down", "o_icon o_icon-lg o_icon_move_down", translate("down"))));
 
 		model = new SiteDefModel(columnsModel);
 		
diff --git a/src/main/java/org/olat/admin/sysinfo/_spring/sysinfoContext.xml b/src/main/java/org/olat/admin/sysinfo/_spring/sysinfoContext.xml
index 7c3f0250e483b247b6ee9b7d640cb83fd53132cd..44537e2578ddd5f5c2977b70106e85df3dc31a40 100644
--- a/src/main/java/org/olat/admin/sysinfo/_spring/sysinfoContext.xml
+++ b/src/main/java/org/olat/admin/sysinfo/_spring/sysinfoContext.xml
@@ -8,8 +8,6 @@
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context.xsd">
 
-	<context:component-scan base-package="org.olat.admin.sysinfo" />
-
 	<bean id="org.olat.admin.sysinfo.InfoMessageManager" 
 		class="org.olat.admin.sysinfo.InfoMessageManager">
 		<constructor-arg index="0"  ref="coordinatorManager"/>
diff --git a/src/main/java/org/olat/admin/user/tools/_spring/userToolsContext.xml b/src/main/java/org/olat/admin/user/tools/_spring/userToolsContext.xml
index 8ba8742118da33aa8c7ef0492f37fbc5db2dd954..eab6488095dda509766c2521d971c03693440e04 100644
--- a/src/main/java/org/olat/admin/user/tools/_spring/userToolsContext.xml
+++ b/src/main/java/org/olat/admin/user/tools/_spring/userToolsContext.xml
@@ -7,8 +7,6 @@
         http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/context 
         http://www.springframework.org/schema/context/spring-context.xsd">
-  
-	<context:component-scan base-package="org.olat.admin.user.tools" />
 	
 	<bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints">
 		<property name="order" value="7206" />