diff --git a/src/main/java/caosdb/server/resource/FileSystemResource.java b/src/main/java/caosdb/server/resource/FileSystemResource.java
index 290a88801b4f14401981f9d91a6ba00cf27c12a4..65e83ee08bc9aeac988022650cd903e34453381b 100644
--- a/src/main/java/caosdb/server/resource/FileSystemResource.java
+++ b/src/main/java/caosdb/server/resource/FileSystemResource.java
@@ -29,6 +29,7 @@ import caosdb.server.database.backend.implementation.MySQL.ConnectionException;
 import caosdb.server.database.misc.TransactionBenchmark;
 import caosdb.server.entity.Entity;
 import caosdb.server.entity.FileProperties;
+import caosdb.server.entity.Message;
 import caosdb.server.entity.RetrieveEntity;
 import caosdb.server.entity.container.TransactionContainer;
 import caosdb.server.permissions.EntityPermission;
@@ -149,17 +150,32 @@ public class FileSystemResource extends AbstractCaosDBServerResource {
     return null;
   }
 
+  /**
+   * Return an element for the given file on a file system.
+   *
+   * <p>If there is no File entity for this file, an element without `id` is returned, instead a
+   * corresponding message is added to the element.
+   */
   Element getFileElement(final String directory, final File file) throws Exception {
     final Element celem = new Element("file");
-    celem.setAttribute(
-        "id",
-        getEntityID((directory.endsWith("/") ? directory : directory + "/") + file.getName()));
+
+    final String entId =
+        getEntityID((directory.endsWith("/") ? directory : directory + "/") + file.getName());
+    if (entId == null) {
+      new Message("Orphaned file").addToElement(celem);
+    } else {
+      celem.setAttribute("id", entId);
+    }
     celem.setAttribute("name", file.getName());
     return celem;
   }
 
   protected String getEntityID(final String path) throws Exception {
-    return getEntity(path).getId().toString();
+    final Entity fileEnt = getEntity(path);
+    if (fileEnt == null) {
+      return null;
+    }
+    return fileEnt.getId().toString();
   }
 
   private Entity getEntity(final String path) throws Exception {
@@ -170,7 +186,12 @@ public class FileSystemResource extends AbstractCaosDBServerResource {
     e.setFileProperties(fp);
     c.add(e);
     final Transaction<?> t = new RetrieveSparseEntityByPath(c);
-    t.execute();
+    try {
+      t.execute();
+    } catch (NullPointerException npe) {
+      // For example files in file system without corresponding File records.
+      return null;
+    }
     final long t2 = System.currentTimeMillis();
     getBenchmark().addMeasurement(this.getClass().getSimpleName() + ".getEntity", t2 - t1);
     return e;