Index: applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePlugin.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePlugin.java	(revision 19927)
+++ applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePlugin.java	(revision 19928)
@@ -23,4 +23,5 @@
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.IconToggleButton;
+import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.plugins.Plugin;
@@ -296,4 +297,24 @@
     }
     
+    /**
+     * Adds the WMSLayer following this rule:<br/>
+     * - if a WMSLayer exists place this new layer just before this layer<br/>
+     * - Otherwise place it at the bottom
+     * @param wmsLayer the wmsLayer to add
+     */
+    public static void addWMSLayer(WMSLayer wmsLayer) {
+        if (Main.map != null && Main.map.mapView != null) {
+            int wmsNewLayerPos = Main.map.mapView.getAllLayers().size();
+            for(Layer l : Main.map.mapView.getLayersOfType(WMSLayer.class)) {
+                int wmsPos = Main.map.mapView.getLayerPos(l);
+                if (wmsPos < wmsNewLayerPos) wmsNewLayerPos = wmsPos;
+            }
+            Main.main.addLayer(wmsLayer);
+            // Move the layer to its new position
+            Main.map.mapView.moveLayer(wmsLayer, wmsNewLayerPos);
+        } else
+            Main.main.addLayer(wmsLayer);
+    }
+    
     private static String checkSourceMillesime() {
         java.util.Calendar calendar = java.util.Calendar.getInstance();
@@ -313,3 +334,4 @@
         return src;
     }
+    
 }
Index: applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionLoadFromCache.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionLoadFromCache.java	(revision 19927)
+++ applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionLoadFromCache.java	(revision 19928)
@@ -75,7 +75,7 @@
                     // create layer and load cache
                     WMSLayer wmsLayer = new WMSLayer("", "", Integer.parseInt(ext)-1);
-                    if (wmsLayer.getCacheControl().loadCache(file, layoutZone))
-                        Main.main.addLayer(wmsLayer);
-                    
+                    if (wmsLayer.getCacheControl().loadCache(file, layoutZone)) {
+                        CadastrePlugin.addWMSLayer(wmsLayer);
+                    }                    
                 }
             }
Index: applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionNewLocation.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionNewLocation.java	(revision 19927)
+++ applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/MenuActionNewLocation.java	(revision 19928)
@@ -85,5 +85,5 @@
                 zone = ((UTM_20N_France_DOM)Main.proj).getCurrentGeodesic();
             wmsLayer = new WMSLayer(location, codeCommune, zone);
-            Main.main.addLayer(wmsLayer);
+            CadastrePlugin.addWMSLayer(wmsLayer);
             System.out.println("Add new layer with Location:" + inputTown.getText());
         } else if (existingLayers != null && existingLayers.size() > 0 && Main.map.mapView.getActiveLayer() instanceof WMSLayer) {
