diff --git a/openbis/build.gradle b/openbis/build.gradle
index b2ad1d95bfef79734dbc5af98fa9bb0380e39871..7e3a556eb71c8a5f3446b0039ce5a8bc7c9bc4ce 100644
--- a/openbis/build.gradle
+++ b/openbis/build.gradle
@@ -29,7 +29,9 @@ dependencies {
 			'apache:poi-ooxml:3.8-20120326',
 			'hibernate:hibernate-validator:4.2.0.Final',
 			'unimi:fastutil:5.1.5',
-			'apache:commons-collections:+'
+			'apache:commons-collections:+',
+			'springframework:spring-context-support:+',
+			'ehcache:ehcache:2.10.0'
 
     runtime 'slf4j:slf4j-log4j12:+'
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/method/SearchMaterialSqlMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/method/SearchMaterialSqlMethodExecutor.java
index a3f8260f8141151fbba2bc5628d8755cd5749f9e..cad95debe984fd597346bc0f2bec274cc63832ba 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/method/SearchMaterialSqlMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/method/SearchMaterialSqlMethodExecutor.java
@@ -26,6 +26,7 @@ import org.springframework.stereotype.Component;
 
 import ch.ethz.sis.openbis.generic.server.api.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.api.v3.executor.material.ISearchMaterialIdExecutor;
+import ch.ethz.sis.openbis.generic.server.api.v3.translator.ITranslationContextProvider;
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.TranslationContext;
 import ch.ethz.sis.openbis.generic.server.api.v3.translator.entity.material.sql.IMaterialSqlTranslator;
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.material.Material;
@@ -45,6 +46,9 @@ public class SearchMaterialSqlMethodExecutor extends AbstractMethodExecutor impl
     @Autowired
     private IMaterialSqlTranslator translator;
 
+    @Autowired
+    private ITranslationContextProvider contextProvider;
+
     @Override
     public List<Material> search(final String sessionToken, final MaterialSearchCriterion criterion, final MaterialFetchOptions fetchOptions)
     {
@@ -86,21 +90,16 @@ public class SearchMaterialSqlMethodExecutor extends AbstractMethodExecutor impl
             return Collections.emptyList();
         }
 
-        TranslationContext translationContext = null;
+        Integer cacheMode = fetchOptions.getCacheMode();
+        cacheMode = cacheMode == null ? 0 : cacheMode;
 
-        if (fetchOptions.getCacheMode() != null)
-        {
-            translationContext = (TranslationContext) context.getSession().getAttributes().get(getClass().getName() + "_context");
-            if (translationContext == null)
-            {
-                translationContext = new TranslationContext(context.getSession());
-                context.getSession().getAttributes().put(getClass().getName() + "_context", translationContext);
-            }
-        } else
+        if (cacheMode == 999) // TODO
         {
-            translationContext = new TranslationContext(context.getSession());
+            contextProvider.discardTranslationContext(context.getSession());
         }
 
+        TranslationContext translationContext = contextProvider.getTranslationContext(context.getSession(), cacheMode > 0);
+
         Map<Long, Material> peToObjectMap = translator.translate(translationContext, peList, fetchOptions);
         return new ArrayList<Material>(peToObjectMap.values());
     }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/ITranslationContextProvider.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/ITranslationContextProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5d9a65021588fc124643007e30dde7d7d7aea6e0
--- /dev/null
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/ITranslationContextProvider.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2013 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package ch.ethz.sis.openbis.generic.server.api.v3.translator;
+
+import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
+
+public interface ITranslationContextProvider
+{
+    /**
+     * Get the translation context for the current session
+     * 
+     * @param session
+     * @param useCache whether to cache the context for later use
+     * @return
+     */
+    TranslationContext getTranslationContext(Session session, boolean useCache);
+
+    /**
+     * Optional call to notify the server that the corresponding session context is not going to be used ever
+     * 
+     * @param session
+     */
+    void discardTranslationContext(Session session);
+}
\ No newline at end of file
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContext.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContext.java
index 3749ac1ffb80adc2790e63a39adb6cb714f2d354..e6790ec5d3e515622ad7eeec090adc39c8e7dab3 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContext.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContext.java
@@ -15,6 +15,7 @@ public class TranslationContext extends Context
 
     public TranslationCache getTranslationCache()
     {
+
         return translationCache;
     }
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContextProvider.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContextProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..bff5dd61f0eedd96f6666c0002602df5600416fe
--- /dev/null
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/translator/TranslationContextProvider.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2013 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package ch.ethz.sis.openbis.generic.server.api.v3.translator;
+
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+
+import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
+
+@Component
+public class TranslationContextProvider implements ITranslationContextProvider
+{
+    @Override
+    @Cacheable(value = "searchCache", key = "#session.getSessionToken()", condition = "#useCache")
+    public TranslationContext getTranslationContext(Session session, boolean useCache)
+    {
+        return new TranslationContext(session);
+    }
+
+    @Override
+    @CacheEvict(value = "searchCache", key = "#session.getSessionToken()")
+    public void discardTranslationContext(Session session)
+    {
+        // aop noop
+    }
+}
diff --git a/openbis/source/java/ehcache.xml b/openbis/source/java/ehcache.xml
index 986e8496e48b13d3fa5c677a7c0d2ce7ee02b3cf..c7338d4e625274931afa89f5c741be2bf60beec0 100644
--- a/openbis/source/java/ehcache.xml
+++ b/openbis/source/java/ehcache.xml
@@ -1,19 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<ehcache  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
-    <diskStore path="java.io.tmpdir" />
+	<diskStore path="java.io.tmpdir" />
 
-    <!--
-        // The default cache configuration for (see warnings in the server startup log):
-        // * ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPropertyPE
-        // * ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPropertyPE
-        // * ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE.materialProperties
-        // * ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE.experimentProperties
-        // and:
-        // * org.hibernate.cache.UpdateTimestampsCache
-        // * org.hibernate.cache.StandardQueryCache
-    -->
-    <defaultCache maxElementsInMemory="1000000" eternal="true" overflowToDisk="false"
-        diskPersistent="false" memoryStoreEvictionPolicy="LFU" />
+	<!-- // The default cache configuration for (see warnings in the server 
+		startup log): // * ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPropertyPE 
+		// * ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPropertyPE // 
+		* ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE.materialProperties 
+		// * ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE.experimentProperties 
+		// and: // * org.hibernate.cache.UpdateTimestampsCache // * org.hibernate.cache.StandardQueryCache -->
+	<defaultCache maxElementsInMemory="1000000" eternal="true"
+		overflowToDisk="false" diskPersistent="false"
+		memoryStoreEvictionPolicy="LFU" />
+
+	<cache name="searchCache" eternal="false" maxElementsInMemory="100"
+		overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"
+		timeToLiveSeconds="300" memoryStoreEvictionPolicy="LRU" />
 
 </ehcache>
\ No newline at end of file
diff --git a/openbis/source/java/genericApplicationContext.xml b/openbis/source/java/genericApplicationContext.xml
index e4dc1e18237ac43481516d46d908864fa1b5b9d3..e2c31aabd0b4e491578c5e81519d110f3ba74a9c 100644
--- a/openbis/source/java/genericApplicationContext.xml
+++ b/openbis/source/java/genericApplicationContext.xml
@@ -1,413 +1,436 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <beans xmlns="http://www.springframework.org/schema/beans"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns:tx="http://www.springframework.org/schema/tx"
-    xmlns:plugins="http://www.springframework.org/schema/context"
-    xmlns:aop="http://www.springframework.org/schema/aop"
-    xsi:schemaLocation="http://www.springframework.org/schema/beans
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
+	xmlns:plugins="http://www.springframework.org/schema/context"
+	xmlns:aop="http://www.springframework.org/schema/aop"
+	xmlns:cache="http://www.springframework.org/schema/cache"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans
 			http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 			http://www.springframework.org/schema/tx
 			http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context-2.5.xsd
             http://www.springframework.org/schema/aop 
-            http://www.springframework.org/schema/aop/spring-aop.xsd"
-            >
-
-    <import resource="hibernateContext.xml" />
-    <import resource="dbConfigurationContext.xml" />
-
-    <bean id="data-source" factory-bean="db-configuration-context" factory-method="getDataSource" />
-
-    <bean id="exception-translator" class="ch.systemsx.cisd.openbis.generic.server.business.bo.NextExceptionFallbackExceptionTranslator" />
-
-	<bean id="memory-monitor" class="ch.systemsx.cisd.common.monitoring.JMXMemoryMonitorSpringBean" />
-
-  <bean id="hot-deployment-plugin-container" class="ch.systemsx.cisd.openbis.generic.server.HotDeploymentController" >
-    <constructor-arg ref="common-server" />
-    <constructor-arg ref="entity-validation-factory" />
-    <constructor-arg ref="dynamic-property-calculator-factory" />
-    <constructor-arg ref="managed-property-evaluator-factory" />
-  </bean>
-  
-  <bean id="entity-validation-factory" class="ch.systemsx.cisd.openbis.generic.server.dataaccess.entity_validation.EntityValidatorFactory" >
-    <constructor-arg value="${entity-validation-plugins-directory}" />
-    <constructor-arg ref="jython-evaluator-pool" />
-  </bean>
-  
-  <bean id="dynamic-property-calculator-factory"
-        class="ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.DynamicPropertyCalculatorFactory">
-        <constructor-arg value="${dynamic-property-plugins-directory}" />
-        <constructor-arg ref="jython-evaluator-pool" />
-  </bean>
-  
-  <bean id="managed-property-evaluator-factory"
-        class="ch.systemsx.cisd.openbis.generic.shared.managed_property.ManagedPropertyEvaluatorFactory">
-        <constructor-arg value="${managed-property-plugins-directory}" />
-        <constructor-arg ref="jython-evaluator-pool" />
-  </bean>
-  
-  <bean id="properties-batch-manager" class="ch.systemsx.cisd.openbis.generic.server.business.PropertiesBatchManager" >
-        <constructor-arg ref="managed-property-evaluator-factory" />
-  </bean>
-
-    <tx:annotation-driven transaction-manager="transaction-manager"/>
-    <aop:aspectj-autoproxy/>
-
-    <bean id="transaction-manager"
-        class="ch.systemsx.cisd.openbis.generic.server.dataaccess.db.OpenBISHibernateTransactionManager">
-        <constructor-arg ref="dao-factory" />
-        <constructor-arg ref="entity-validation-factory" />
-        <constructor-arg ref="dynamic-property-calculator-factory" />
-        <constructor-arg ref="managed-property-evaluator-factory" />
-        <constructor-arg ref="session-manager" />
-        <property name="sessionFactory" ref="hibernate-session-factory" />
-        <property name="dynamicPropertiesInterceptor">
-            <ref bean="dynamic-properties-interceptor" />
-        </property>
-    </bean>
-
-    <bean id="dynamic-properties-interceptor"
-          class="ch.systemsx.cisd.openbis.generic.server.dataaccess.db.DynamicPropertiesInterceptor">
-          <property name="dynamicPropertyScheduler" ref="dynamic-property-scheduler" />
-    </bean>
-    
-    <bean id="dynamic-property-evaluator"
-        class="ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.DynamicPropertyEvaluationRunnable">
-        <constructor-arg ref="hibernate-session-factory" />
-        <constructor-arg ref="dao-factory" />
-        <constructor-arg ref="full-text-index-updater" />
-        <constructor-arg ref="dynamic-property-scheduler" />
-        <constructor-arg ref="dynamic-property-calculator-factory" />
-        <constructor-arg ref="managed-property-evaluator-factory" />
-    </bean>
-    
-    <bean id="relationship-service"
-        class="ch.systemsx.cisd.openbis.generic.server.business.RelationshipService">
-        <property name="daoFactory" ref="dao-factory" />
-    </bean>
-
-    <bean id="sql-script-provider" class="ch.systemsx.cisd.dbmigration.DBMigrationEngine"
-        factory-method="createOrMigrateDatabaseAndGetScriptProvider">
-        <constructor-arg ref="db-configuration-context" />
-        <constructor-arg>
-            <bean
-                class="ch.systemsx.cisd.openbis.generic.server.dataaccess.db.DatabaseVersionHolder"
-                factory-method="getDatabaseVersion" />
-        </constructor-arg>
-    </bean>
-
-    <bean id="dao-factory"
-        class="ch.systemsx.cisd.openbis.generic.server.dataaccess.db.DAOFactory">
-        <constructor-arg ref="db-configuration-context" />
-        <constructor-arg ref="hibernate-session-factory" />
-        <constructor-arg ref="hibernate-search-context" />
-        <constructor-arg ref="full-text-index-updater" />
-        <constructor-arg ref="dynamic-property-scheduler" />
-    </bean>
-    
-    <bean id="dss-factory" class="ch.systemsx.cisd.openbis.generic.server.business.DataStoreServiceFactory"/>
-
-    <bean id="authentication-service"
-        class="ch.systemsx.cisd.openbis.generic.server.AuthenticationServiceHolder">
-        <constructor-arg ref="${authentication-service}" />
-    </bean>
-
-    <bean id="session-manager" class="ch.systemsx.cisd.openbis.generic.server.OpenBisSessionManager">
-        <constructor-arg>
-            <bean class="ch.systemsx.cisd.openbis.generic.server.SessionFactory">
-                <constructor-arg ref="dao-factory" />
-                <constructor-arg ref="dss-factory" />
-            </bean>
-        </constructor-arg>
-        <constructor-arg>
-            <bean class="ch.systemsx.cisd.openbis.generic.shared.LogMessagePrefixGenerator" />
-        </constructor-arg>
-        <constructor-arg ref="authentication-service" />
-        <constructor-arg>
-            <bean class="ch.systemsx.cisd.common.servlet.RequestContextProviderAdapter">
-                <constructor-arg ref="request-context-provider" />
-            </bean>
-        </constructor-arg>
-        <!-- The time after which an inactive session is expired by the service (in minutes). -->
-        <constructor-arg value="${session-timeout}" />
-        <constructor-arg value="${session-timeout-no-login}" />
-        <!-- Enable login with email addresses -->
-        <constructor-arg value="true" />
-        <constructor-arg ref="dao-factory"/>
-    </bean>
-    
-    <bean id="display-settings-provider" class="ch.systemsx.cisd.openbis.generic.server.DisplaySettingsProvider" />
-    
-    <bean id="remote-host-validator" class="ch.systemsx.cisd.openbis.generic.server.WhiteListBasedRemoteHostValidator">
-        <constructor-arg value="${accepted-remote-hosts-for-identity-change}"/>
-    </bean>
-
-    <bean id="common-business-object-factory"
-        class="ch.systemsx.cisd.openbis.generic.server.CommonBusinessObjectFactory">
-        <constructor-arg ref="dao-factory" />
-        <constructor-arg ref="dss-factory" />
-        <constructor-arg ref="relationship-service" />
-        <constructor-arg ref="entity-operation-checker" />
-        <constructor-arg ref="service-conversation-client-manager" />
-        <constructor-arg ref="managed-property-evaluator-factory" />
-        <constructor-arg ref="multiplexer" />
-        <constructor-arg ref="jython-evaluator-pool" />
-    </bean>
-
-    <bean id="last-modification-state"
-          class="ch.systemsx.cisd.openbis.generic.shared.basic.dto.LastModificationState" />
-          
-    <bean id="data-store-service-registrator" 
-          class="ch.systemsx.cisd.openbis.generic.server.DataStoreServiceRegistrator">
-        <constructor-arg ref="dao-factory" />
-    </bean>
-
-    <bean id="dss-based-data-source-provider" 
-          class="ch.systemsx.cisd.openbis.generic.server.dataaccess.DataStoreServerBasedDataSourceProvider">
-        <constructor-arg ref="dao-factory" />
-        <constructor-arg value="etc/dss-datasource-mapping" />
-    </bean>
-    
-    <!-- 
-        // Common
-    -->
-    
-    <bean id="common-server" class="ch.systemsx.cisd.openbis.generic.server.CommonServer">
-        <constructor-arg ref="authentication-service" />
-        <constructor-arg ref="session-manager" />
-        <constructor-arg ref="dao-factory" />
-        <constructor-arg ref="common-business-object-factory" />
-        <constructor-arg ref="data-store-service-registrator" />
-        <constructor-arg ref="last-modification-state" />
-        <constructor-arg ref="entity-validation-factory" />
-        <constructor-arg ref="dynamic-property-calculator-factory" />
-        <constructor-arg ref="managed-property-evaluator-factory" />
-        <property name="userForAnonymousLogin" value="${user-for-anonymous-login}"/>
-        <property name="CISDHelpdeskEmail" value="cisd.helpdesk@bsse.ethz.ch" />
-        <property name="defaultPutDataStoreServerCode" value="${dss-rpc.put.dss-code}" />
-    </bean>
-
-		<bean id="web-client-configuration-provider"
-        class="ch.systemsx.cisd.openbis.generic.shared.WebClientConfigurationProvider">
-        <constructor-arg value="${web-client-configuration-file}" />
-    </bean>
-
-    <bean id="common-service" class="ch.systemsx.cisd.openbis.generic.client.web.server.CommonClientService">
-        <constructor-arg ref="common-server" />
-        <constructor-arg ref="request-context-provider" />
-        <property name="cifexURL" value="${cifex-url}"/>
-        <property name="cifexRecipient" value="${cifex-recipient}"/>
-        <property name="onlineHelpGenericRootURL" value="${onlinehelp.generic.root-url}"/>
-        <property name="onlineHelpGenericPageTemplate" value="${onlinehelp.generic.page-template}"/>
-        <property name="onlineHelpSpecificRootURL" value="${onlinehelp.specific.root-url}"/>
-        <property name="onlineHelpSpecificPageTemplate" value="${onlinehelp.specific.page-template}"/>
-        <property name="maxResults" value="${hibernate.search.maxResults}" />
-    </bean>
-    
-    <bean id="registration-queue" class="ch.systemsx.cisd.openbis.generic.client.web.server.queue.ConsumerQueue">
-        <constructor-arg ref="mail-client-parameters" />
-    </bean>
-    
-    <!-- 
-        // HTML Escaping
-     -->
-    <bean id="html-escaping-advisor" class="ch.systemsx.cisd.openbis.generic.client.web.server.StringHtmlEscapingPointcutAdvisor" />
-    
-    <!--
-        // Exception translation
-     -->
-    <bean id="client-service-exception-translating-advisor" class="ch.systemsx.cisd.openbis.generic.client.web.server.ClientServiceExceptionTranslatingAdvisor" />
-    <bean id="server-exception-translating-advisor" class="ch.systemsx.cisd.openbis.generic.server.ServerExceptionTranslatingAdvisor" />
-    
-    <bean id="rpc-name-server" class="ch.systemsx.cisd.openbis.common.api.server.RpcServiceNameServer" />
-    
-    <!-- 
-        // Tracking
-    -->
-    
-    <bean id="tracking-server" class="ch.systemsx.cisd.openbis.generic.server.TrackingServer">
-        <constructor-arg ref="session-manager" />
-        <constructor-arg ref="dao-factory" />
-        <constructor-arg ref="common-business-object-factory" />
-    </bean>
-
-    <!-- 
-        // Service conversation client manager 
-    -->
-    <bean id="service-conversation-client-manager" class="ch.systemsx.cisd.openbis.generic.server.ServiceConversationClientManager">
-    </bean>
-    
-    <!-- 
-        // Service conversation server manager 
-    -->
-    <bean id="service-conversation-server-manager" class="ch.systemsx.cisd.openbis.generic.server.ServiceConversationServerManager">
-        <property name="etlService" ref="etl-service" />
-    </bean>
-    
-    <!-- 
-        // ETL Service 
-    -->
-    <bean id="etl-service" class="ch.systemsx.cisd.openbis.generic.server.ServiceForDataStoreServer">
-        <constructor-arg ref="authentication-service" />
-        <constructor-arg ref="session-manager" />
-        <constructor-arg ref="dao-factory" />
-        <constructor-arg ref="common-business-object-factory" />
-        <constructor-arg ref="dss-factory" />
-        <constructor-arg ref="trusted-origin-domain-provider" />
-        <constructor-arg ref="etl-entity-operation-checker" />
-        <constructor-arg ref="data-store-service-registrator" />
-        <constructor-arg ref="dss-based-data-source-provider" />
-        <constructor-arg ref="managed-property-evaluator-factory" />
-        <property name="conversationClient" ref="service-conversation-client-manager" />
-        <property name="conversationServer" ref="service-conversation-server-manager" />
-        <property name="timeout" value="${server-timeout-in-minutes}" />
-    </bean>
-    
-    <bean id="etl-entity-operation-checker" class="ch.systemsx.cisd.openbis.generic.server.ETLEntityOperationChecker"/>
-    
-    <bean id="entity-operation-checker" class="ch.systemsx.cisd.openbis.generic.server.business.EntityOperationChecker"/>
-
-    <bean id="jython-evaluator-pool" 
-          class="ch.systemsx.cisd.openbis.generic.server.JythonEvaluatorPool">
-        <constructor-arg ref="dao-factory" />
-        <constructor-arg value="${jython-evaluator-pool-size}" />
-    </bean>
-    
-    <!-- 
-        // Transaction
-    -->
-
-    <!-- bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
-        <property name="transactionInterceptor" ref="transaction-interceptor" />
-    </bean -->
-
-    <bean id="transaction-interceptor"
-        class="org.springframework.transaction.interceptor.TransactionInterceptor">
-        <property name="transactionManager" ref="transaction-manager" />
-        <property name="transactionAttributeSource">
-            <bean
-                class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource" />
-        </property>
-    </bean>
-
-    <!-- 
-        // Database Last Modification Monitor
-        // This advice will auto-magically used as an interceptor for server methods (e.g. ICommonServer)
-    -->
-    
-    <bean class="ch.systemsx.cisd.openbis.generic.server.DatabaseLastModificationAdvisor">
-        <constructor-arg ref="last-modification-state" />
-    </bean>
-
-    <!-- 
-        // Authorization
-    -->
-
-    <bean class="ch.systemsx.cisd.openbis.generic.server.authorization.AuthorizationAdvisor">
-        <constructor-arg ref="${authorization-component-factory}" />
-    </bean>
-
-    <bean id="no-authorization"
-        class="ch.systemsx.cisd.openbis.generic.server.authorization.NoAuthorization" />
-
-    <bean id="active-authorization"
-        class="ch.systemsx.cisd.openbis.generic.server.authorization.ActiveAuthorization">
-        <constructor-arg ref="dao-factory" />
-    </bean>
-
-    <!-- 
-        // Logging
-    -->
-
-    <bean class="ch.systemsx.cisd.openbis.common.spring.LogAdvisor" />
-    <bean class="ch.systemsx.cisd.openbis.common.spring.MarkerLogApplicationListener"/>
-    
-    <!--
-    	// Optimistic Lock Failure Retrying
-    -->
-    <bean class="ch.systemsx.cisd.openbis.generic.server.OptimisticLockingRetryAdvisor" />
-
-    <!--
-      // Logging of long running threads
-    -->  
-    <bean class="ch.systemsx.cisd.openbis.generic.server.LongRunningThreadAdvisor" />
-
-        
-    <!--
-        //Mail Client Parameters
-    -->
-    <bean id="mail-client-parameters" class="ch.systemsx.cisd.common.mail.MailClientParameters">
-        <property name="from" value="${mail.from}"/>
-        <property name="smtpHost" value="${mail.smtp.host}"/>
-        <property name="smtpPort" value="${mail.smtp.port}"/>
-        <property name="smtpUser" value="${mail.smtp.user}"/>
-        <property name="smtpPassword" value="${mail.smtp.password}"/>
-        <property name="testAddress" value="${mail.smtp.address}"/>
-    </bean>
-    
-    <!--  
-       Maintenance Tasks
-     -->
-    
-    <bean id="maintenance-task-starter" 
-        class="ch.systemsx.cisd.openbis.generic.server.MaintenanceTaskStarter">
-    </bean>
-
-    
-    <!--  
-       Core plugins registration
-     -->
-    
-    <bean id="core-plugin-registrator" class="ch.systemsx.cisd.openbis.generic.server.coreplugin.CorePluginRegistrator">
-        <property name="commonServer" ref="common-server"/>
-        <property name="pluginsFolderName" value="${core-plugins-folder}"/>
-        <property name="enabledTechnologies" value="${enabled-modules}"/>
-        <property name="disabledMasterDataInitialization" value="${disabled-master-data-initialization}"/>
-    </bean>
-    
-    <!--
-       Material-specific configuration 
-     -->
-   <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
-     <property name="targetClass"><value>ch.systemsx.cisd.openbis.generic.shared.util.MaterialConfigurationProvider</value></property>
-     <property name="targetMethod"><value>initialize</value></property>
-     <property name="arguments">
-       <list>
-         <value>${material-relax-code-constraints}</value>
-       </list>
-     </property>     
-   </bean>
-   
-    <bean id="trusted-origin-domain-provider" class="ch.systemsx.cisd.openbis.generic.server.TrustedCrossOriginDomainsProvider">
-        <constructor-arg value="${trusted-cross-origin-domains}"/>
-    </bean>
-
-    <bean id="objectMapper-v1" class="ch.systemsx.cisd.openbis.generic.shared.api.v1.json.GenericObjectMapper" />
-    <bean id="objectMapper-v3" class="ch.systemsx.cisd.openbis.generic.shared.api.v3.json.GenericObjectMapper" />
-
-    <!--
-        // Plugins
-    -->
-
-    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
-	  <bean class="ch.systemsx.cisd.openbis.common.spring.AnnotationBeanPostProcessorIgnoringMissingBeans"/>
+            http://www.springframework.org/schema/aop/spring-aop.xsd
+            http://www.springframework.org/schema/cache
+            http://www.springframework.org/schema/cache/spring-cache.xsd">
+
+	<import resource="hibernateContext.xml" />
+	<import resource="dbConfigurationContext.xml" />
+
+	<bean id="data-source" factory-bean="db-configuration-context"
+		factory-method="getDataSource" />
+
+	<bean id="exception-translator"
+		class="ch.systemsx.cisd.openbis.generic.server.business.bo.NextExceptionFallbackExceptionTranslator" />
+
+	<bean id="memory-monitor"
+		class="ch.systemsx.cisd.common.monitoring.JMXMemoryMonitorSpringBean" />
+
+	<bean id="hot-deployment-plugin-container"
+		class="ch.systemsx.cisd.openbis.generic.server.HotDeploymentController">
+		<constructor-arg ref="common-server" />
+		<constructor-arg ref="entity-validation-factory" />
+		<constructor-arg ref="dynamic-property-calculator-factory" />
+		<constructor-arg ref="managed-property-evaluator-factory" />
+	</bean>
+
+	<bean id="entity-validation-factory"
+		class="ch.systemsx.cisd.openbis.generic.server.dataaccess.entity_validation.EntityValidatorFactory">
+		<constructor-arg value="${entity-validation-plugins-directory}" />
+		<constructor-arg ref="jython-evaluator-pool" />
+	</bean>
+
+	<bean id="dynamic-property-calculator-factory"
+		class="ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.DynamicPropertyCalculatorFactory">
+		<constructor-arg value="${dynamic-property-plugins-directory}" />
+		<constructor-arg ref="jython-evaluator-pool" />
+	</bean>
+
+	<bean id="managed-property-evaluator-factory"
+		class="ch.systemsx.cisd.openbis.generic.shared.managed_property.ManagedPropertyEvaluatorFactory">
+		<constructor-arg value="${managed-property-plugins-directory}" />
+		<constructor-arg ref="jython-evaluator-pool" />
+	</bean>
+
+	<bean id="properties-batch-manager"
+		class="ch.systemsx.cisd.openbis.generic.server.business.PropertiesBatchManager">
+		<constructor-arg ref="managed-property-evaluator-factory" />
+	</bean>
+
+	<tx:annotation-driven transaction-manager="transaction-manager" />
+	<aop:aspectj-autoproxy />
+
+	<bean id="transaction-manager"
+		class="ch.systemsx.cisd.openbis.generic.server.dataaccess.db.OpenBISHibernateTransactionManager">
+		<constructor-arg ref="dao-factory" />
+		<constructor-arg ref="entity-validation-factory" />
+		<constructor-arg ref="dynamic-property-calculator-factory" />
+		<constructor-arg ref="managed-property-evaluator-factory" />
+		<constructor-arg ref="session-manager" />
+		<property name="sessionFactory" ref="hibernate-session-factory" />
+		<property name="dynamicPropertiesInterceptor">
+			<ref bean="dynamic-properties-interceptor" />
+		</property>
+	</bean>
+
+	<bean id="dynamic-properties-interceptor"
+		class="ch.systemsx.cisd.openbis.generic.server.dataaccess.db.DynamicPropertiesInterceptor">
+		<property name="dynamicPropertyScheduler" ref="dynamic-property-scheduler" />
+	</bean>
+
+	<bean id="dynamic-property-evaluator"
+		class="ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.DynamicPropertyEvaluationRunnable">
+		<constructor-arg ref="hibernate-session-factory" />
+		<constructor-arg ref="dao-factory" />
+		<constructor-arg ref="full-text-index-updater" />
+		<constructor-arg ref="dynamic-property-scheduler" />
+		<constructor-arg ref="dynamic-property-calculator-factory" />
+		<constructor-arg ref="managed-property-evaluator-factory" />
+	</bean>
+
+	<bean id="relationship-service"
+		class="ch.systemsx.cisd.openbis.generic.server.business.RelationshipService">
+		<property name="daoFactory" ref="dao-factory" />
+	</bean>
+
+	<bean id="sql-script-provider" class="ch.systemsx.cisd.dbmigration.DBMigrationEngine"
+		factory-method="createOrMigrateDatabaseAndGetScriptProvider">
+		<constructor-arg ref="db-configuration-context" />
+		<constructor-arg>
+			<bean
+				class="ch.systemsx.cisd.openbis.generic.server.dataaccess.db.DatabaseVersionHolder"
+				factory-method="getDatabaseVersion" />
+		</constructor-arg>
+	</bean>
+
+	<bean id="dao-factory"
+		class="ch.systemsx.cisd.openbis.generic.server.dataaccess.db.DAOFactory">
+		<constructor-arg ref="db-configuration-context" />
+		<constructor-arg ref="hibernate-session-factory" />
+		<constructor-arg ref="hibernate-search-context" />
+		<constructor-arg ref="full-text-index-updater" />
+		<constructor-arg ref="dynamic-property-scheduler" />
+	</bean>
+
+	<bean id="dss-factory"
+		class="ch.systemsx.cisd.openbis.generic.server.business.DataStoreServiceFactory" />
+
+	<bean id="authentication-service"
+		class="ch.systemsx.cisd.openbis.generic.server.AuthenticationServiceHolder">
+		<constructor-arg ref="${authentication-service}" />
+	</bean>
+
+	<bean id="session-manager"
+		class="ch.systemsx.cisd.openbis.generic.server.OpenBisSessionManager">
+		<constructor-arg>
+			<bean class="ch.systemsx.cisd.openbis.generic.server.SessionFactory">
+				<constructor-arg ref="dao-factory" />
+				<constructor-arg ref="dss-factory" />
+			</bean>
+		</constructor-arg>
+		<constructor-arg>
+			<bean
+				class="ch.systemsx.cisd.openbis.generic.shared.LogMessagePrefixGenerator" />
+		</constructor-arg>
+		<constructor-arg ref="authentication-service" />
+		<constructor-arg>
+			<bean class="ch.systemsx.cisd.common.servlet.RequestContextProviderAdapter">
+				<constructor-arg ref="request-context-provider" />
+			</bean>
+		</constructor-arg>
+		<!-- The time after which an inactive session is expired by the service 
+			(in minutes). -->
+		<constructor-arg value="${session-timeout}" />
+		<constructor-arg value="${session-timeout-no-login}" />
+		<!-- Enable login with email addresses -->
+		<constructor-arg value="true" />
+		<constructor-arg ref="dao-factory" />
+	</bean>
+
+	<bean id="display-settings-provider"
+		class="ch.systemsx.cisd.openbis.generic.server.DisplaySettingsProvider" />
+
+	<bean id="remote-host-validator"
+		class="ch.systemsx.cisd.openbis.generic.server.WhiteListBasedRemoteHostValidator">
+		<constructor-arg value="${accepted-remote-hosts-for-identity-change}" />
+	</bean>
+
+	<bean id="common-business-object-factory"
+		class="ch.systemsx.cisd.openbis.generic.server.CommonBusinessObjectFactory">
+		<constructor-arg ref="dao-factory" />
+		<constructor-arg ref="dss-factory" />
+		<constructor-arg ref="relationship-service" />
+		<constructor-arg ref="entity-operation-checker" />
+		<constructor-arg ref="service-conversation-client-manager" />
+		<constructor-arg ref="managed-property-evaluator-factory" />
+		<constructor-arg ref="multiplexer" />
+		<constructor-arg ref="jython-evaluator-pool" />
+	</bean>
+
+	<bean id="last-modification-state"
+		class="ch.systemsx.cisd.openbis.generic.shared.basic.dto.LastModificationState" />
+
+	<bean id="data-store-service-registrator"
+		class="ch.systemsx.cisd.openbis.generic.server.DataStoreServiceRegistrator">
+		<constructor-arg ref="dao-factory" />
+	</bean>
+
+	<bean id="dss-based-data-source-provider"
+		class="ch.systemsx.cisd.openbis.generic.server.dataaccess.DataStoreServerBasedDataSourceProvider">
+		<constructor-arg ref="dao-factory" />
+		<constructor-arg value="etc/dss-datasource-mapping" />
+	</bean>
+
+	<!-- // Common -->
+
+	<bean id="common-server" class="ch.systemsx.cisd.openbis.generic.server.CommonServer">
+		<constructor-arg ref="authentication-service" />
+		<constructor-arg ref="session-manager" />
+		<constructor-arg ref="dao-factory" />
+		<constructor-arg ref="common-business-object-factory" />
+		<constructor-arg ref="data-store-service-registrator" />
+		<constructor-arg ref="last-modification-state" />
+		<constructor-arg ref="entity-validation-factory" />
+		<constructor-arg ref="dynamic-property-calculator-factory" />
+		<constructor-arg ref="managed-property-evaluator-factory" />
+		<property name="userForAnonymousLogin" value="${user-for-anonymous-login}" />
+		<property name="CISDHelpdeskEmail" value="cisd.helpdesk@bsse.ethz.ch" />
+		<property name="defaultPutDataStoreServerCode" value="${dss-rpc.put.dss-code}" />
+	</bean>
+
+	<bean id="web-client-configuration-provider"
+		class="ch.systemsx.cisd.openbis.generic.shared.WebClientConfigurationProvider">
+		<constructor-arg value="${web-client-configuration-file}" />
+	</bean>
+
+	<bean id="common-service"
+		class="ch.systemsx.cisd.openbis.generic.client.web.server.CommonClientService">
+		<constructor-arg ref="common-server" />
+		<constructor-arg ref="request-context-provider" />
+		<property name="cifexURL" value="${cifex-url}" />
+		<property name="cifexRecipient" value="${cifex-recipient}" />
+		<property name="onlineHelpGenericRootURL" value="${onlinehelp.generic.root-url}" />
+		<property name="onlineHelpGenericPageTemplate" value="${onlinehelp.generic.page-template}" />
+		<property name="onlineHelpSpecificRootURL" value="${onlinehelp.specific.root-url}" />
+		<property name="onlineHelpSpecificPageTemplate" value="${onlinehelp.specific.page-template}" />
+		<property name="maxResults" value="${hibernate.search.maxResults}" />
+	</bean>
+
+	<bean id="registration-queue"
+		class="ch.systemsx.cisd.openbis.generic.client.web.server.queue.ConsumerQueue">
+		<constructor-arg ref="mail-client-parameters" />
+	</bean>
+
+	<!-- // HTML Escaping -->
+	<bean id="html-escaping-advisor"
+		class="ch.systemsx.cisd.openbis.generic.client.web.server.StringHtmlEscapingPointcutAdvisor" />
+
+	<!-- // Exception translation -->
+	<bean id="client-service-exception-translating-advisor"
+		class="ch.systemsx.cisd.openbis.generic.client.web.server.ClientServiceExceptionTranslatingAdvisor" />
+	<bean id="server-exception-translating-advisor"
+		class="ch.systemsx.cisd.openbis.generic.server.ServerExceptionTranslatingAdvisor" />
+
+	<bean id="rpc-name-server"
+		class="ch.systemsx.cisd.openbis.common.api.server.RpcServiceNameServer" />
+
+	<!-- // Tracking -->
+
+	<bean id="tracking-server" class="ch.systemsx.cisd.openbis.generic.server.TrackingServer">
+		<constructor-arg ref="session-manager" />
+		<constructor-arg ref="dao-factory" />
+		<constructor-arg ref="common-business-object-factory" />
+	</bean>
+
+	<!-- // Service conversation client manager -->
+	<bean id="service-conversation-client-manager"
+		class="ch.systemsx.cisd.openbis.generic.server.ServiceConversationClientManager">
+	</bean>
+
+	<!-- // Service conversation server manager -->
+	<bean id="service-conversation-server-manager"
+		class="ch.systemsx.cisd.openbis.generic.server.ServiceConversationServerManager">
+		<property name="etlService" ref="etl-service" />
+	</bean>
+
+	<!-- // ETL Service -->
+	<bean id="etl-service"
+		class="ch.systemsx.cisd.openbis.generic.server.ServiceForDataStoreServer">
+		<constructor-arg ref="authentication-service" />
+		<constructor-arg ref="session-manager" />
+		<constructor-arg ref="dao-factory" />
+		<constructor-arg ref="common-business-object-factory" />
+		<constructor-arg ref="dss-factory" />
+		<constructor-arg ref="trusted-origin-domain-provider" />
+		<constructor-arg ref="etl-entity-operation-checker" />
+		<constructor-arg ref="data-store-service-registrator" />
+		<constructor-arg ref="dss-based-data-source-provider" />
+		<constructor-arg ref="managed-property-evaluator-factory" />
+		<property name="conversationClient" ref="service-conversation-client-manager" />
+		<property name="conversationServer" ref="service-conversation-server-manager" />
+		<property name="timeout" value="${server-timeout-in-minutes}" />
+	</bean>
+
+	<bean id="etl-entity-operation-checker"
+		class="ch.systemsx.cisd.openbis.generic.server.ETLEntityOperationChecker" />
+
+	<bean id="entity-operation-checker"
+		class="ch.systemsx.cisd.openbis.generic.server.business.EntityOperationChecker" />
+
+	<bean id="jython-evaluator-pool"
+		class="ch.systemsx.cisd.openbis.generic.server.JythonEvaluatorPool">
+		<constructor-arg ref="dao-factory" />
+		<constructor-arg value="${jython-evaluator-pool-size}" />
+	</bean>
+
+	<!-- // Transaction -->
+
+	<!-- bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor"> 
+		<property name="transactionInterceptor" ref="transaction-interceptor" /> 
+		</bean -->
+
+	<bean id="transaction-interceptor"
+		class="org.springframework.transaction.interceptor.TransactionInterceptor">
+		<property name="transactionManager" ref="transaction-manager" />
+		<property name="transactionAttributeSource">
+			<bean
+				class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource" />
+		</property>
+	</bean>
+
+	<!-- // Database Last Modification Monitor // This advice will auto-magically 
+		used as an interceptor for server methods (e.g. ICommonServer) -->
+
+	<bean
+		class="ch.systemsx.cisd.openbis.generic.server.DatabaseLastModificationAdvisor">
+		<constructor-arg ref="last-modification-state" />
+	</bean>
+
+	<!-- // Authorization -->
+
+	<bean
+		class="ch.systemsx.cisd.openbis.generic.server.authorization.AuthorizationAdvisor">
+		<constructor-arg ref="${authorization-component-factory}" />
+	</bean>
+
+	<bean id="no-authorization"
+		class="ch.systemsx.cisd.openbis.generic.server.authorization.NoAuthorization" />
+
+	<bean id="active-authorization"
+		class="ch.systemsx.cisd.openbis.generic.server.authorization.ActiveAuthorization">
+		<constructor-arg ref="dao-factory" />
+	</bean>
+
+	<!-- // Logging -->
+
+	<bean class="ch.systemsx.cisd.openbis.common.spring.LogAdvisor" />
+	<bean
+		class="ch.systemsx.cisd.openbis.common.spring.MarkerLogApplicationListener" />
+
+	<!-- // Optimistic Lock Failure Retrying -->
+	<bean
+		class="ch.systemsx.cisd.openbis.generic.server.OptimisticLockingRetryAdvisor" />
+
+	<!-- // Logging of long running threads -->
+	<bean
+		class="ch.systemsx.cisd.openbis.generic.server.LongRunningThreadAdvisor" />
+
+
+	<!-- //Mail Client Parameters -->
+	<bean id="mail-client-parameters" class="ch.systemsx.cisd.common.mail.MailClientParameters">
+		<property name="from" value="${mail.from}" />
+		<property name="smtpHost" value="${mail.smtp.host}" />
+		<property name="smtpPort" value="${mail.smtp.port}" />
+		<property name="smtpUser" value="${mail.smtp.user}" />
+		<property name="smtpPassword" value="${mail.smtp.password}" />
+		<property name="testAddress" value="${mail.smtp.address}" />
+	</bean>
+
+	<!-- Maintenance Tasks -->
+
+	<bean id="maintenance-task-starter"
+		class="ch.systemsx.cisd.openbis.generic.server.MaintenanceTaskStarter">
+	</bean>
+
+
+	<!-- Core plugins registration -->
+
+	<bean id="core-plugin-registrator"
+		class="ch.systemsx.cisd.openbis.generic.server.coreplugin.CorePluginRegistrator">
+		<property name="commonServer" ref="common-server" />
+		<property name="pluginsFolderName" value="${core-plugins-folder}" />
+		<property name="enabledTechnologies" value="${enabled-modules}" />
+		<property name="disabledMasterDataInitialization" value="${disabled-master-data-initialization}" />
+	</bean>
+
+	<!-- Material-specific configuration -->
+	<bean
+		class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+		<property name="targetClass">
+			<value>ch.systemsx.cisd.openbis.generic.shared.util.MaterialConfigurationProvider
+			</value>
+		</property>
+		<property name="targetMethod">
+			<value>initialize</value>
+		</property>
+		<property name="arguments">
+			<list>
+				<value>${material-relax-code-constraints}</value>
+			</list>
+		</property>
+	</bean>
+
+	<bean id="trusted-origin-domain-provider"
+		class="ch.systemsx.cisd.openbis.generic.server.TrustedCrossOriginDomainsProvider">
+		<constructor-arg value="${trusted-cross-origin-domains}" />
+	</bean>
+
+	<bean id="objectMapper-v1"
+		class="ch.systemsx.cisd.openbis.generic.shared.api.v1.json.GenericObjectMapper" />
+	<bean id="objectMapper-v3"
+		class="ch.systemsx.cisd.openbis.generic.shared.api.v3.json.GenericObjectMapper" />
+
+	<!-- // Plugins -->
+
+	<bean
+		class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
+	<bean
+		class="ch.systemsx.cisd.openbis.common.spring.AnnotationBeanPostProcessorIgnoringMissingBeans" />
+
+	<plugins:component-scan base-package="ch.systemsx.cisd.openbis"
+		annotation-config="false">
+		<plugins:exclude-filter type="annotation"
+			expression="org.springframework.stereotype.Controller" />
+	</plugins:component-scan>
+
+	<plugins:component-scan base-package="ch.ethz.sis.openbis"
+		annotation-config="false">
+		<plugins:exclude-filter type="regex"
+			expression="ch\.ethz\.sis\.openbis\.generic\.dss\..*" />
+		<plugins:exclude-filter type="annotation"
+			expression="org.springframework.stereotype.Controller" />
+	</plugins:component-scan>
+
+
+	<!-- Mutiplexer -->
+
+	<bean id="multiplexer"
+		class="ch.systemsx.cisd.common.multiplexer.ThreadPoolMultiplexer">
+		<constructor-arg value="mutiplexer-thread-pool" />
+	</bean>
+
+
+	<!-- Caching -->
 	
-    <plugins:component-scan base-package="ch.systemsx.cisd.openbis" annotation-config="false">
-        <plugins:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
-    </plugins:component-scan>
-    
-    <plugins:component-scan base-package="ch.ethz.sis.openbis" annotation-config="false">
-        <plugins:exclude-filter type="regex" expression="ch\.ethz\.sis\.openbis\.generic\.dss\..*" />
-        <plugins:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
-    </plugins:component-scan>
-    
-    
-    <!-- Mutiplexer -->
-    
-    <bean id="multiplexer" class="ch.systemsx.cisd.common.multiplexer.ThreadPoolMultiplexer">
-        <constructor-arg value="mutiplexer-thread-pool" />
-    </bean>
-    
+	<cache:annotation-driven />
+	
+	<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
+		<property name="cacheManager" ref="ehcache" />
+	</bean>
+	<bean id="ehcache"
+		class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
+		<property name="configLocation" value="classpath:ehcache.xml" />
+	</bean>
 </beans>