Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 2970)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 2971)
@@ -469,4 +469,13 @@
      */
     private void processRelationsAfterParsing() throws IllegalDataException {
+
+        // First add all relations to make sure that when relation reference other relation, the referenced will be already in dataset
+        for (Long externalRelationId : relations.keySet()) {
+            Relation relation = (Relation) externalIdMap.get(
+                    new SimplePrimitiveId(externalRelationId, OsmPrimitiveType.RELATION)
+            );
+            ds.addPrimitive(relation);
+        }
+
         for (Long externalRelationId : relations.keySet()) {
             Relation relation = (Relation) externalIdMap.get(
@@ -517,5 +526,4 @@
             }
             relation.setMembers(relationMembers);
-            ds.addPrimitive(relation);
         }
     }
