diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsFile.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsFile.java
index 4886f977fcdb4062b9b91f9cf60fdcf63ee6e19f..d9484efb1869bf00166833fa4d600ee17c693c32 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsFile.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/cifs/CifsFile.java
@@ -103,7 +103,7 @@ final class CifsFile extends NetworkFile
         {
             throw new IOException("Virtual file '" + file.getAbsolutePath() + "' can not be created.");
         }
-        operationLog.info("Open virtual file '" + file.getAbsolutePath() + "'.");
+        operationLog.debug("Open virtual file '" + file.getAbsolutePath() + "'.");
         synchronized (file)
         {
             if (randomAccessFile == null && file instanceof FtpFileImpl)
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
index 3ea269844ae21fa166966b4650d01bc5c664df7d..197f3e400c021553279c606146459f8dfbcfc812 100644
--- 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
@@ -27,16 +27,15 @@ 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 Level level = Level.WARN;
+
     private ThreadLocal<StringBuilder> messageBuilder = new ThreadLocal<>();
 
     @Override
@@ -54,7 +53,7 @@ public class CifsServerLogger implements DebugInterface
     @Override
     public int getLogLevel()
     {
-        return Debug.Debug;
+        return Debug.Warn;
     }
 
     @Override
@@ -74,13 +73,13 @@ public class CifsServerLogger implements DebugInterface
         }
         builder.append(str);
     }
-    
+
     @Override
     public void debugPrintln(String str)
     {
         debugPrintln(str, Debug.Debug);
     }
-    
+
     @Override
     public void debugPrintln(String str, int l)
     {
@@ -94,17 +93,18 @@ public class CifsServerLogger implements DebugInterface
             builder.setLength(0);
         }
     }
+
     @Override
     public void debugPrintln(Exception ex, int l)
     {
         operationLog.log(level, "", ex);
-        
+
     }
-    
+
     @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
index 8b3c81e2be11c953fd6605455c3e850caffda1dc..392f9ddbe5ba42d3512783839f04519036c82944 100644
--- 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
@@ -127,7 +127,7 @@ public class DataSetCifsView implements DiskInterface
             FtpFile file = view.getFile(normalizedPath, cache);
             FileInfo fileInfo = new FileInfo();
             Utils.populateFileInfo(fileInfo, file);
-            operationLog.info("provide file info for virtual file '" + file.getAbsolutePath() + "': " + fileInfo);
+            operationLog.debug("provide file info for virtual file '" + file.getAbsolutePath() + "': " + fileInfo);
             return fileInfo;
         } catch (FtpException ex)
         {
@@ -193,7 +193,7 @@ public class DataSetCifsView implements DiskInterface
                 NonExistingFtpFile nonExistingFtpFile = (NonExistingFtpFile) file;
                 throw new FileNotFoundException(path + " does not exist. Reason: " + nonExistingFtpFile.getErrorMessage());
             }
-            operationLog.info("Open file '" + path + "'.");
+            operationLog.debug("Open file '" + path + "'.");
             NetworkFile networkFile = new CifsFile(file);
 
             networkFile.setAttributes(FileAttribute.ReadOnly);
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3ExperimentLevelResolver.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3ExperimentLevelResolver.java
index 6af0152c88148ded6e872e8b10a96f5b0fb3f14a..e46a18eac7944396e754f73b1f732537152b4a8d 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3ExperimentLevelResolver.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3ExperimentLevelResolver.java
@@ -27,6 +27,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.FtpPathResolverContext;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpDirectoryResponse;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpFile;
+import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpNonExistingFile;
 
 class V3ExperimentLevelResolver implements V3Resolver
 {
@@ -49,6 +50,11 @@ class V3ExperimentLevelResolver implements V3Resolver
                     context.getV3Api().getExperiments(context.getSessionToken(), Collections.singletonList(experimentId), fetchOptions);
             Experiment exp = experiments.get(experimentId);
 
+            if (exp == null)
+            {
+                return new V3FtpNonExistingFile(fullPath, null);
+            }
+
             V3FtpDirectoryResponse response = new V3FtpDirectoryResponse(fullPath);
             for (DataSet dataSet : exp.getDataSets())
             {
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3FtpPathResolverRegistry.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3FtpPathResolverRegistry.java
index 71bd571d3b2726f448f621138948383e2eddc68a..3bd9372cc3eb286660ac149a5953d6b6f08d1119 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3FtpPathResolverRegistry.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3FtpPathResolverRegistry.java
@@ -85,17 +85,17 @@ public class V3FtpPathResolverRegistry implements IFtpPathResolverRegistry
     @Override
     public FtpFile resolve(String path, FtpPathResolverContext resolverContext)
     {
-        
+
         String responseCacheKey = resolverContext.getSessionToken() + "$" + path;
         Cache cache = resolverContext.getCache();
         V3FtpFile response = cache.getResponse(responseCacheKey);
         if (response != null)
         {
-            operationLog.info("Path "+path+" requested (found in cache).");
+            operationLog.debug("Path " + path + " requested (found in cache).");
             return response;
         }
 
-        operationLog.info("Path "+path+" requested.");
+        operationLog.debug("Path " + path + " requested.");
 
         String[] split = path.equals("/") ? new String[] {} : path.substring(1).split("/");
         try
@@ -152,7 +152,7 @@ public class V3FtpPathResolverRegistry implements IFtpPathResolverRegistry
                         return resolver.resolve(path, remaining, resolverContext);
                     }
                 }
-                return new V3FtpNonExistingFile(path, "Error when retrieving path");
+                return new V3FtpNonExistingFile(path, null);
             }
         }
     }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3HierarchicalContentResolver.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3HierarchicalContentResolver.java
index 6073566ffabecb6eca6bf368cbf34220a769203d..c3f4d44fd12c3f1256a8acc46d46a61708f20445 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3HierarchicalContentResolver.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3HierarchicalContentResolver.java
@@ -23,6 +23,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.ftp.FtpPathResolverContext;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpDirectoryResponse;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpFile;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpFileResponse;
+import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpNonExistingFile;
 
 class V3HierarchicalContentResolver implements V3Resolver
 {
@@ -43,7 +44,12 @@ class V3HierarchicalContentResolver implements V3Resolver
             rootNode = content.getRootNode();
         } else
         {
-            rootNode = content.getNode(StringUtils.join(subPath, "/"));
+            rootNode = content.tryGetNode(StringUtils.join(subPath, "/"));
+        }
+
+        if (rootNode == null)
+        {
+            return new V3FtpNonExistingFile(fullPath, null);
         }
 
         if (false == rootNode.isDirectory())
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3ProjectLevelResolver.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3ProjectLevelResolver.java
index e01a870260cd1763075e2cc101f16862f0c98f4e..c1dca33c8696bcd778160299ec31c415bdf6e295 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3ProjectLevelResolver.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3ProjectLevelResolver.java
@@ -29,6 +29,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.FtpPathResolverContext;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpDirectoryResponse;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpFile;
+import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpNonExistingFile;
 
 class V3ProjectLevelResolver implements V3Resolver
 {
@@ -52,6 +53,10 @@ class V3ProjectLevelResolver implements V3Resolver
             Project project = projects.get(projectIdentifier);
 
             V3FtpDirectoryResponse response = new V3FtpDirectoryResponse(fullPath);
+            if (project == null)
+            {
+                return new V3FtpNonExistingFile(fullPath, null);
+            }
             for (Experiment exp : project.getExperiments())
             {
                 response.addDirectory(exp.getCode());
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3SpaceLevelResolver.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3SpaceLevelResolver.java
index b55ee5cbc776b6d9afbc638acb71390b06bc215d..73581da211908439f40c53bffdb94bcd565d7da6 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3SpaceLevelResolver.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/V3SpaceLevelResolver.java
@@ -17,14 +17,19 @@
 package ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3;
 
 import java.util.Arrays;
-import java.util.List;
+import java.util.Collections;
+import java.util.Map;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.Project;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.fetchoptions.ProjectFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.search.ProjectSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.Space;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.fetchoptions.SpaceFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.ISpaceId;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.search.SpaceSearchCriteria;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.FtpPathResolverContext;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpDirectoryResponse;
 import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpFile;
+import ch.systemsx.cisd.openbis.dss.generic.server.ftp.v3.file.V3FtpNonExistingFile;
 
 class V3SpaceLevelResolver implements V3Resolver
 {
@@ -40,14 +45,25 @@ class V3SpaceLevelResolver implements V3Resolver
     {
         if (subPath.length == 0)
         {
-            ProjectSearchCriteria searchCriteria = new ProjectSearchCriteria();
-            searchCriteria.withSpace().withCode().thatEquals(spaceCode);
-            ProjectFetchOptions fetchOptions = new ProjectFetchOptions();
-            List<Project> projects =
-                    context.getV3Api().searchProjects(context.getSessionToken(), searchCriteria, fetchOptions).getObjects();
+            SpaceSearchCriteria searchCriteria = new SpaceSearchCriteria();
+            searchCriteria.withCode().thatEquals(spaceCode);
+            SpaceFetchOptions fetchOptions = new SpaceFetchOptions();
+            fetchOptions.withProjects();
+
+            SpacePermId spaceCodeId = new SpacePermId(spaceCode);
+
+            Map<ISpaceId, Space> spaces =
+                    context.getV3Api().getSpaces(context.getSessionToken(), Collections.singletonList(spaceCodeId), fetchOptions);
+
+            Space space = spaces.get(spaceCodeId);
+
+            if (space == null)
+            {
+                return new V3FtpNonExistingFile(fullPath, null);
+            }
 
             V3FtpDirectoryResponse response = new V3FtpDirectoryResponse(fullPath);
-            for (Project project : projects)
+            for (Project project : space.getProjects())
             {
                 response.addDirectory(project.getCode());
             }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/plugins/V3DataSetTypeResolver.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/plugins/V3DataSetTypeResolver.java
index 6ed5b42377a4024ac4c5d73ef096a92f40347604..de7c187f4e1f56abb9a6704ca96b6bf92672fcbb 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/plugins/V3DataSetTypeResolver.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/v3/plugins/V3DataSetTypeResolver.java
@@ -77,6 +77,11 @@ public class V3DataSetTypeResolver implements V3Resolver
 
         List<DataSet> dataSetsToSearch = searchForDataSetAndParents(dataSetCode, context);
 
+        if (dataSetsToSearch == null)
+        {
+            return new V3FtpNonExistingFile(fullPath, null);
+        }
+
         if (requestedFileName != null)
         {
             V3FtpFileResponse result = findRequestedNode(fullPath, dataSetsToSearch, requestedFileName, context.getContentProvider());
@@ -168,6 +173,11 @@ public class V3DataSetTypeResolver implements V3Resolver
         fetchOptions.withParents();
         DataSet dataSet = context.getV3Api().getDataSets(context.getSessionToken(), Collections.singletonList(dataId), fetchOptions).get(dataId);
 
+        if (dataSet == null)
+        {
+            return null;
+        }
+
         List<DataSet> dataSetsToSearch = new ArrayList<>();
         dataSetsToSearch.add(dataSet);
         dataSetsToSearch.addAll(dataSet.getParents());