diff --git a/dataset_download/.classpath b/dataset_download/.classpath
index 21346dc1b2c773af684d5655512d26bf7edd4855..6d822e1bd087830bcfe042d79577c4249c45b8fc 100644
--- a/dataset_download/.classpath
+++ b/dataset_download/.classpath
@@ -10,7 +10,6 @@
 	<classpathentry kind="lib" path="/libraries/jmock/jmock.jar"/>
 	<classpathentry kind="lib" path="/libraries/jetty/jetty.jar" sourcepath="/libraries/jetty/src/jetty.zip"/>
 	<classpathentry kind="lib" path="/libraries/jetty/jetty-util.jar" sourcepath="/libraries/jetty/src/jetty-util.zip"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/lims_base"/>
 	<classpathentry kind="lib" path="/libraries/commons-io/commons-io.jar" sourcepath="/libraries/commons-io/src.zip"/>
 	<classpathentry kind="lib" path="/libraries/commons-lang/commons-lang.jar" sourcepath="/libraries/commons-lang/src.zip"/>
 	<classpathentry kind="lib" path="/libraries/restrictionchecker/restrictions.jar"/>
@@ -19,5 +18,6 @@
 	<classpathentry kind="lib" path="/libraries/jmock/hamcrest/hamcrest-library.jar"/>
 	<classpathentry kind="lib" path="/libraries/jmock/objenesis/objenesis-1.0.jar"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/openbis"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/server-common"/>
 	<classpathentry kind="output" path="targets/classes"/>
 </classpath>
diff --git a/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/ApplicationContext.java b/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/ApplicationContext.java
index d4edd002a54bcc5b6f5efd30a7ade34487325ea6..e8ab5ec800588eba7250c20abf9e3e5e1ef47396 100644
--- a/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/ApplicationContext.java
+++ b/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/ApplicationContext.java
@@ -16,7 +16,7 @@
 
 package ch.systemsx.cisd.openbis.datasetdownload;
 
-import ch.systemsx.cisd.lims.base.IDataSetService;
+import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService;
 
 /**
  *  Application context. It contains the object accessing the openBIS for retrieving the data set,
@@ -26,13 +26,13 @@ import ch.systemsx.cisd.lims.base.IDataSetService;
  */
 class ApplicationContext
 {
-    private final IDataSetService dataSetService;
+    private final IETLLIMSService dataSetService;
     
     private final ConfigParameters configParameters;
 
     private final String applicationName;
     
-    ApplicationContext(IDataSetService service, ConfigParameters configParameters,
+    ApplicationContext(IETLLIMSService service, ConfigParameters configParameters,
             String applicationName)
     {
         this.dataSetService = service;
@@ -40,7 +40,7 @@ class ApplicationContext
         this.applicationName = applicationName;
     }
 
-    public final IDataSetService getDataSetService()
+    public final IETLLIMSService getDataSetService()
     {
         return dataSetService;
     }
diff --git a/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DataSetService.java b/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DataSetService.java
index e3651efafe00790964417a1805d6d64f7d321522..97181eb54e1b8dd77ede5b90f1239551b4648c20 100644
--- a/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DataSetService.java
+++ b/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DataSetService.java
@@ -17,28 +17,35 @@
 package ch.systemsx.cisd.openbis.datasetdownload;
 
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
-import ch.systemsx.cisd.lims.base.IDataSetService;
-import ch.systemsx.cisd.lims.base.ILIMSServiceFactory;
-import ch.systemsx.cisd.lims.base.ServiceRegistry;
+import ch.systemsx.cisd.common.spring.HttpInvokerUtils;
+import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.IAuthSession;
+import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePropertyPE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier;
+import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
 
 /**
  * A <code>IDataSetService</code> implementation.
  * 
  * @author Franz-Josef Elmer
  */
-final class DataSetService implements IDataSetService
+final class DataSetService implements IETLLIMSService
 {
-    private IDataSetService service;
+    private IETLLIMSService service;
 
     DataSetService(final ConfigParameters configParameters)
     {
-        final ILIMSServiceFactory factory = ServiceRegistry.getLIMSServiceFactory();
-        service = factory.createDataSetService(configParameters.getServerURL());
+        String url = configParameters.getServerURL() + "/rmi-etl";
+        service = HttpInvokerUtils.createServiceStub(IETLLIMSService.class, url, 5);
     }
 
     //
-    // IDataSetService
+    // IETLLIMSService
     //
 
     public final ExternalDataPE tryGetDataSet(final String sessionToken, final String dataSetCode)
@@ -63,4 +70,42 @@ final class DataSetService implements IDataSetService
         return service.getVersion();
     }
 
+    public String createDataSetCode(String sessionToken) throws UserFailureException
+    {
+        return null;
+    }
+
+    public DatabaseInstancePE getHomeDatabaseInstance(String sessionToken)
+    {
+        return null;
+    }
+
+    public void registerDataSet(String sessionToken, SampleIdentifier sampleIdentifier,
+            String procedureTypeCode, ExternalData externalData) throws UserFailureException
+    {
+    }
+
+    public ExperimentPE tryToGetBaseExperiment(String sessionToken,
+            SampleIdentifier sampleIdentifier) throws UserFailureException
+    {
+        return null;
+    }
+
+    public SamplePropertyPE[] tryToGetPropertiesOfTopSampleRegisteredFor(String sessionToken,
+            SampleIdentifier sampleIdentifier) throws UserFailureException
+    {
+        return null;
+    }
+
+    public DataStorePE getDataStore(String sessionToken, ExperimentIdentifier experimentIdentifier,
+            String dataSetTypeCode) throws UserFailureException
+    {
+        return null;
+    }
+
+    public IAuthSession getSession(String sessionToken) throws UserFailureException
+    {
+        return null;
+    }
+
 }
diff --git a/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadService.java b/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadService.java
index 266bd6b150e348fb07f3891701cd0e5eec9aca2c..60908d57a035fd0e20d617acf4cd4cd161ecbc63 100644
--- a/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadService.java
+++ b/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadService.java
@@ -30,9 +30,7 @@ import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.logging.LogInitializer;
 import ch.systemsx.cisd.common.utilities.PropertyUtils;
-import ch.systemsx.cisd.lims.base.IDataSetService;
-import ch.systemsx.cisd.lims.base.RMIBasedLIMSServiceFactory;
-import ch.systemsx.cisd.lims.base.ServiceRegistry;
+import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService;
 import ch.systemsx.cisd.openbis.generic.shared.IWebService;
 
 /**
@@ -58,7 +56,6 @@ public class DatasetDownloadService
     public static final void start()
     {
         assert server == null : "Server already started";
-        ServiceRegistry.setLIMSServiceFactory(RMIBasedLIMSServiceFactory.INSTANCE);
         final ApplicationContext applicationContext = createApplicationContext();
         server = createServer(applicationContext);
         try
@@ -135,7 +132,7 @@ public class DatasetDownloadService
     private final static ApplicationContext createApplicationContext()
     {
         final ConfigParameters configParameters = getConfigParameters();
-        final IDataSetService dataSetService = new DataSetService(configParameters);
+        final IETLLIMSService dataSetService = new DataSetService(configParameters);
         final ApplicationContext applicationContext =
                 new ApplicationContext(dataSetService, configParameters, "dataset-download");
         return applicationContext;
diff --git a/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadServlet.java b/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadServlet.java
index 289cd8f9e10e9d19cf13db25c1a5080f09979cba..d12090a824e38e9d560c9aafabda425da294d95a 100644
--- a/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadServlet.java
+++ b/dataset_download/source/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadServlet.java
@@ -48,7 +48,7 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
-import ch.systemsx.cisd.lims.base.IDataSetService;
+import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.LocatorType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.LocatorTypePE;
@@ -392,7 +392,7 @@ public class DatasetDownloadServlet extends HttpServlet
     {
         if (sessionIdOrNull != null)
         {
-            IDataSetService dataSetService = applicationContext.getDataSetService();
+            IETLLIMSService dataSetService = applicationContext.getDataSetService();
             ExternalDataPE dataSet = dataSetService.tryGetDataSet(sessionIdOrNull, dataSetCode);
             if (operationLog.isInfoEnabled())
             {
diff --git a/dataset_download/sourceTest/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadServletTest.java b/dataset_download/sourceTest/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadServletTest.java
index 65cdb5f030d33f177609bcf8473122a737419453..9dbc26c8d2b67a5db496b6501bbf21ae7736a2b7 100644
--- a/dataset_download/sourceTest/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadServletTest.java
+++ b/dataset_download/sourceTest/java/ch/systemsx/cisd/openbis/datasetdownload/DatasetDownloadServletTest.java
@@ -45,7 +45,7 @@ import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel;
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
 import ch.systemsx.cisd.common.logging.BufferedAppender;
 import ch.systemsx.cisd.common.utilities.OSUtilities;
-import ch.systemsx.cisd.lims.base.IDataSetService;
+import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE;
@@ -126,7 +126,7 @@ public class DatasetDownloadServletTest
 
     private HttpServletResponse response;
 
-    private IDataSetService dataSetService;
+    private IETLLIMSService dataSetService;
 
     private HttpSession httpSession;
 
@@ -137,7 +137,7 @@ public class DatasetDownloadServletTest
         context = new Mockery();
         request = context.mock(HttpServletRequest.class);
         response = context.mock(HttpServletResponse.class);
-        dataSetService = context.mock(IDataSetService.class);
+        dataSetService = context.mock(IETLLIMSService.class);
         httpSession = context.mock(HttpSession.class);
         TEST_FOLDER.mkdirs();
         EXAMPLE_DATA_SET_FOLDER.mkdir();