diff --git a/frontend-js/package.json b/frontend-js/package.json
index 2e4d1c8983234bfb7d30c5744ed812ef5731ec46..ac69a29834509bca2addeb4f4a8ebb63347899c8 100644
--- a/frontend-js/package.json
+++ b/frontend-js/package.json
@@ -28,7 +28,7 @@
     "istanbul": "0.4.5",
     "jquery": "3.1.1",
     "jquery-ui-dist": "^1.12.1",
-    "jsdom": "^11.1.0",
+    "jsdom": "11.1.0",
     "jsdom-global": "^2.1.1",
     "jshint": "^2.9.4",
     "log4js-memory-appender": "1.0.5",
diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index 2899a28b5400eb2e3aff549e27026301cb19775d..f75bd1ded45626424829e6e27898b810887ef691 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -44,7 +44,7 @@ ServerConnector.registerListenerType("onDataLoadStart");
 ServerConnector.registerListenerType("onDataLoadStop");
 
 ServerConnector._configurationParam = [];
-ServerConnector._serverBaseUrl= undefined;
+ServerConnector._serverBaseUrl = undefined;
 
 
 ServerConnector.getMinOverlayColorInt = function () {
@@ -275,8 +275,8 @@ ServerConnector.getApiBaseUrl = function () {
 ServerConnector.getServerBaseUrl = function () {
   if (this._serverBaseUrl === undefined) {
     var url = "" + window.location.href;
-    if (url.indexOf("?")>=0) {
-      url = url.substr(0,url.indexOf("?"));
+    if (url.indexOf("?") >= 0) {
+      url = url.substr(0, url.indexOf("?"));
     }
     if (!url.endsWith("/")) {
       url = url.substr(0, url.lastIndexOf("/") + 1);
@@ -1264,6 +1264,9 @@ ServerConnector.updateOverlay = function (params) {
   if (params.description !== undefined) {
     filterParams.overlay.description = params.description;
   }
+  if (params.googleLicenseConsent !== undefined) {
+    filterParams.overlay.googleLicenseConsent = params.googleLicenseConsent;
+  }
   return self.getProjectId(params.projectId).then(function (result) {
     queryParams.projectId = result;
     return self.sendPatchRequest(self.updateOverlayUrl(queryParams), filterParams);
diff --git a/frontend-js/src/main/js/gui/Panel.js b/frontend-js/src/main/js/gui/Panel.js
index d4c85402ef7ad3016073ef23f540018e21145813..d9ac68da4b0eacccac389110a6ba5f7a0df2f2b9 100644
--- a/frontend-js/src/main/js/gui/Panel.js
+++ b/frontend-js/src/main/js/gui/Panel.js
@@ -190,6 +190,8 @@ Panel.prototype.assignDialogOptions = function(div, params) {
         dialog.dialog('option', 'dialogClass', params[key]);
       } else if (key === "title") {
         dialog.dialog('option', 'title', params[key]);
+      } else if (key === "width") {
+        dialog.dialog('option', 'width', params[key]);
       } else {
         throw new Error("Unknown dialog param: " + key + " - " + params[key]);
       }
diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
index 3b0ebabd8b80900a8aad3b997dbb854b8b89f183..4f9d56c7d3f3b84b6b076fbfeafae6fcdfc0c1bf 100644
--- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
@@ -141,7 +141,7 @@ OverlayPanel.prototype.createTableHeader = function (edit) {
   return result;
 };
 
-OverlayPanel.prototype.createOverlayRow = function (overlay, checked) {
+OverlayPanel.prototype.createOverlayRow = function (overlay, checked, disabled) {
   var self = this;
   var guiUtils = self.getGuiUtils();
   var result = document.createElement("tr");
@@ -172,6 +172,7 @@ OverlayPanel.prototype.createOverlayRow = function (overlay, checked) {
         $(thisCheckbox).prop("disabled", false);
       });
     };
+    $(checkbox).prop("disabled", disabled);
     viewTd.appendChild(checkbox);
   } else {
     var img = guiUtils.createIcon("icons/search.png");
@@ -230,6 +231,13 @@ OverlayPanel.prototype.openEditOverlayDialog = function (overlay) {
   row = guiUtils.createTableRow([guiUtils.createLabel("Description: "), descriptionInput]);
   content.appendChild(row);
 
+  var consentCheckbox = document.createElement("input");
+  consentCheckbox.type = "checkbox";
+  consentCheckbox.checked = overlay.isGoogleLicenseConsent();
+  row = guiUtils.createTableRow([guiUtils.createLabel("I am aware that this map is displayed under the terms of the <a href='https://cloud.google.com/maps-platform/terms/'>license of Google Maps Platform</a> and I agree to these terms. " +
+    "In particular, I warrant that this dataset does not contain Protected Health Information (as defined in and subject to HIPAA). "), consentCheckbox]);
+  content.appendChild(row);
+
   var buttons = [{
     text: "SAVE",
     click: function () {
@@ -237,7 +245,8 @@ OverlayPanel.prototype.openEditOverlayDialog = function (overlay) {
       return ServerConnector.updateOverlay({
         overlayId: overlay.id,
         name: nameInput.value,
-        description: descriptionInput.value
+        description: descriptionInput.value,
+        googleLicenseConsent: consentCheckbox.checked
       }).then(function () {
         return self.refresh();
       }).then(function () {
@@ -265,6 +274,7 @@ OverlayPanel.prototype.openEditOverlayDialog = function (overlay) {
     }
   }];
   self.openDialog(content, {
+    width: "600px",
     id: overlay.getId(),
     buttons: buttons,
     title: "Data overlay: " + overlay.getName(),
@@ -317,7 +327,7 @@ OverlayPanel.prototype.refresh = function () {
       table.appendChild(body);
       for (i = 0; i < generalOverlays.length; i++) {
         overlay = generalOverlays[i];
-        body.appendChild(self.createOverlayRow(overlay, selectedOverlay[overlay.getId()]));
+        body.appendChild(self.createOverlayRow(overlay, selectedOverlay[overlay.getId()], false));
       }
 
       var title = self.getControlElement(PanelControlElementType.OVERLAY_CUSTOM_OVERLAY_TITLE);
@@ -342,7 +352,7 @@ OverlayPanel.prototype.refresh = function () {
         table.appendChild(body);
         for (i = 0; i < customOverlays.length; i++) {
           overlay = customOverlays[i];
-          body.appendChild(self.createOverlayRow(overlay, selectedOverlay[overlay.getId()]));
+          body.appendChild(self.createOverlayRow(overlay, selectedOverlay[overlay.getId()], !overlay.isGoogleLicenseConsent()));
         }
       }
 
diff --git a/frontend-js/src/main/js/map/data/LayoutData.js b/frontend-js/src/main/js/map/data/LayoutData.js
index a31227f460dcbf779f5ee24a5c5a3778011a32f4..25ec19b0252a9ab2758e0ce7878c016425928656 100644
--- a/frontend-js/src/main/js/map/data/LayoutData.js
+++ b/frontend-js/src/main/js/map/data/LayoutData.js
@@ -23,6 +23,7 @@ function LayoutData(layoutId, name) {
     this.setDirectory(object.directory);
     this.setDescription(object.description);
     this.setCreator(object.creator);
+    this.setGoogleLicenseConsent(object.googleLicenseConsent);
     this.setInputDataAvailable(object.inputDataAvailable);
     if (!this.getInputDataAvailable()) {
       this.setInitialized(true);
@@ -155,6 +156,15 @@ LayoutData.prototype.isInitialized = function() {
   return this._initialized;
 };
 
+LayoutData.prototype.setGoogleLicenseConsent = function(value) {
+  this._googleLicenseConsent = value;
+};
+
+LayoutData.prototype.isGoogleLicenseConsent = function() {
+  return this._googleLicenseConsent;
+};
+
+
 LayoutData.prototype.getAliases = function() {
   return this.aliases;
 };
diff --git a/frontend-js/src/test/js/mocha-config.js b/frontend-js/src/test/js/mocha-config.js
index 1caaad71486c6cd3b0172a02a2f0dfa3f6e76143..6bec611e44f57cfb73d15bb0561f9cde5e9b0af5 100644
--- a/frontend-js/src/test/js/mocha-config.js
+++ b/frontend-js/src/test/js/mocha-config.js
@@ -97,7 +97,7 @@ before(function() {
     };
     return Promise.resolve();
   };
-  
+
   Promise.longStackTraces();
 
   mockBootstrap();