diff --git a/CHANGELOG.md b/CHANGELOG.md
index 38b2c98f98af4499fe39d58a7ca353107f676e32..92a4141b1107624395a972f5063e01eae52ddb4b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -63,6 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed (for any bug fixes)
 
+* Auto-completion and edit_mode can handle entity names with empty spaces better now
 * [#251](https://gitlab.indiscale.com/caosdb/src/caosdb-webui/-/issues/251) - Data loss when editing Entities with URL-like properties
 
 ### Security (in case of vulnerabilities)
diff --git a/src/core/js/edit_mode.js b/src/core/js/edit_mode.js
index d1b922c413e13072a3d2a9cb5079aa1dda27a110..87e588aab11a681e49ff4e6596a81f4037628316 100644
--- a/src/core/js/edit_mode.js
+++ b/src/core/js/edit_mode.js
@@ -1804,7 +1804,7 @@ var edit_mode = new function () {
      *     which can be referenced by the property.
      */
     this.retrieve_datatype_list = async function (datatype) {
-        var find_entity = ["FILE", "REFERENCE"].includes(datatype) ? "" : datatype;
+        var find_entity = ["FILE", "REFERENCE"].includes(datatype) ? "" : `"${datatype}"`;
         var entities = datatype !== "FILE" ? await edit_mode.query(`FIND Record ${find_entity}`) : [];
         var files = await edit_mode.query(`FIND File ${find_entity}`);
 
diff --git a/src/core/js/ext_autocomplete.js b/src/core/js/ext_autocomplete.js
index 9a639fb4387a32bad128406bb7bd1f036bed5fda..2f6fa0dde729907f7248bd05367f26633872f39e 100644
--- a/src/core/js/ext_autocomplete.js
+++ b/src/core/js/ext_autocomplete.js
@@ -158,8 +158,16 @@ var ext_autocomplete = new function () {
         var start = newValue.slice(0, beginning_of_word + 1);
         var end = origJQElement[0].value.slice(cursorpos);
         var result = resultsFromServer.map(x => {
+            var x_quoted = x;
+            if (x.indexOf(" ") > -1) {
+              if(x.indexOf("\"") > -1) {
+                x_quoted = `'${x}'`;
+              } else {
+                x_quoted = `"${x}"`;
+              }
+            }
             return {
-                text: start + x + end,
+                text: start + x_quoted + end,
                 html: x
             }
         });
@@ -196,4 +204,4 @@ $(document).ready(function () {
     if ("${BUILD_MODULE_EXT_AUTOCOMPLETE}" == "ENABLED") {
         caosdb_modules.register(ext_autocomplete);
     }
-});
\ No newline at end of file
+});
diff --git a/test/core/js/modules/edit_mode.js.js b/test/core/js/modules/edit_mode.js.js
index 3a87ee73d167d114d0b7db2b0abe50e4a643f8fa..ae1a51d837348ba0ba9c31f48a28a69ef2c9ad7b 100644
--- a/test/core/js/modules/edit_mode.js.js
+++ b/test/core/js/modules/edit_mode.js.js
@@ -400,8 +400,28 @@ QUnit.test("unfreeze", function (assert) {
     assert.ok(edit_mode.unfreeze);
 });
 
-QUnit.test("retrieve_datatype_list", function (assert) {
+QUnit.test("retrieve_datatype_list", async function (assert) {
     assert.ok(edit_mode.retrieve_datatype_list);
+    var query_done;
+
+    edit_mode.query = function (query) {
+        var re = /^FIND (Record|File) "IceCore"$/g;
+        assert.ok(query.match(re), `${query} should match ${re}`);
+        query_done();
+        return [];
+    }
+    query_done = assert.async(2);
+    await edit_mode.retrieve_datatype_list("IceCore");
+
+
+    edit_mode.query = function (query) {
+        var re = /^FIND (Record|File) "Ice Core"$/g;
+        assert.ok(query.match(re), `${query} should match ${re}`);
+        query_done();
+        return [];
+    }
+    query_done = assert.async(2);
+    await edit_mode.retrieve_datatype_list("Ice Core");
 });
 
 QUnit.test("highlight", function (assert) {
diff --git a/test/core/js/modules/ext_autocomplete.js.js b/test/core/js/modules/ext_autocomplete.js.js
index e8776f945b7bb46a0d431eb2d0ac0f7fe21419fc..96cab766fb848b74b04677f9b3312b574b9a3844 100644
--- a/test/core/js/modules/ext_autocomplete.js.js
+++ b/test/core/js/modules/ext_autocomplete.js.js
@@ -25,7 +25,7 @@
 QUnit.module("ext_autocomplete.js", {
     before: function (assert){
         ext_autocomplete.retrieve_names = async function () {
-            return ['IceCore', 'Bag', 'IceSample', 'IceCream', 'Palette'];
+            return ['IceCore', 'Bag', 'IceSample', 'IceCream', 'Palette', 'Ice Core'];
         }
         ext_autocomplete.init();
 
@@ -60,12 +60,34 @@ QUnit.test("search", async function(assert) {
         };
     };
     await ext_autocomplete.search("Ice", 
-        gcallback( ['IceCore', 'IceSample', 'IceCream'])
+        gcallback( ['IceCore', 'IceSample', 'IceCream', 'Ice Core'])
     );
 
     await ext_autocomplete.search("Core", gcallback([]));
 });
 
+QUnit.test("searchPost", async function(assert) {
+  const resultsFromServer = ["Ice Core", "IceCore"];
+  const origJQElement = [{
+    selectionEnd: 8,
+    value: "FIND Ice WHERE",
+  }];
+
+  const expected = [
+      {
+        "html": "Ice Core",
+        "text": "FIND \"Ice Core\" WHERE"
+      },
+      {
+        "html": "IceCore",
+        "text": "FIND IceCore WHERE"
+      }
+  ];
+
+  const result = ext_autocomplete.searchPost(resultsFromServer, origJQElement);
+  assert.propEqual(result, expected);
+});
+
 QUnit.test("class", function(assert) {
     assert.ok(ext_autocomplete.switch_on_completion , "toggle available");
     assert.ok(ext_autocomplete.switch_on_completion() , "toggle runs");