diff --git a/src/Model/InitialConditions/InitialConditions.py b/src/Model/InitialConditions/InitialConditions.py
index c81f940c119b0c5ad1958513f9c56e642d99a1ec..439445fa3887ad85087d59f7efd19a88576d2a95 100644
--- a/src/Model/InitialConditions/InitialConditions.py
+++ b/src/Model/InitialConditions/InitialConditions.py
@@ -395,6 +395,7 @@ class InitialConditions(SQLSubModel):
             self._data.append(new)
             previous_elevation = elevation
 
+        self._generate_resort_data(profiles)
 
     def generate_discharge(self, discharge: float):
         self._data = []
@@ -438,3 +439,15 @@ class InitialConditions(SQLSubModel):
 
             previous_elevation = elevation
             self._data.append(new)
+
+        self._generate_resort_data(profiles)
+
+    def _generate_resort_data(self, profiles):
+        is_reverse = False
+        if profiles[0].kp > profiles[-1].kp:
+            is_reverse = True
+
+        self._data.sort(
+            reverse=not is_reverse,
+            key=lambda d: d['kp']
+        )
diff --git a/src/View/Reservoir/Table.py b/src/View/Reservoir/Table.py
index 66cdae82109f2aa212ea68b249ad310fb6e984be..143620504a520800a64faf852b3aac8bac9d8703 100644
--- a/src/View/Reservoir/Table.py
+++ b/src/View/Reservoir/Table.py
@@ -56,9 +56,22 @@ class ComboBoxDelegate(QItemDelegate):
     def createEditor(self, parent, option, index):
         self.editor = QComboBox(parent)
 
+        nodes = list(
+            map(
+                lambda n: n.name,
+                filter(
+                    lambda n: not (
+                        self._data.is_upstream_node(n)
+                        or self._data.is_downstream_node(n)
+                    ),
+                    self._data.nodes()
+                )
+            )
+        )
+
         self.editor.addItems(
             [_translate("Reservoir", "Not associated")] +
-            self._data.nodes_names()
+            nodes
         )
 
         self.editor.setCurrentText(index.data(Qt.DisplayRole))