diff --git a/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java b/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
index 0558cfec56..1e0d9b6af0 100644
--- a/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
@@ -232,7 +232,7 @@ public class BasicUploadSettingsPanel extends JPanel implements ActionListener,
      * Add the "source" tag
      * @return The source from the layer info.
      */
-    private String getSourceFromLayer() {
+    String getSourceFromLayer() {
         String source = MainApplication.getMap().mapView.getLayerInformationForSourceTag();
         return Utils.shortenString(source, Changeset.MAX_CHANGESET_TAG_LENGTH);
     }
diff --git a/src/org/openstreetmap/josm/gui/io/UploadDialog.java b/src/org/openstreetmap/josm/gui/io/UploadDialog.java
index 94b852d758..08f8c92f23 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadDialog.java
@@ -238,6 +238,10 @@ public class UploadDialog extends AbstractUploadDialog implements PreferenceChan
         model.clear();
         model.putAll(map);          // init with tags from history
         model.putAll(this.dataSet); // overwrite with tags from the dataset
+        if (Config.getPref().getBoolean("upload.source.obtainautomatically", false)
+        && this.dataSet.getChangeSetTags().containsKey(UploadDialogModel.SOURCE)) {
+            model.put(UploadDialogModel.SOURCE, pnlBasicUploadSettings.getSourceFromLayer());
+        }
 
         tpConfigPanels.setSelectedIndex(0);
         pnlTagEditor.initAutoCompletion(MainApplication.getLayerManager().getEditLayer());
diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
index e804bb9d5d..d862582f82 100644
--- a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
@@ -1277,6 +1277,11 @@ public class OsmDataLayer extends AbstractOsmDataLayer implements Listener, Data
                 dialog.getChangeset());
     }
 
+    @Override
+    public String getChangesetSourceTag() {
+        return this.data.getChangeSetTags().getOrDefault("source", null);
+    }
+
     @Override
     public AbstractUploadDialog getUploadDialog() {
         UploadDialog dialog = UploadDialog.getUploadDialog();
