diff --git a/src/org/openstreetmap/josm/actions/OpenLocationAction.java b/src/org/openstreetmap/josm/actions/OpenLocationAction.java
index 71cce3baf4..4f421aabcc 100644
--- a/src/org/openstreetmap/josm/actions/OpenLocationAction.java
+++ b/src/org/openstreetmap/josm/actions/OpenLocationAction.java
@@ -36,6 +36,7 @@ import org.openstreetmap.josm.actions.downloadtasks.DownloadSessionTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadTask;
 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -278,9 +279,13 @@ public class OpenLocationAction extends JosmAction {
 
         List<Future<?>> result = new ArrayList<>();
         for (final DownloadTask task : tasks) {
+            DownloadParams currentParams = settings;
+            if (task.providesOldData() && !settings.isNewLayer()) {
+                currentParams = GuiHelper.runInEDTAndWaitAndReturn(() -> confirmNoNewLayer(settings, url));
+            }
             try {
                 task.setZoomAfterDownload(zoomToData);
-                result.add(MainApplication.worker.submit(new PostDownloadHandler(task, task.loadUrl(settings, url,
+                result.add(MainApplication.worker.submit(new PostDownloadHandler(task, task.loadUrl(currentParams, url,
                         new PleaseWaitProgressMonitor(tr("Download data"))))));
             } catch (IllegalArgumentException e) {
                 Logging.error(e);
@@ -289,6 +294,17 @@ public class OpenLocationAction extends JosmAction {
         return Collections.unmodifiableList(result);
     }
 
+    private static DownloadParams confirmNoNewLayer(DownloadParams originalParams, String url) {
+        if (ConditionalOptionPaneUtil.showConfirmationDialog("open-location-action.confirm-no-new-layer",
+                MainApplication.getMainFrame(),
+                tr("Do you want to create a new layer for {0}?<br>You may be mixing old and new data otherwise!", url),
+                tr("No new layer"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, JOptionPane.YES_OPTION)
+        ) {
+            return new DownloadParams(originalParams).withNewLayer(true);
+        }
+        return originalParams;
+    }
+
     /**
      * Asks the user which of the possible tasks to perform.
      * @param tasks a list of possible tasks
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
index c493970c15..a69627a794 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java
@@ -79,6 +79,11 @@ public class DownloadOsmChangeTask extends DownloadOsmTask {
         return MainApplication.worker.submit(downloadTask);
     }
 
+    @Override
+    public boolean providesOldData() {
+        return true;
+    }
+
     /**
      * OsmChange download task.
      */
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadParams.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadParams.java
index 7a5ec304af..c59e9c0839 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadParams.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadParams.java
@@ -16,6 +16,22 @@ public class DownloadParams {
     private DownloadPolicy downloadPolicy;
     private UploadPolicy uploadPolicy;
 
+    public DownloadParams() {
+        // Do nothing -- just make this constructor visible
+    }
+
+    /**
+     * Clone another {@link DownloadParams}
+     * @param other The download parameters to clone
+     */
+    public DownloadParams(DownloadParams other) {
+        this.newLayer = other.newLayer;
+        this.layerName = other.layerName;
+        this.locked = other.locked;
+        this.downloadPolicy = other.downloadPolicy;
+        this.uploadPolicy = other.uploadPolicy;
+    }
+
     /**
      * Determines if the data is to be downloaded into a new layer.
      * @return true, if the data is to be downloaded into a new layer. If false, the task
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java
index 2a200f2d24..f5e7c38805 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java
@@ -135,6 +135,16 @@ public interface DownloadTask {
         }).filter(Objects::nonNull).collect(Collectors.toList());
     }
 
+    /**
+     * If this task provides potentially old data, this should return {@code true}. If so, it would be a good decision
+     * to prompt users to verify if they want the data to be downloaded to the current layer.
+     * @return {@code true} if the data could be old.
+     * @since xxx
+     */
+    default boolean providesOldData() {
+        return false;
+    }
+
     /**
      * Cancels the asynchronous download task.
      *
