diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/ConfigProvider.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ConfigProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b69e72bad146b9f18413fbe9da3c973d329abac
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ConfigProvider.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2011 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.systemsx.cisd.etlserver;
+
+import java.io.File;
+import java.util.Properties;
+
+import ch.systemsx.cisd.openbis.dss.generic.shared.IConfigProvider;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.DssPropertyParametersUtil;
+
+/**
+ * The default implementation of {@link IConfigProvider}.
+ * <p>
+ * Currently it is a simple wrapper around DssPropertyParametersUtil, but in the future we might
+ * consider replacing it.
+ * 
+ * @author Kaloyan Enimanev
+ */
+public class ConfigProvider implements IConfigProvider
+{
+    private final Properties properties;
+
+    public ConfigProvider()
+    {
+        this(DssPropertyParametersUtil.loadServiceProperties());
+    }
+
+    /**
+     * helper constructor - can be used for testing purposes.
+     */
+    public ConfigProvider(Properties properties)
+    {
+        this.properties = properties;
+    }
+
+    public File getStoreRoot()
+    {
+        return DssPropertyParametersUtil.getStoreRootDir(properties);
+    }
+
+    public String getDataStoreCode()
+    {
+        return DssPropertyParametersUtil.getDataStoreCode(properties);
+    }
+
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTask.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTask.java
index 69f8596379fe4a7880a092e3b073179973294caa..752bbcfbefd42fb760f925c81e576a6cfb36722f 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTask.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTask.java
@@ -37,10 +37,10 @@ import ch.systemsx.cisd.common.utilities.PropertyParametersUtil;
 import ch.systemsx.cisd.etlserver.ETLDaemon;
 import ch.systemsx.cisd.etlserver.plugins.DataSetMover;
 import ch.systemsx.cisd.etlserver.plugins.IDataSetMover;
+import ch.systemsx.cisd.openbis.dss.generic.shared.IConfigProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IShareIdManager;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
-import ch.systemsx.cisd.openbis.dss.generic.shared.utils.DssPropertyParametersUtil;
 import ch.systemsx.cisd.openbis.dss.generic.shared.utils.SegmentedStoreUtils;
 import ch.systemsx.cisd.openbis.dss.generic.shared.utils.Share;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
@@ -93,12 +93,14 @@ public class EagerShufflingTask extends AbstractPostRegistrationTask
     {
         this(properties, ETLDaemon.getIdsOfIncomingShares(), service, ServiceProvider.getShareIdManager(),
                 new SimpleFreeSpaceProvider(), new DataSetMover(service,
-                        ServiceProvider.getShareIdManager()), new Log4jSimpleLogger(operationLog));
+                ServiceProvider.getShareIdManager()), ServiceProvider.getConfigProvider(),
+                new Log4jSimpleLogger(operationLog));
     }
 
-    EagerShufflingTask(Properties properties, Set<String> incomingShares, IEncapsulatedOpenBISService service,
-            IShareIdManager shareIdManager, IFreeSpaceProvider freeSpaceProvider,
-            IDataSetMover dataSetMover, ISimpleLogger logger)
+    EagerShufflingTask(Properties properties, Set<String> incomingShares,
+            IEncapsulatedOpenBISService service, IShareIdManager shareIdManager,
+            IFreeSpaceProvider freeSpaceProvider, IDataSetMover dataSetMover,
+            IConfigProvider configProvider, ISimpleLogger logger)
     {
         super(properties, service);
         this.incomingShares = incomingShares;
@@ -107,8 +109,8 @@ public class EagerShufflingTask extends AbstractPostRegistrationTask
         this.dataSetMover = dataSetMover;
         this.logger = logger;
 
-        dataStoreCode = DssPropertyParametersUtil.getDataStoreCode(properties);
-        storeRoot = DssPropertyParametersUtil.getStoreRootDir(properties);
+        dataStoreCode = configProvider.getDataStoreCode();
+        storeRoot = configProvider.getStoreRoot();
         if (storeRoot.isDirectory() == false)
         {
             throw new ConfigurationFailureException(
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IConfigProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IConfigProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..edab468ac358e9507baa4bfb68b96f9403466902
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IConfigProvider.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2011 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.systemsx.cisd.openbis.dss.generic.shared;
+
+import java.io.File;
+
+/**
+ * A provider for DSS configuration infos which can be used at runtime.
+ * 
+ * @author Kaloyan Enimanev
+ */
+public interface IConfigProvider
+{
+
+    /**
+     * Return the DSS store root.
+     */
+    File getStoreRoot();
+
+    /**
+     * Return the data store code.
+     */
+    String getDataStoreCode();
+
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/ServiceProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/ServiceProvider.java
index 8869f2063e92070f7b4886f19bf4bdb80dfcad11..4f3f9854dfea53ee4ba5ada560a3356412c1fa8c 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/ServiceProvider.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/ServiceProvider.java
@@ -109,6 +109,11 @@ public class ServiceProvider
         return ((DataSourceProvider) getApplicationContext().getBean("data-source-provider"));
     }
 
+    public static IConfigProvider getConfigProvider()
+    {
+        return ((IConfigProvider) getApplicationContext().getBean("config-provider"));
+    }
+
     public static IDataStoreServiceInternal getDataStoreService()
     {
         Advised advised = (Advised) getApplicationContext().getBean("data-store-service");
diff --git a/datastore_server/source/java/dssApplicationContext.xml b/datastore_server/source/java/dssApplicationContext.xml
index ec66d8a79919cdef2751544bab197c16882faad7..86cb531ea1c927da67fde05aae759372b0a13cd7 100644
--- a/datastore_server/source/java/dssApplicationContext.xml
+++ b/datastore_server/source/java/dssApplicationContext.xml
@@ -114,6 +114,8 @@
     
     <bean id="data-source-provider" class="ch.systemsx.cisd.openbis.dss.generic.shared.DataSourceProvider" />
     
+    <bean id="config-provider" class="ch.systemsx.cisd.etlserver.ConfigProvider"/>
+    
     <!-- 
         // This discovers on-the-fly all <code>org.springframework.aop.Advisor</code> implementations.
     -->
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTaskTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTaskTest.java
index 6deda6a6316fe719495a8cccf161f3bc790a2303..3e438a9084b03006f41403fa33e787d498e797cb 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTaskTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTaskTest.java
@@ -42,9 +42,9 @@ import ch.systemsx.cisd.common.logging.ISimpleLogger;
 import ch.systemsx.cisd.common.logging.LogLevel;
 import ch.systemsx.cisd.common.test.RecordingMatcher;
 import ch.systemsx.cisd.etlserver.plugins.IDataSetMover;
+import ch.systemsx.cisd.openbis.dss.generic.shared.IConfigProvider;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IShareIdManager;
-import ch.systemsx.cisd.openbis.dss.generic.shared.utils.DssPropertyParametersUtil;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
 
 /**
@@ -65,6 +65,8 @@ public class EagerShufflingTaskTest extends AbstractFileSystemTestCase
     private IShareIdManager shareIdManager;
     private IFreeSpaceProvider freeSpaceProvider;
     private IDataSetMover dataSetMover;
+
+    private IConfigProvider configProvider;
     private ISimpleLogger logger;
     private File store;
     private File share1;
@@ -81,6 +83,7 @@ public class EagerShufflingTaskTest extends AbstractFileSystemTestCase
         service = context.mock(IEncapsulatedOpenBISService.class);
         shareIdManager = context.mock(IShareIdManager.class);
         freeSpaceProvider = context.mock(IFreeSpaceProvider.class);
+        configProvider = context.mock(IConfigProvider.class);
         dataSetMover = context.mock(IDataSetMover.class);
         logger = context.mock(ISimpleLogger.class);
         store = new File(workingDirectory.getAbsolutePath(), "store");
@@ -110,6 +113,7 @@ public class EagerShufflingTaskTest extends AbstractFileSystemTestCase
     @Test
     public void testShufflingIntoAnExtensionShare()
     {
+        prepareConfigProvider();
         EagerShufflingTask task = createTask();
         RecordingMatcher<HostAwareFile> hostAwareFileMatcher =
                 new RecordingMatcher<HostAwareFile>();
@@ -137,6 +141,7 @@ public class EagerShufflingTaskTest extends AbstractFileSystemTestCase
     @Test
     public void testShufflingIntoAnotherIncomingShare()
     {
+        prepareConfigProvider();
         EagerShufflingTask task = createTask();
         RecordingMatcher<HostAwareFile> hostAwareFileMatcher =
                 new RecordingMatcher<HostAwareFile>();
@@ -164,11 +169,13 @@ public class EagerShufflingTaskTest extends AbstractFileSystemTestCase
     @Test
     public void testShufflingButNoShareFoundExceptTheOwnOne()
     {
+        prepareConfigProvider();
         EagerShufflingTask task = createTask();
         RecordingMatcher<HostAwareFile> hostAwareFileMatcher =
                 new RecordingMatcher<HostAwareFile>();
         prepareFreeSpaceProvider(hostAwareFileMatcher, 200, 10, 10, 0);
         prepareListDataSets();
+
         RecordingMatcher<String> logMessageMatcher = prepareLogging(LogLevel.WARN);
         
         IPostRegistrationTaskExecutor executor = task.createExecutor(DATA_SET_CODE1);
@@ -204,6 +211,19 @@ public class EagerShufflingTaskTest extends AbstractFileSystemTestCase
             });
     }
 
+    private void prepareConfigProvider()
+    {
+        context.checking(new Expectations()
+            {
+                {
+                    allowing(configProvider).getDataStoreCode();
+                    will(returnValue(DATA_STORE_SERVER_CODE));
+                    allowing(configProvider).getStoreRoot();
+                    will(returnValue(store));
+                }
+            });
+    }
+
     private void prepareGetShareId()
     {
         context.checking(new Expectations()
@@ -269,8 +289,6 @@ public class EagerShufflingTaskTest extends AbstractFileSystemTestCase
     private EagerShufflingTask createTask()
     {
         Properties properties = new Properties();
-        properties.setProperty(DssPropertyParametersUtil.DSS_CODE_KEY, DATA_STORE_SERVER_CODE);
-        properties.setProperty(DssPropertyParametersUtil.STOREROOT_DIR_KEY, store.getPath());
         properties.setProperty(EagerShufflingTask.SHARE_FINDER_KEY + ".class",
                 SimpleShareFinder.class.getName());
         return createTask(properties);
@@ -280,7 +298,7 @@ public class EagerShufflingTaskTest extends AbstractFileSystemTestCase
     {
         return new EagerShufflingTask(properties,
                 new LinkedHashSet<String>(Arrays.asList("1", "2")), service, shareIdManager,
-                freeSpaceProvider, dataSetMover, logger);
+                freeSpaceProvider, dataSetMover, configProvider, logger);
     }
     
 }