diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
index 224549a89ab4d6869638eeb93139d31438b358ee..d711dda06713dce845aa9ab3605ed159b1cad781 100644
--- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
@@ -329,7 +329,7 @@ OverlayPanel.prototype.overlayToDataRow = function (overlay, checked, disabled)
     result[4] = "";
   }
   if (overlay.getDescription() !== "") {
-    for (var i = 0; i < result.length; i++) {
+    for (var i = 1; i < result.length; i++) {
 
       result[i] = "<div class=\"minerva-tooltip\">" + result[i] +
         "<span class=\"minerva-tooltip-text\">" + overlay.getDescription() + "</span>" +
@@ -579,6 +579,7 @@ OverlayPanel.prototype.init = function () {
   var table = $(this.getControlElement(PanelControlElementType.OVERLAY_CUSTOM_OVERLAY_TABLE)).DataTable({
     columns: [{
       title: 'No',
+      type: 'num',
       className: "no_padding"
     }, {
       title: 'Name'
@@ -605,8 +606,18 @@ OverlayPanel.prototype.init = function () {
 
     for (var i = 0, ien = diff.length; i < ien; i++) {
       var rowData = table.row(diff[i].node).data();
-      var overlayId = $(rowData[2]).attr("data");
-      promises.push(self.updateOverlayOrder(overlayId, diff[i].newData));
+      var checkbox = $("[type='checkbox']", rowData[2])[0];
+      if (checkbox === undefined) {
+        checkbox = rowData[2];
+      }
+      var overlayId = parseInt($(checkbox).attr("data"));
+      var order;
+      if (Functions.isInt(diff[i].newData)) {
+        order = diff[i].newData;
+      } else {
+        order = parseInt($.parseHTML(diff[i].newData)[0].innerHTML);
+      }
+      promises.push(self.updateOverlayOrder(overlayId, order));
     }
     promises.push(self.getMap().redrawSelectedDataOverlays());
     return Promise.all(promises);
@@ -619,7 +630,7 @@ OverlayPanel.prototype.init = function () {
  *
  * @param {number} overlayId
  * @param {number} order
- * @returns {PromiseLike}
+ * @returns {Promise}
  */
 OverlayPanel.prototype.updateOverlayOrder = function (overlayId, order) {
   var self = this;
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java
index 1e5ac46b63110b119b51c45cf034ba33e17908e0..de4428df9f88304e9b3591f8c7f2d899d4935bda 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java
@@ -241,7 +241,7 @@ public class OverlayRestImpl extends BaseRestImpl {
       layoutDao.update(layout);
       return getOverlayById(token, layout.getModel().getProject().getProjectId(), overlayId);
     } catch (NumberFormatException e) {
-      throw new ObjectNotFoundException("overlay doesn't exist");
+      throw new QueryException("invliad overlay id", e);
     }
   }
 
@@ -314,7 +314,8 @@ public class OverlayRestImpl extends BaseRestImpl {
   }
 
   public Map<String, Object> addOverlay(String token, String projectId, String name, String description, String content,
-      String fileId, String filename, String type, String googleLicenseConsent) throws SecurityException, QueryException, IOException {
+      String fileId, String filename, String type, String googleLicenseConsent)
+      throws SecurityException, QueryException, IOException {
     User user = getUserService().getUserByToken(token);
     if (Configuration.ANONYMOUS_LOGIN.equals(user.getLogin())) {
       throw new SecurityException("You have no privileges to add overlay");
@@ -355,9 +356,10 @@ public class OverlayRestImpl extends BaseRestImpl {
         }
       }
 
-      Layout layout = layoutService.createLayout(new CreateLayoutParams().async(false).colorInputStream(stream)
-          .description(description).layoutFileName(filename).model(model).name(name).user(user)
-          .colorSchemaType(colorSchemaType).directory(".").googleLicenseConsent(googleLicenseConsent.equalsIgnoreCase("true")));
+      Layout layout = layoutService
+          .createLayout(new CreateLayoutParams().async(false).colorInputStream(stream).description(description)
+              .layoutFileName(filename).model(model).name(name).user(user).colorSchemaType(colorSchemaType)
+              .directory(".").googleLicenseConsent(googleLicenseConsent.equalsIgnoreCase("true")));
 
       int count = layoutService.getCustomLayouts(model, token, false, user).size();
       layout.setOrderIndex(count);