diff --git a/src/main/java/fr/inra/po2vocabmanager/model/DataNode.java b/src/main/java/fr/inra/po2vocabmanager/model/DataNode.java
index 93989b872c867ba15c87c67744590e733883cc99..24f6f344d30adfe1dfe66be334e9cc1e7db81712 100644
--- a/src/main/java/fr/inra/po2vocabmanager/model/DataNode.java
+++ b/src/main/java/fr/inra/po2vocabmanager/model/DataNode.java
@@ -257,11 +257,19 @@ public class DataNode implements Comparable<DataNode> {
         if(o == null) return 0;
         if(this.getType().equals(DataNodeType.STEP) && o.getType().equals(DataNodeType.STEP)) {
             // order by temporality
-            if(this.getItineraryFile() != null) {
-                if(getItineraryFile().isLinked((StepFile)this.getFile(),(StepFile)o.getFile())) {
+            StepFile current = (StepFile)this.getFile();
+            StepFile otherStep = (StepFile)o.getFile();
+            if(!current.isLeaf()) {
+                current = current.getSubStep().stream().findFirst().orElse(null);
+            }
+            if(!otherStep.isLeaf()) {
+                otherStep = otherStep.getSubStep().stream().findFirst().orElse(null);
+            }
+            if( current != null && otherStep != null && this.getItineraryFile() != null) {
+                if(getItineraryFile().isLinked(current,otherStep)) {
                     return -1;
                 } else {
-                    if(getItineraryFile().isLinked((StepFile)o.getFile(), (StepFile)this.getFile())) {
+                    if(getItineraryFile().isLinked(otherStep, current)) {
                         return 1;
                     }
                 }