diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServer.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServer.java
new file mode 100644
index 0000000000000000000000000000000000000000..e2e8627b49a8bfe51e1923d8298d1dbb96b60a36
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServer.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2016 ETH Zuerich, SIS
+ *
+ * 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.server.cifs;
+
+import java.io.StringReader;
+
+import org.alfresco.jlan.app.XMLServerConfiguration;
+import org.alfresco.jlan.smb.server.SMBServer;
+import org.apache.log4j.Logger;
+
+import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
+import ch.systemsx.cisd.common.logging.LogCategory;
+import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.DssPropertyParametersUtil;
+
+/**
+ * 
+ *
+ * @author Franz-Josef Elmer
+ */
+public class CifsServer
+{
+    private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, CifsServer.class);
+    
+    private CifsServerConfig config;
+
+    private SMBServer server;
+
+    public CifsServer()
+    {
+        config = new CifsServerConfig(DssPropertyParametersUtil.loadServiceProperties());
+        if (config.isEnabled())
+        {
+            start();
+        }
+    }
+    
+    private void start()
+    {
+        try
+        {
+            operationLog.info("Starting up CIFS server at port " + config.getPort());
+            XMLServerConfiguration configuration = new XMLServerConfiguration();
+            configuration.loadConfiguration(new StringReader(config.getServerXmlConfig()));
+            server = new SMBServer(configuration);
+            server.startServer();
+        } catch (Exception ex)
+        {
+            throw CheckedExceptionTunnel.wrapIfNecessary(ex);
+        }
+    }
+    
+    /**
+     * called by spring IoC container when the application shuts down.
+     */
+    public void stop()
+    {
+        if (server != null)
+        {
+            server.shutdownServer(true);
+        }
+    }
+
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServerAuthenticator.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServerAuthenticator.java
new file mode 100644
index 0000000000000000000000000000000000000000..eef1d1f48c3adf51bd82b7724cd297e019251feb
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServerAuthenticator.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2016 ETH Zuerich, SIS
+ *
+ * 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.server.cifs;
+
+import org.alfresco.jlan.server.SrvSession;
+import org.alfresco.jlan.server.auth.CifsAuthenticator;
+import org.alfresco.jlan.server.auth.ClientInfo;
+import org.alfresco.jlan.server.auth.UserAccount;
+import org.alfresco.jlan.server.core.SharedDevice;
+
+/**
+ * @author Franz-Josef Elmer
+ */
+public class CifsServerAuthenticator extends CifsAuthenticator
+{
+    public CifsServerAuthenticator()
+    {
+        setAccessMode(USER_MODE);
+    }
+
+    @Override
+    public int authenticateShareConnect(ClientInfo client, SharedDevice share, String pwd, SrvSession sess)
+    {
+        System.out.println("CifsServerAuthenticator.authenticateShareConnect() >"+client+ "< >" + pwd + "< >"+sess+"<");
+        System.out.println(sess.getClientInformation());
+        System.out.println(sess.getAuthenticationContext());
+        System.out.println(client.getANSIPasswordAsString());
+        System.out.println(client.getPasswordAsString());
+        System.out.println(client.getUserName());
+        return Writeable;
+    }
+
+    @Override
+    public int authenticateUser(ClientInfo client, SrvSession sess, int alg)
+    {
+        System.out.println("CifsServerAuthenticator.authenticateUser() "+client+" "+sess+" "+alg);
+        System.out.println(sess.getClientInformation());
+        System.out.println(sess.getAuthenticationContext());
+        UserAccount userAcc = getUserDetails(client.getUserName());
+        System.out.println("user account:"+userAcc);
+        return AUTH_ALLOW;
+    }
+
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServerConfig.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServerConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7403752aa95ce4e0a0e7184263e85e776a4f8fe
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServerConfig.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2016 ETH Zuerich, SIS
+ *
+ * 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.server.cifs;
+
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+
+import ch.systemsx.cisd.common.collection.MapBuilder;
+import ch.systemsx.cisd.common.properties.PropertyParametersUtil;
+import ch.systemsx.cisd.common.properties.PropertyUtils;
+import ch.systemsx.cisd.common.string.Template;
+
+/**
+ * 
+ *
+ * @author Franz-Josef Elmer
+ */
+class CifsServerConfig
+{
+    private static final String SECTION_NAME = "cifs.server";
+    private static final Template CONFIG_TEMPLATE_XML = new Template("<jlanserver>\n"
+            + "<servers><SMB/></servers>\n"
+            + "<SMB>\n"
+            + "  <host name='${host.name}' domain='${host.domain}'>\n"
+            + "    <broadcast>${broadcast-mask}</broadcast>\n"
+            + "    <smbdialects>${smb-dialects}</smbdialects>\n"
+            + "    <tcpipSMB port='${smb-port}'/>\n"
+            + "  </host>\n"
+            + "  <authenticator>\n"
+            + "    <class>ch.systemsx.cisd.openbis.dss.generic.server.cifs.CifsServerAuthenticator</class>\n"
+            + "    <mode>USER</mode>\n"
+            + "  </authenticator>\n"
+            + "  <sessionDebug flags='${session-log-flags}'/>"
+            + "</SMB>\n"
+            + "<shares>\n"
+            + "  <diskshare name='${share-name}'>\n"
+            + "    <driver>\n"
+            + "      <!--class>ch.systemsx.cisd.openbis.dss.generic.server.cifs.DataSetCifsView</class-->\n"
+            + "      <class>org.alfresco.jlan.smb.server.disk.JavaFileDiskDriver</class>\n"
+            + "      <LocalPath>/Users/felmer/tmp/playgrounds/unix</LocalPath>\n"
+            + "    </driver>\n"
+            + "  </diskshare>\n"
+            + "</shares>\n"
+            + "<debug>\n"
+            + "  <output>\n"
+            + "    <class>ch.systemsx.cisd.openbis.dss.generic.server.cifs.CifsServerLogger</class>\n"
+            + "    <log-level>${log-level}</log-level>\n"
+            + "  </output>\n"
+            + "</debug>\n"
+            + "<security>\n"
+            + "    <JCEProvider>org.bouncycastle.jce.provider.BouncyCastleProvider</JCEProvider>\n"
+            + "    <authenticator>\n"
+            + "      <class>ch.systemsx.cisd.openbis.dss.generic.server.cifs.CifsServerAuthenticator</class>\n"
+            + "      <mode>USER</mode>\n"
+            + "    </authenticator>\n" +
+            "    <users>\n" + 
+            "      <user name=\"jlansrv\">\n" + 
+            "        <password>jlan</password>\n" + 
+            "        <comment>System administrator</comment>\n" + 
+            "        <administrator/>\n" + 
+            "      </user>\n" + 
+            "      <user name=\"felmer\">\n" + 
+            "        <password>felmer</password>\n" + 
+            "      </user>\n" + 
+            "      <user name=\"normal\">\n" + 
+            "        <password>normal</password>\n" + 
+            "      </user>\n" + 
+            "    </users>\n" + 
+            "  </security>\n" + 
+            "</jlanserver>\n" + 
+            "");
+    private static final String SMB_PORT_KEY = "smb-port";
+    private static Map<String, String> CONFIG_PARAMS = new MapBuilder<String, String>()
+            .entry("host.name", "ETHZ")
+            .entry("host.domain", "OPENBIS")
+            .entry("broadcast-mask", "255.255.255.255")
+            .entry("smb-dialects", "LanMan,NT")
+            .entry(SMB_PORT_KEY, "1445")
+            .entry("session-log-flags", "Negotiate,Socket,Tree")
+            .entry("log-level", "INFO")
+            .entry("share-name", "STORE")
+            .getMap();
+    
+    private final boolean enabled;
+    private final Properties serverProperties;
+    
+    public CifsServerConfig(Properties props)
+    {
+        serverProperties = PropertyParametersUtil.extractSingleSectionProperties(props, SECTION_NAME, false).getProperties();
+        enabled = PropertyUtils.getBoolean(serverProperties, "enable", false);
+    }
+
+    public boolean isEnabled()
+    {
+        return enabled;
+    }
+    
+    public String getPort()
+    {
+        return getProperty(SMB_PORT_KEY);
+    }
+    
+    private String getProperty(String key)
+    {
+        return serverProperties.getProperty(key, CONFIG_PARAMS.get(key));
+    }
+
+    public String getServerXmlConfig()
+    {
+        Template template = CONFIG_TEMPLATE_XML.createFreshCopy();
+        for (Entry<String, String> entry : CONFIG_PARAMS.entrySet())
+        {
+            String key = entry.getKey();
+            template.bind(key, serverProperties.getProperty(key, entry.getValue()));
+        }
+        return template.createText();
+    }
+    
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServerLogger.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServerLogger.java
new file mode 100644
index 0000000000000000000000000000000000000000..2caf5d14102f5bd7e2a8d324a60c3e64c0fa7bc9
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsServerLogger.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2016 ETH Zuerich, SIS
+ *
+ * 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.server.cifs;
+
+import org.alfresco.config.ConfigElement;
+import org.alfresco.jlan.debug.DebugInterface;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+
+import ch.systemsx.cisd.common.logging.LogCategory;
+import ch.systemsx.cisd.common.logging.LogFactory;
+
+/**
+ * 
+ *
+ * @author Franz-Josef Elmer
+ */
+public class CifsServerLogger implements DebugInterface
+{
+    private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION,
+            CifsServerLogger.class);
+    
+    private Level level = Level.INFO;
+    private ThreadLocal<StringBuilder> messageBuilder = new ThreadLocal<>();
+
+    @Override
+    public void initialize(ConfigElement params) throws Exception
+    {
+        operationLog.info("init CIFS server logger:\n" + Utils.render(params));
+        ConfigElement logLevel = params.getChild("log-level");
+        if (logLevel != null)
+        {
+            logLevel.getValue();
+            level = Level.toLevel(logLevel.getValue(), Level.INFO);
+        }
+    }
+
+    @Override
+    public void debugPrint(String str)
+    {
+        StringBuilder builder = messageBuilder.get();
+        if (builder == null)
+        {
+            builder = new StringBuilder();
+            messageBuilder.set(builder);
+        }
+        builder.append(str);
+    }
+
+    @Override
+    public void debugPrintln(String str)
+    {
+        StringBuilder builder = messageBuilder.get();
+        if (builder == null)
+        {
+            operationLog.log(level, str);
+        } else
+        {
+            operationLog.log(level, builder.append(str).toString());
+            builder.setLength(0);
+        }
+    }
+    
+    @Override
+    public void close()
+    {
+        operationLog.info("CifsServerLogger.close()");
+    }
+    
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/DataSetCifsView.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/DataSetCifsView.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ed1b53024c32ddfc4340fd42bd7cf9416f85f6f
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/DataSetCifsView.java
@@ -0,0 +1,242 @@
+/*
+ * Copyright 2016 ETH Zuerich, SIS
+ *
+ * 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.server.cifs;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import org.alfresco.config.ConfigElement;
+import org.alfresco.jlan.server.SrvSession;
+import org.alfresco.jlan.server.core.DeviceContext;
+import org.alfresco.jlan.server.core.DeviceContextException;
+import org.alfresco.jlan.server.filesys.DiskDeviceContext;
+import org.alfresco.jlan.server.filesys.DiskInterface;
+import org.alfresco.jlan.server.filesys.FileInfo;
+import org.alfresco.jlan.server.filesys.FileName;
+import org.alfresco.jlan.server.filesys.FileOpenParams;
+import org.alfresco.jlan.server.filesys.NetworkFile;
+import org.alfresco.jlan.server.filesys.SearchContext;
+import org.alfresco.jlan.server.filesys.TreeConnection;
+import org.apache.log4j.Logger;
+
+import ch.systemsx.cisd.common.logging.LogCategory;
+import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
+import ch.systemsx.cisd.openbis.generic.shared.IServiceForDataStoreServer;
+import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationService;
+
+/**
+ * 
+ *
+ * @author Franz-Josef Elmer
+ */
+public class DataSetCifsView implements DiskInterface
+{
+    private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, DataSetCifsView.class);
+    
+    private IServiceForDataStoreServer openBisService;
+    private IGeneralInformationService generalInfoService;
+    
+    public DataSetCifsView()
+    {
+    }
+
+    DataSetCifsView(IServiceForDataStoreServer openBisService, IGeneralInformationService generalInfoService)
+    {
+        this.openBisService = openBisService;
+        this.generalInfoService = generalInfoService;
+    }
+    
+    @Override
+    public DeviceContext createContext(String shareName, ConfigElement args) throws DeviceContextException
+    {
+        operationLog.info("create context for share " + shareName);
+        return new DiskDeviceContext(shareName);
+    }
+
+    @Override
+    public void treeOpened(SrvSession sess, TreeConnection tree)
+    {
+        operationLog.info("DataSetCifsView.treeOpened()");
+    }
+    
+
+    @Override
+    public boolean isReadOnly(SrvSession sess, DeviceContext ctx) throws IOException
+    {
+        System.out.println("DataSetCifsView.isReadOnly() " + ctx);
+        return true;
+    }
+
+    @Override
+    public FileInfo getFileInformation(SrvSession sess, TreeConnection tree, String path) throws IOException
+    {
+        String normalizedPath = FileName.buildPath(null, path, null, java.io.File.separatorChar);
+        System.out.println("DataSetCifsView.getFileInformation("+path+") "+normalizedPath);
+        System.out.println(sess.getClientInformation());
+        if (normalizedPath.equals("/"))
+        {
+            System.out.println("ROOT");
+        }
+        return new FileInfo(normalizedPath, 0, 0);
+    }
+
+    @Override
+    public SearchContext startSearch(SrvSession sess, TreeConnection tree, String searchPath, int attrib) throws FileNotFoundException
+    {
+        System.out.println("DataSetCifsView.startSearch() "+searchPath+" "+attrib);
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void treeClosed(SrvSession sess, TreeConnection tree)
+    {
+        operationLog.info("DataSetCifsView.treeClosed()");
+    }
+
+    @Override
+    public void closeFile(SrvSession sess, TreeConnection tree, NetworkFile param) throws IOException
+    {
+        System.out.println("DataSetCifsView.closeFile()");
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void createDirectory(SrvSession sess, TreeConnection tree, FileOpenParams params) throws IOException
+    {
+        System.out.println("DataSetCifsView.createDirectory()");
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public NetworkFile createFile(SrvSession sess, TreeConnection tree, FileOpenParams params) throws IOException
+    {
+        System.out.println("DataSetCifsView.createFile()");
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void deleteDirectory(SrvSession sess, TreeConnection tree, String dir) throws IOException
+    {
+        System.out.println("DataSetCifsView.deleteDirectory()");
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void deleteFile(SrvSession sess, TreeConnection tree, String name) throws IOException
+    {
+        System.out.println("DataSetCifsView.deleteFile()");
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public int fileExists(SrvSession sess, TreeConnection tree, String name)
+    {
+        System.out.println("DataSetCifsView.fileExists()");
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public void flushFile(SrvSession sess, TreeConnection tree, NetworkFile file) throws IOException
+    {
+        System.out.println("DataSetCifsView.flushFile()");
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public NetworkFile openFile(SrvSession sess, TreeConnection tree, FileOpenParams params) throws IOException
+    {
+        System.out.println("DataSetCifsView.openFile()");
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public int readFile(SrvSession sess, TreeConnection tree, NetworkFile file, byte[] buf, int bufPos, int siz, long filePos) throws IOException
+    {
+        System.out.println("DataSetCifsView.readFile()");
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public void renameFile(SrvSession sess, TreeConnection tree, String oldName, String newName) throws IOException
+    {
+        System.out.println("DataSetCifsView.renameFile()");
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public long seekFile(SrvSession sess, TreeConnection tree, NetworkFile file, long pos, int typ) throws IOException
+    {
+        System.out.println("DataSetCifsView.seekFile()");
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public void setFileInformation(SrvSession sess, TreeConnection tree, String name, FileInfo info) throws IOException
+    {
+        System.out.println("DataSetCifsView.setFileInformation()");
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void truncateFile(SrvSession sess, TreeConnection tree, NetworkFile file, long siz) throws IOException
+    {
+        System.out.println("DataSetCifsView.truncateFile()");
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public int writeFile(SrvSession sess, TreeConnection tree, NetworkFile file, byte[] buf, int bufoff, int siz, long fileoff) throws IOException
+    {
+        System.out.println("DataSetCifsView.writeFile()");
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    private IServiceForDataStoreServer getServiceForDataStoreServer()
+    {
+        if (openBisService == null)
+        {
+            openBisService = ServiceProvider.getServiceForDSS();
+        }
+        return openBisService;
+    }
+    
+    private IGeneralInformationService getGeneralInfoService()
+    {
+        if (generalInfoService == null)
+        {
+            generalInfoService = ServiceProvider.getGeneralInformationService();
+        }
+        return generalInfoService;
+    }
+
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/Utils.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/Utils.java
new file mode 100644
index 0000000000000000000000000000000000000000..25462e3eeb36ee39dd013e487654173e70489d75
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/Utils.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2016 ETH Zuerich, SIS
+ *
+ * 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.server.cifs;
+
+import java.util.List;
+import java.util.Map;
+
+import org.alfresco.config.ConfigElement;
+
+/**
+ * 
+ *
+ * @author Franz-Josef Elmer
+ */
+class Utils
+{
+    public static String render(ConfigElement element)
+    {
+        StringBuilder builder = new StringBuilder();
+        render("", builder, element);
+        return builder.toString();
+    }
+    
+    private static void render(String indentation, StringBuilder builder, ConfigElement element)
+    {
+        builder.append(indentation).append(element.getName()).append(" = ").append(element.getValue());
+        Map<String, String> attributes = element.getAttributes();
+        if (attributes != null)
+        {
+            builder.append(" ").append(attributes);
+        }
+        List<ConfigElement> children = element.getChildren();
+        if (children != null)
+        {
+            for (ConfigElement child : children)
+            {
+                builder.append('\n');
+                render(indentation + "  ", builder, child);
+            }
+        }
+    }
+
+
+}
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 12df346683379d35089d07b8e09cb6aef33586a6..631c7e42823f419409a4d7f3e39bc5d5ed1c66d9 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
@@ -29,6 +29,7 @@ import ch.ethz.sis.openbis.generic.server.dssapi.v3.DataStoreServerApiServer;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.openbis.dss.generic.shared.content.IContentCache;
+import ch.systemsx.cisd.openbis.generic.shared.IServiceForDataStoreServer;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationService;
 import ch.systemsx.cisd.openbis.generic.shared.dto.OpenBISSessionHolder;
 
@@ -107,6 +108,11 @@ public class ServiceProvider
     public static BeanFactory getApplicationContext()
     {
         return tryGetApplicationContext(true);
+        
+    }
+    public static IServiceForDataStoreServer getServiceForDSS()
+    {
+        return (IServiceForDataStoreServer) getApplicationContext().getBean("etl-lims-service");
     }
 
     /**
diff --git a/datastore_server/source/java/dssApplicationContext.xml b/datastore_server/source/java/dssApplicationContext.xml
index 9a2ec6d7c5cf67e0455e3bbeeae730f1a3ddfe59..c95e13700d9a6f2c84aae9f9b0de1beb608730d5 100644
--- a/datastore_server/source/java/dssApplicationContext.xml
+++ b/datastore_server/source/java/dssApplicationContext.xml
@@ -278,6 +278,11 @@
         <constructor-arg ref="general-information-service"/>
         <constructor-arg ref="adapted-ftp-user-manager"/>
     </bean>
+
+    <!-- 
+        Optionally starts an CIFS server.
+    -->
+    <bean id="cifs-server" class="ch.systemsx.cisd.openbis.dss.generic.server.cifs.CifsServer" destroy-method="stop"/>
         
     <bean id="jython-evaluator" class="ch.systemsx.cisd.common.jython.evaluator.JythonEvaluatorSpringComponent" >
       <constructor-arg ref="propertyConfigurer" />