Index: /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 12727)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 12728)
@@ -61,4 +61,5 @@
     private final transient LinkedList<Command> cmds = new LinkedList<>();
     private int cmdsCount;
+    private DataSet ds;
     private final transient List<Relation> addedRelations = new LinkedList<>();
 
@@ -538,5 +539,5 @@
             // retrieve effective dataset before joining the ways (which affects the selection, thus, the <ways> collection)
             // Dataset retrieving allows to call this code without relying on Main.getCurrentDataSet(), thus, on a mapview instance
-            DataSet ds = ways.iterator().next().getDataSet();
+            ds = ways.iterator().next().getDataSet();
 
             // Do the job of joining areas
@@ -1539,4 +1540,5 @@
 
         Relation newRel;
+        RelationRole soleOuter;
         switch (multiouters.size()) {
         case 0:
@@ -1544,7 +1546,8 @@
         case 1:
             // Found only one to be part of a multipolygon relation, so just add it back as well
-            newRel = new Relation(multiouters.get(0).rel);
-            newRel.addMember(new RelationMember(multiouters.get(0).role, outer));
-            cmds.add(new ChangeCommand(multiouters.get(0).rel, newRel));
+            soleOuter = multiouters.get(0);
+            newRel = new Relation(soleOuter.rel);
+            newRel.addMember(new RelationMember(soleOuter.role, outer));
+            cmds.add(new ChangeCommand(ds, soleOuter.rel, newRel));
             return;
         default:
@@ -1566,5 +1569,5 @@
             }
             newRel.addMember(new RelationMember("outer", outer));
-            cmds.add(new AddCommand(outer.getDataSet(), newRel));
+            cmds.add(new AddCommand(ds, newRel));
         }
     }
Index: /trunk/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java	(revision 12727)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java	(revision 12728)
@@ -63,5 +63,5 @@
             MainApplication.getLayerManager().addLayer(layer);
             try {
-                new JoinAreasAction().join(ds.getWays());
+                new JoinAreasAction(false).join(ds.getWays());
             } finally {
                 // Ensure we clean the place before leaving, even if test fails.
@@ -125,5 +125,5 @@
                 assertTrue(test + "; expected way, but got: " + osm, osm instanceof Way);
             }
-            new JoinAreasAction().join((Collection) primitives);
+            new JoinAreasAction(false).join((Collection) primitives);
             Collection<OsmPrimitive> joinedCol = dsToJoin.getPrimitives(osm -> !osm.isDeleted() && Objects.equals(osm.get("test"), test));
             assertEquals("in test " + test + ":", 1, joinedCol.size());
Index: /trunk/test/unit/org/openstreetmap/josm/actions/upload/FixDataHookTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/upload/FixDataHookTest.java	(revision 12727)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/upload/FixDataHookTest.java	(revision 12728)
@@ -15,5 +15,5 @@
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.APIDataSet;
-import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -46,6 +46,5 @@
         assertTrue(MainApplication.undoRedo.commands.isEmpty());
 
-        // Complete data set
-        Node emptyNode = new Node();
+        // Complete data set (except empty which cannot be tested anymore)
         Way emptyWay = new Way();
         Relation emptyRelation = new Relation();
@@ -75,5 +74,5 @@
         r2.put(" space_both ", "test");
         APIDataSet ads = new APIDataSet();
-        ads.init(Arrays.asList(emptyNode, emptyWay, emptyRelation, w1, w2, w3, w4, w5, w6, w7, r1, r2));
+        ads.init(new DataSet(emptyWay, emptyRelation, w1, w2, w3, w4, w5, w6, w7, r1, r2));
 
         MainApplication.undoRedo.commands.clear();
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java	(revision 12727)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java	(revision 12728)
@@ -90,10 +90,12 @@
     @Test
     public void testAddPrimitivesToRelation() {
-        assertNull(GenericRelationEditor.addPrimitivesToRelation(new Relation(1), Collections.<OsmPrimitive>emptyList()));
-        assertNull(GenericRelationEditor.addPrimitivesToRelation(new Relation(1), Collections.singleton(new Relation(1))));
+        Relation r = new Relation(1);
+        new DataSet(r);
+        assertNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.<OsmPrimitive>emptyList()));
+        assertNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.singleton(new Relation(1))));
 
-        assertNotNull(GenericRelationEditor.addPrimitivesToRelation(new Relation(1), Collections.singleton(new Node(1))));
-        assertNotNull(GenericRelationEditor.addPrimitivesToRelation(new Relation(1), Collections.singleton(new Way(1))));
-        assertNotNull(GenericRelationEditor.addPrimitivesToRelation(new Relation(1), Collections.singleton(new Relation(2))));
+        assertNotNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.singleton(new Node(1))));
+        assertNotNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.singleton(new Way(1))));
+        assertNotNull(GenericRelationEditor.addPrimitivesToRelation(r, Collections.singleton(new Relation(2))));
     }
 
