diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/GetFileRecordByPath.java b/src/main/java/org/caosdb/server/database/backend/transaction/GetFileRecordByPath.java
index dde055049a76b2d45ca7fb66ae3396cec2b5f89c..8ce0e0e2e2e5c84116fe1eb8df1c3bdf322de022 100644
--- a/src/main/java/org/caosdb/server/database/backend/transaction/GetFileRecordByPath.java
+++ b/src/main/java/org/caosdb/server/database/backend/transaction/GetFileRecordByPath.java
@@ -42,12 +42,12 @@ public class GetFileRecordByPath extends CacheableBackendTransaction<String, Spa
 
   public GetFileRecordByPath(final String path) {
     super(cache);
-    this.path = path;
+    this.path = (path == null ? null : path.replaceFirst("^/", ""));
   }
 
   public static void removeCached(final String path) {
     if (path != null && cache != null) {
-      cache.remove(path);
+      cache.remove(path.replaceFirst("^/", ""));
     }
   }
 
diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java b/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java
index e82f1185d44bca9126ad7e19da5fe756060a4888..aabd490b0fb8a6b5e801f6132113726a9361d258 100644
--- a/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java
+++ b/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java
@@ -64,6 +64,11 @@ public class RetrieveSparseEntity extends CacheableBackendTransaction<String, Sp
     this.entity.getVersion().setId(version);
   }
 
+  public RetrieveSparseEntity(SparseEntity entity) {
+    this(new RetrieveEntity(new EntityID(entity.id)));
+    this.entity.getVersion().setId(entity.versionId);
+  }
+
   @Override
   public SparseEntity executeNoCache() throws TransactionException {
     final RetrieveSparseEntityImpl t = getImplementation(RetrieveSparseEntityImpl.class);
diff --git a/src/main/java/org/caosdb/server/resource/FileSystemResource.java b/src/main/java/org/caosdb/server/resource/FileSystemResource.java
index 9b1baa5b9e02d2ce87d7b603b624a475a0472435..1e601cb2116c92ae3aa31aaca4be01b429f9e826 100644
--- a/src/main/java/org/caosdb/server/resource/FileSystemResource.java
+++ b/src/main/java/org/caosdb/server/resource/FileSystemResource.java
@@ -30,14 +30,11 @@ import java.io.IOException;
 import org.caosdb.server.database.backend.implementation.MySQL.ConnectionException;
 import org.caosdb.server.database.exceptions.EntityDoesNotExistException;
 import org.caosdb.server.database.misc.TransactionBenchmark;
-import org.caosdb.server.entity.Entity;
-import org.caosdb.server.entity.FileProperties;
+import org.caosdb.server.entity.EntityInterface;
 import org.caosdb.server.entity.Message;
 import org.caosdb.server.entity.Message.MessageType;
-import org.caosdb.server.entity.RetrieveEntity;
 import org.caosdb.server.permissions.EntityPermission;
 import org.caosdb.server.transaction.RetrieveSparseEntityByPath;
-import org.caosdb.server.transaction.Transaction;
 import org.caosdb.server.utils.FileUtils;
 import org.caosdb.server.utils.ServerMessages;
 import org.jdom2.Attribute;
@@ -186,7 +183,7 @@ public class FileSystemResource extends AbstractCaosDBServerResource {
   }
 
   protected String getEntityID(final String path) throws Exception {
-    final Entity fileEnt = getEntity(path);
+    final EntityInterface fileEnt = getEntity(path);
     return fileEnt.getId().toString();
   }
 
@@ -197,13 +194,12 @@ public class FileSystemResource extends AbstractCaosDBServerResource {
    * @return
    * @throws Exception
    */
-  private Entity getEntity(final String path) throws Exception {
+  private EntityInterface getEntity(final String path) throws Exception {
     final long t1 = System.currentTimeMillis();
-    final Entity e = new RetrieveEntity();
-    final FileProperties fp = new FileProperties(null, path, null);
-    e.setFileProperties(fp);
-    final Transaction<?> t = new RetrieveSparseEntityByPath(e);
+    final EntityInterface e;
+    final RetrieveSparseEntityByPath t = new RetrieveSparseEntityByPath(path);
     t.execute();
+    e = t.getEntity();
     final long t2 = System.currentTimeMillis();
     getBenchmark().addMeasurement(this.getClass().getSimpleName() + ".getEntity", t2 - t1);
     return e;
diff --git a/src/main/java/org/caosdb/server/transaction/RetrieveSparseEntityByPath.java b/src/main/java/org/caosdb/server/transaction/RetrieveSparseEntityByPath.java
index 1c8c6778100539b3f6eb8076bf06e346bbbe856d..eca97ce64c7f235fe5b7ec6d26e003301bb53bff 100644
--- a/src/main/java/org/caosdb/server/transaction/RetrieveSparseEntityByPath.java
+++ b/src/main/java/org/caosdb/server/transaction/RetrieveSparseEntityByPath.java
@@ -23,16 +23,18 @@
 package org.caosdb.server.transaction;
 
 import org.caosdb.server.database.backend.transaction.GetFileRecordByPath;
+import org.caosdb.server.database.backend.transaction.RetrieveSparseEntity;
 import org.caosdb.server.entity.EntityInterface;
 import org.caosdb.server.entity.container.TransactionContainer;
 
 public class RetrieveSparseEntityByPath extends Transaction<TransactionContainer> {
 
   private EntityInterface entity;
+  private String path;
 
-  public RetrieveSparseEntityByPath(final EntityInterface entity) {
+  public RetrieveSparseEntityByPath(String path) {
     super(new TransactionContainer());
-    this.entity = entity;
+    this.path = path;
   }
 
   @Override
@@ -57,9 +59,9 @@ public class RetrieveSparseEntityByPath extends Transaction<TransactionContainer
 
   @Override
   protected void transaction() throws Exception {
-    String path = entity.getFileProperties().getPath();
     final GetFileRecordByPath r = execute(new GetFileRecordByPath(path), getAccess());
-    entity.parseSparseEntity(r.getEntity());
+    RetrieveSparseEntity e = execute(new RetrieveSparseEntity(r.getEntity()), getAccess());
+    entity = e.getEntity();
   }
 
   @Override