diff --git a/languages/DclareMPS/generator/template/main@generator.mps b/languages/DclareMPS/generator/template/main@generator.mps
index a18d2f6e..0c85ce21 100644
--- a/languages/DclareMPS/generator/template/main@generator.mps
+++ b/languages/DclareMPS/generator/template/main@generator.mps
@@ -1700,6 +1700,207 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/languages/DclareMPS/models/constraints.mps b/languages/DclareMPS/models/constraints.mps
index 1ae2c1a7..14e8a159 100644
--- a/languages/DclareMPS/models/constraints.mps
+++ b/languages/DclareMPS/models/constraints.mps
@@ -5772,5 +5772,13 @@
+
+
+
+
+
+
+
+
diff --git a/languages/DclareMPS/models/editor.mps b/languages/DclareMPS/models/editor.mps
index b68b38c9..ef3e87c7 100644
--- a/languages/DclareMPS/models/editor.mps
+++ b/languages/DclareMPS/models/editor.mps
@@ -9674,6 +9674,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -9681,9 +9713,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -9970,6 +10046,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/languages/DclareMPS/models/structure.mps b/languages/DclareMPS/models/structure.mps
index d126984a..9940b06c 100644
--- a/languages/DclareMPS/models/structure.mps
+++ b/languages/DclareMPS/models/structure.mps
@@ -1789,6 +1789,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1832,18 +1846,44 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -1856,34 +1896,24 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
+
+
+
+
+
+
+
@@ -1915,47 +1945,43 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
+
+
diff --git a/runtime/src/main/java/org/modelingvalue/dclare/mps/DClareMPS.java b/runtime/src/main/java/org/modelingvalue/dclare/mps/DClareMPS.java
index 2fa3c260..bdf51768 100644
--- a/runtime/src/main/java/org/modelingvalue/dclare/mps/DClareMPS.java
+++ b/runtime/src/main/java/org/modelingvalue/dclare/mps/DClareMPS.java
@@ -310,6 +310,16 @@ public void init() {
deferredChangeHandlers = deferredChangeHandlers.put(ng.getId(), Concurrent.of(Map.of()));
universeTransaction.addImperative(ng.getId(), this::handleNativeDelta, ng.getScheduler(this)::accept, false);
}
+
+ for (INativeGroup ng : DRepository.ALL_NATIVE_GROUPS.get(getRepository())) {
+ for (INativeGroup before : ng.getDependencies()) {
+ universeTransaction.orderImperativeTransactions(before.getId(), ng.getId());
+ }
+ for (INativeGroup after : ng.getDependents()) {
+ universeTransaction.orderImperativeTransactions(ng.getId(), after.getId());
+ }
+ }
+
mpsTransaction.schedule(() -> REPOSITORY_CONTAINER.set(this, getRepository()));
mpsTransaction.schedule(() -> DSERVER_METADATA.set(this, dServerMetaData));
if (isCollaberationEnabled()) {
diff --git a/runtime/src/main/java/org/modelingvalue/dclare/mps/INativeGroup.java b/runtime/src/main/java/org/modelingvalue/dclare/mps/INativeGroup.java
index fc45197c..e1600d2c 100644
--- a/runtime/src/main/java/org/modelingvalue/dclare/mps/INativeGroup.java
+++ b/runtime/src/main/java/org/modelingvalue/dclare/mps/INativeGroup.java
@@ -20,6 +20,8 @@
package org.modelingvalue.dclare.mps;
+import java.util.ArrayList;
+import java.util.List;
import java.util.function.Consumer;
import org.jetbrains.mps.openapi.language.SLanguage;
@@ -37,4 +39,12 @@ static INativeGroup of(SLanguage language, String id) {
Consumer getScheduler(DClareMPS dclare);
+ default List getDependencies() {
+ return new ArrayList<>();
+ }
+
+ default List getDependents() {
+ return new ArrayList<>();
+ }
+
}
diff --git a/solutions/DclareMPSPlugin/DclareMPSPlugin.msd b/solutions/DclareMPSPlugin/DclareMPSPlugin.msd
index eb565575..00511bb3 100644
--- a/solutions/DclareMPSPlugin/DclareMPSPlugin.msd
+++ b/solutions/DclareMPSPlugin/DclareMPSPlugin.msd
@@ -1,7 +1,7 @@
-
+
diff --git a/solutions/DclareMPSRuntime/DclareMPSRuntime.msd b/solutions/DclareMPSRuntime/DclareMPSRuntime.msd
index cce46d4d..bbb5f18b 100644
--- a/solutions/DclareMPSRuntime/DclareMPSRuntime.msd
+++ b/solutions/DclareMPSRuntime/DclareMPSRuntime.msd
@@ -1,10 +1,10 @@
-
+
-
+