Index: trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 13870)
+++ trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 13872)
@@ -167,5 +167,5 @@
         try {
             CheckParameterUtil.ensureThat(ImageryType.WMS_ENDPOINT.equals(info.getImageryType()), "wms_endpoint imagery type expected");
-            final WMSImagery wms = new WMSImagery(info.getUrl());
+            final WMSImagery wms = new WMSImagery(info.getUrl(), info.getCustomHttpHeaders());
 
             final WMSLayerTree tree = new WMSLayerTree();
@@ -201,12 +201,10 @@
                     .map(LayerDetails::getName)
                     .collect(Collectors.joining(", "));
-            ImageryInfo ret = new ImageryInfo(info.getName() + selectedLayers,
-                    url,
-                    "wms",
-                    info.getEulaAcceptanceRequired(),
-                    info.getCookies());
-
+            // Use full copy of original Imagery info to copy all attributes. Only overwrite what's different
+            ImageryInfo ret = new ImageryInfo(info);
+            ret.setUrl(url);
+            ret.setImageryType(ImageryType.WMS);
+            ret.setName(info.getName() + selectedLayers);
             ret.setServerProjections(wms.getServerProjections(tree.getSelectedLayers()));
-
             return ret;
         } catch (MalformedURLException ex) {
Index: trunk/src/org/openstreetmap/josm/data/imagery/WMSEndpointTileSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/WMSEndpointTileSource.java	(revision 13870)
+++ trunk/src/org/openstreetmap/josm/data/imagery/WMSEndpointTileSource.java	(revision 13872)
@@ -43,5 +43,5 @@
         CheckParameterUtil.ensure(info, "imageryType", x -> ImageryType.WMS_ENDPOINT.equals(x.getImageryType()));
         try {
-            wmsi = new WMSImagery(info.getUrl());
+            wmsi = new WMSImagery(info.getUrl(), info.getCustomHttpHeaders());
         } catch (IOException | WMSGetCapabilitiesException e) {
             throw new IllegalArgumentException(e);
Index: trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 13870)
+++ trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 13872)
@@ -432,5 +432,9 @@
                         // TODO should we handle also POST?
                         if ("GET".equalsIgnoreCase(mode) && getMapUrl != null && !"".equals(getMapUrl)) {
-                            this.getMapUrl = getMapUrl;
+                            if (getMapUrl.endsWith("?")) {
+                                this.getMapUrl = getMapUrl;
+                            } else {
+                                this.getMapUrl = getMapUrl + "?";
+                            }
                         }
                     }
