diff --git a/src/core/js/webcaosdb.js b/src/core/js/webcaosdb.js
index d0c178d9af876e7754df264aa067b174ccc0fc5f..466d48d52f26da3b3a49d2614628abcd661e0061 100644
--- a/src/core/js/webcaosdb.js
+++ b/src/core/js/webcaosdb.js
@@ -359,6 +359,8 @@ this.caosdb_utils = new function () {
  * connection module contains all ajax calls.
  */
 this.connection = new function () {
+    const logger = log.getLogger("connection");
+
     this._init = function () {
         /**
          * Send a get request.
@@ -376,7 +378,7 @@ this.connection = new function () {
                 if (error.status == 414) {
                     throw new Error("UriTooLongException for GET " + uri);
                 } else if (error.status == 0) {
-                    console.log(error);
+                    logger.error(error);
                 } else if (error.status != null) {
                     throw new Error("GET " + uri + " returned with HTTP status " + error.status + " - " + error.statusText);
                 } else {
@@ -400,7 +402,7 @@ this.connection = new function () {
                 });
             } catch (error) {
                 if (error.status == 0) {
-                    console.log(error);
+                    logger.error(error);
                 } else if (error.status != null) {
                     throw new Error("PUT " + uri + " returned with HTTP status " + error.status + " - " + error.statusText);
                 } else {
@@ -435,7 +437,7 @@ this.connection = new function () {
                 });
             } catch (error) {
                 if (error.status == 0) {
-                    console.log(error);
+                    logger.error(error);
                 } else if (error.status != null) {
                     throw new Error(
                         "POST scripting returned with HTTP status " + error.status +
@@ -461,7 +463,7 @@ this.connection = new function () {
                 });
             } catch (error) {
                 if (error.status == 0) {
-                    console.log(error);
+                    logger.error(error);
                 } else if (error.status != null) {
                     throw new Error("POST " + uri + " returned with HTTP status " + error.status + " - " + error.statusText);
                 } else {
@@ -486,7 +488,7 @@ this.connection = new function () {
                 });
             } catch (error) {
                 if (error.status == 0) {
-                    console.log(error);
+                    logger.error(error);
                 } else if (error.status != null) {
                     throw new Error("DELETE " + "Entity/" + idline + " returned with HTTP status " + error.status + " - " + error.statusText);
                 } else {
@@ -985,6 +987,9 @@ this.transaction = new function () {
  */
 var version_history = new function () {
 
+    const logger = log.getLogger("version_history");
+    this.logger = logger;
+
     this._get = connection.get;
     /**
      * Retrieve the version history of an entity and return a table with the
@@ -1094,37 +1099,33 @@ var version_history = new function () {
      *     page entities are initialized.
      */
     this.init_restore_version_buttons = function (entity) {
-        entity = entity || $(".caosdb-entity-panel");
-
-        // initialize buttons only if the user is allowed to update the entity
-        if (hasEntityPermission(entity, "UPDATE:")){
-            for (let version_info of
-                    $(entity).find(".caosdb-f-entity-version-info")) {
-                // find the restore button
-                $(version_info).find(".caosdb-f-entity-version-restore-btn")
-                    // make the button visible
-                    .toggleClass("d-none", false)
-                    .click(async (eve) => {
-                        // the version id is stored in the restore button's
-                        // data-version-id attribute
-                        const versionid = eve.delegateTarget.getAttribute("data-version-id")
-                        try {
-                            await restore_old_version(versionid);
-                            // reload after sucessful update
-                            window.location.reload();
-                        } catch (e) {
-                            console.log(e);
-                            // print errors in an alert div
-                            $(version_info).find(".modal-body").prepend(
-                                $(`<div class="alert alert-danger
-                                    alert-dismissible " role="alert">
-                                    <button class="btn-close" data-bs-dismiss="alert" aria-label="close"></button>
-                                    Restore failed!
-                                    <p>${e.message}</p>
-                                </div>`));
+        var entities = [entity] || $(".caosdb-entity-panel");
+
+        for (let _entity of entities) {
+            // initialize buttons only if the user is allowed to update the entity
+            if (hasEntityPermission(_entity, "UPDATE:*") || hasEntityPermission(_entity, "UPDATE:DESCRIPTION")) {
+                for (let version_info of
+                        $(_entity).find(".caosdb-f-entity-version-info")) {
+                    // find the restore button
+                    $(version_info).find(".caosdb-f-entity-version-restore-btn")
+                        .toggleClass("d-none", false) // show button
+                        .click(async (eve) => {
+                            // the version id is stored in the restore button's
+                            // data-version-id attribute
+                            const versionid = eve.delegateTarget.getAttribute("data-version-id")
+                            try {
+                                await restore_old_version(versionid);
+                                // reload after sucessful update
+                                window.location.reload();
+                            } catch (e) {
+                                logger.error(e);
+                                // print errors in an alert div
+                                $(version_info).find(".modal-body").prepend(
+                                    $(`<div class="alert alert-danger alert-dismissible " role="alert"> <button class="btn-close" data-bs-dismiss="alert" aria-label="close"></button> Restore failed! <p>${e.message}</p></div>`));
 
-                        }
-                    });
+                            }
+                        });
+                }
             }
         }
     }
@@ -1977,4 +1978,4 @@ class _CaosDBModules {
 
 var caosdb_modules = new _CaosDBModules()
 
-$(document).ready(initOnDocumentReady);
+$(document).ready(initOnDocumentReady);
\ No newline at end of file
diff --git a/test/core/js/modules/webcaosdb.js.js b/test/core/js/modules/webcaosdb.js.js
index 15aabf3594a8fe516f07aafc69584eb2c540c0a8..a39ac044d9f5af96a9e381cafad9dff80620554e 100644
--- a/test/core/js/modules/webcaosdb.js.js
+++ b/test/core/js/modules/webcaosdb.js.js
@@ -1904,7 +1904,7 @@ QUnit.test("init_restore_version_buttons", async function (assert) {
       <Permission name="RETRIEVE:HISTORY" />
       <Permission name="UPDATE:*" />
     </Permissions>
-    <Version id="efa5ac7126c722b3f43284e150d070d6deac0ba6">
+    <Version id="efa5ac7126c722b3f43284e150d070d6deac0ba6" >
       <Predecessor id="f09114b227d88f23d4e23645ae471d688b1e82f7" />
       <Successor id="5759d2bccec3662424db5bb005acea4456a299ef" />
     </Version>
@@ -1912,7 +1912,7 @@ QUnit.test("init_restore_version_buttons", async function (assert) {
   </Record>
 </Response>
 `;
-    var done = assert.async(2);
+    var done = assert.async(1);
     var xml = str2xml(xml_str);
     version_history._get = async function (entity) {
         assert.equal(entity, "Entity/8610@efa5ac7126c722b3f43284e150d070d6deac0ba6?H");
@@ -1921,29 +1921,37 @@ QUnit.test("init_restore_version_buttons", async function (assert) {
         return xml;
     }
     var html = await transformation.transformEntities(xml);
-    var restore_button = $(html).find(".caosdb-f-entity-version-restore-btn");
+    var load_button = $(html).find(".caosdb-f-entity-version-load-history-btn");
     $("body").append(html);
 
-    // It appears the transformation does not create sufficient html (the
-    // butthon is missing)
-    // TODO fix
-    console.log("restore_button");
-    console.log(restore_button);
-    console.log(html);
+    assert.notOk(load_button.is(":visible"), "load_button hidden");
+    load_button.click(); // nothing happens
+
+    version_history.init_load_history_buttons();
+    assert.ok(load_button.is(":visible"), "load_button is not hidden anymore");
+
+    //console.log(xml2str(restore_button[0]));
+    //assert.ok(restore_button.hasClass("d-none"), "restore_button is hidden");
+
+
+    // load_button triggers retrieval of history
+    load_button.click();
+    await sleep(500);
 
-    assert.ok(restore_button.hasClass("d-none"), "restore_button hidden");
-    restore_button.click(); // nothing happens
+    //console.log(xml2str(restore_button[0]));
+    //version_history.init_restore_version_buttons();
 
-    version_history.init_restore_version_buttons();
-    assert.notOk(restore_button.hasClass("d-none"), "restore_button is not hidden anymore");
+    var restore_button = $("body").find(".caosdb-f-entity-version-restore-btn");
+    assert.ok(!restore_button.hasClass("d-none"), "restore_button is not hidden anymore");
 
     // restore_button triggers retrieval of history
-    restore_button.click();
+    restore_button.first().click();
     await sleep(500);
 
     // restore is not possible in the unit test
     alertdiv = $(html).find(".alert-danger");
-    assert.ok(alertdiv.has("Restore failed"), "export_button is visible");
+    assert.equal(alertdiv.length, 1, "on alert div");
+    assert.ok(alertdiv.text().indexOf("Restore failed") > 0, "Restore failed");
 
     $(html).remove();
 });