diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/MaterialConfigurationProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/MaterialConfigurationProvider.java
index 8db6f37c3f1620ab4881cc356a78df11c20f507d..483b956b19245dc740e08a6e2a4837ad8888a5be 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/MaterialConfigurationProvider.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/MaterialConfigurationProvider.java
@@ -39,9 +39,20 @@ public class MaterialConfigurationProvider
     /**
      * only used for unit tests.
      */
-    public static final void initializeForTesting(boolean isRelaxCodeConstraints)
+    public static final MaterialConfigurationProvider initializeForTesting(
+            boolean isRelaxCodeConstraints)
     {
+        MaterialConfigurationProvider oldInstance = instance;
         instance = new MaterialConfigurationProvider(isRelaxCodeConstraints);
+        return oldInstance;
+    }
+
+    /**
+     * only used for unit tests.
+     */
+    public static void restoreFromTesting(MaterialConfigurationProvider provider)
+    {
+        instance = provider;
     }
 
     // invoked from Spring
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
index 9f59d97882fdb9f63dd73c126ec7610e7dfe68ee..3ed107bcdaea9b0bf11dc6a482f973eb3724970d 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
@@ -105,7 +105,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.builders.DatabaseInstancePEBu
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.DatabaseInstanceIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
-import ch.systemsx.cisd.openbis.generic.shared.util.MaterialConfigurationProvider;
 
 /**
  * @author Franz-Josef Elmer
@@ -149,7 +148,6 @@ public class ETLServiceTest extends AbstractServerTestCase
         dataStoreService = context.mock(IDataStoreService.class);
         entityOperationChecker = context.mock(IETLEntityOperationChecker.class);
         dataStoreServiceRegistrator = context.mock(IDataStoreServiceRegistrator.class);
-        MaterialConfigurationProvider.initializeForTesting(false);
     }
 
     @Test
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MaterialDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MaterialDAOTest.java
index 08fbfa8499f682e28932b7121822df62ebbf888c..239dd33a54720140480a60843abe269511510dd3 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MaterialDAOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MaterialDAOTest.java
@@ -62,12 +62,14 @@ public final class MaterialDAOTest extends AbstractDAOTest
 
     private IMaterialDAO materialDAO;
 
+    private MaterialConfigurationProvider oldProvider;
+
     @BeforeMethod
     @Override
     public void setUp()
     {
         super.setUp();
-        MaterialConfigurationProvider.initializeForTesting(false);
+        oldProvider = MaterialConfigurationProvider.initializeForTesting(false);
         materialDAO = daoFactory.getMaterialDAO();
     }
 
@@ -76,7 +78,7 @@ public final class MaterialDAOTest extends AbstractDAOTest
     public void tearDown()
     {
         super.tearDown();
-        MaterialConfigurationProvider.initializeForTesting(false);
+        MaterialConfigurationProvider.restoreFromTesting(oldProvider);
     }
 
     @Test
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java
index ede4af9e3d2dc668c385b5f915f98e6561e5ad33..2eb627c755c15c6a82cf4db33bfa864634059d35 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java
@@ -41,13 +41,13 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.IEntityTypeBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IEntityTypePropertyTypeBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentTable;
-import ch.systemsx.cisd.openbis.generic.server.business.bo.ISpaceBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialTable;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IPropertyTypeBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IPropertyTypeTable;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleTable;
+import ch.systemsx.cisd.openbis.generic.server.business.bo.ISpaceBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.ITrashBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IVocabularyBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.IDatasetLister;
@@ -88,6 +88,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
+import ch.systemsx.cisd.openbis.generic.shared.util.MaterialConfigurationProvider;
 
 /**
  * An <i>abstract</i> test infrastructure for {@link IServer} implementations.
@@ -200,6 +201,8 @@ public abstract class AbstractServerTestCase extends AssertJUnit
 
     protected IEntityOperationsLogDAO entityOperationsLogDAO;
 
+    private MaterialConfigurationProvider oldProvider;
+
     @BeforeMethod
     @SuppressWarnings("unchecked")
     public void setUp()
@@ -296,11 +299,13 @@ public abstract class AbstractServerTestCase extends AssertJUnit
                     will(returnValue(entityOperationsLogDAO));
                 }
             });
+        oldProvider = MaterialConfigurationProvider.initializeForTesting(false);
     }
 
     @AfterMethod
     public void tearDown()
     {
+        MaterialConfigurationProvider.restoreFromTesting(oldProvider);
         logRecorder.reset();
         // To following line of code should also be called at the end of each test method.
         // Otherwise one do not known which test failed.
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/QiagenScreeningLibraryColumnExtractorTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/QiagenScreeningLibraryColumnExtractorTest.java
index 2c7f931f0ecddc383b8e1891d84145fd27507068..11e5f16af58c20f370e258a1bdef59ee012300a3 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/QiagenScreeningLibraryColumnExtractorTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/QiagenScreeningLibraryColumnExtractorTest.java
@@ -38,9 +38,11 @@ public class QiagenScreeningLibraryColumnExtractorTest extends AssertJUnit
 
     private QiagenScreeningLibraryColumnExtractor extractor;
 
+    private MaterialConfigurationProvider oldProvider;
+
     public void setUp(boolean isRelaxedMaterialCodes)
     {
-        MaterialConfigurationProvider.initializeForTesting(isRelaxedMaterialCodes);
+        oldProvider = MaterialConfigurationProvider.initializeForTesting(isRelaxedMaterialCodes);
         extractor =
                 new QiagenScreeningLibraryColumnExtractor(HEADER_TOKENS,
                         MaterialConfigurationProvider.getInstance());
@@ -49,7 +51,7 @@ public class QiagenScreeningLibraryColumnExtractorTest extends AssertJUnit
     @AfterMethod
     public void tearDown()
     {
-        MaterialConfigurationProvider.initializeForTesting(false);
+        MaterialConfigurationProvider.restoreFromTesting(oldProvider);
     }    
 
     @Test