diff --git a/src/app/calculators/cloisons/cloisons.config.json b/src/app/calculators/cloisons/cloisons.config.json
index ea679624bfed8ac817ef405a9543b1d328dca705..52e618a7776c0b9b418bbac2018bb3794b1bde7b 100644
--- a/src/app/calculators/cloisons/cloisons.config.json
+++ b/src/app/calculators/cloisons/cloisons.config.json
@@ -54,125 +54,24 @@
             {
                 "id": "select_ouvrage",
                 "type": "select",
-                "select": [
-                    {
-                        "id": "select_ouvrage_seuil_rect",
-                        "enum": "StructureType.SeuilRectangulaire"
-                    },
-                    {
-                        "id": "select_ouvrage_orifice",
-                        "enum": "StructureType.Orifice"
-                    },
-                    {
-                        "id": "select_ouvrage_seuil_triang",
-                        "enum": "StructureType.SeuilTriangulaire"
-                    },
-                    {
-                        "id": "select_ouvrage_seuil_triangtrunc",
-                        "enum": "StructureType.SeuilTriangulaireTrunc"
-                    }
-
-                ]
+                "source": "device_structure_type"
             },
             {
-                "id": "select_loidebit1",
+                "id": "select_loidebit",
                 "type": "select",
-                "select": [
-                    {
-                        "id": "select_loidebit1_fente",
-                        "enum": "LoiDebit.WeirSubmergedLarinier"
-                    },
-                    {
-                        "id": "select_loidebit1_villemonte",
-                        "enum": "LoiDebit.WeirVillemonte"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_rect"
-                    }
-                ]
-            },
-            {
-                "id": "select_loidebit2",
-                "type": "select",
-                "select": [
-                    {
-                        "id": "select_loidebit2_orifice",
-                        "enum": "LoiDebit.OrificeSubmerged"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_orifice"
-                    }
-                ]
-            },
-            {
-                "id": "select_loidebit3",
-                "type": "select",
-                "select": [
-                    {
-                        "id": "select_loidebit3_seuiltriang",
-                        "enum": "LoiDebit.TriangularWeirFree"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triang"
-                    }
-                ]
-            },
-            {
-                "id": "select_loidebit4",
-                "type": "select",
-                "select": [
-                    {
-                        "id": "select_loidebit4_seuiltriangtrunc",
-                        "enum": "LoiDebit.TriangularTruncWeirFree"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "source": "device_loi_debit"
             },
             {
                 "type": "input",
                 "id": "h1",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_rect"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triang"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "L",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_rect"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
@@ -184,53 +83,25 @@
                 "type": "input",
                 "id": "S",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_loidebit2",
-                        "refvalue": "select_loidebit2_orifice"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
              {
                 "type": "input",
                 "id": "alpha2",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triang"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "BT",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "ZT",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             }
         ]
     },
diff --git a/src/app/calculators/cloisons/cloisons.en.json b/src/app/calculators/cloisons/cloisons.en.json
index 1eaf2a56d33257785d8ceef885d0e2d206caf3a8..983d797a5b453bb67c4a3bdf9f267245f4d18b4c 100644
--- a/src/app/calculators/cloisons/cloisons.en.json
+++ b/src/app/calculators/cloisons/cloisons.en.json
@@ -3,15 +3,21 @@
     "ZR": "Upstream bed elevation",
     "PB": "Pool mean depth",
     "h1": "Head",
-    "select_ouvrage_seuil_triang": "Triangular weir",
-    "select_ouvrage_seuil_triangtrunc": "Truncated triangular weir",
-    "select_ouvrage_orifice": "Orifice",
-    "select_ouvrage_seuil_rect": "Rectangular weir",
-    "select_loidebit1_villemonte": "Villemonte 1947",
-    "select_loidebit1_fente": "Submerged slot (Larinier 1992)",
-    "select_loidebit2_orifice": "Submerged orifice",
-    "select_loidebit3_seuiltriang": "Free flow triangular weir",
-    "select_loidebit4_seuiltriangtrunc": "Free flow truncated triangular weir",
+
+    "select_structure_SeuilTriangulaire": "Triangular weir",
+    "select_structure_SeuilTriangulaireTrunc": "Truncated triangular weir",
+    "select_structure_Orifice": "Orifice",
+    "select_structure_SeuilRectangulaire": "Rectangular weir",
+
+    "select_loidebit_Orifice_OrificeSubmerged": "Submerged orifice",
+
+    "select_loidebit_SeuilRectangulaire_WeirSubmergedLarinier": "Submerged slot (Larinier 1992)",
+    "select_loidebit_SeuilRectangulaire_WeirVillemonte": "Villemonte 1947",
+
+    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Free flow triangular weir",
+
+    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Free flow truncated triangular weir",
+
 	"UNIT_PV": "W/m³",
 	"UNIT_Q": "m³/s",
     "UNIT_YMOY": "m",
diff --git a/src/app/calculators/cloisons/cloisons.fr.json b/src/app/calculators/cloisons/cloisons.fr.json
index 4c2cbd9f7e9a7a27d2f33d6ad83872545a8168ef..f98900e228931e0956f512caddf4313bb46bc2d1 100644
--- a/src/app/calculators/cloisons/cloisons.fr.json
+++ b/src/app/calculators/cloisons/cloisons.fr.json
@@ -1,14 +1,20 @@
 {
     "Q": "Débit total",
-    "select_ouvrage_seuil_triang": "Seuil triangulaire",
-    "select_ouvrage_seuil_triangtrunc": "Seuil triangulaire tronqué",
-    "select_ouvrage_orifice": "Orifice",
-    "select_ouvrage_seuil_rect": "Seuil rectangulaire",
-    "select_loidebit1_villemonte": "Villemonte 1947",
-    "select_loidebit1_fente": "Fente noyée (Larinier 1992)",
-    "select_loidebit2_orifice": "Orifice noyé",
-    "select_loidebit3_seuiltriang": "Déversoir triangulaire dénoyé",
-    "select_loidebit4_seuiltriangtrunc": "Déversoir triangulaire tronqué dénoyé",
+
+    "select_structure_SeuilTriangulaire": "Seuil triangulaire",
+    "select_structure_SeuilTriangulaireTrunc": "Seuil triangulaire tronqué",
+    "select_structure_Orifice": "Orifice",
+    "select_structure_SeuilRectangulaire": "Seuil rectangulaire",
+
+    "select_loidebit_Orifice_OrificeSubmerged": "Orifice noyé",
+
+    "select_loidebit_SeuilRectangulaire_WeirSubmergedLarinier": "Fente noyée (Larinier 1992)",
+    "select_loidebit_SeuilRectangulaire_WeirVillemonte": "Villemonte 1947",
+
+    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Déversoir triangulaire dénoyé",
+
+    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Déversoir triangulaire tronqué dénoyé",
+
 	"UNIT_PV": "W/m³",
 	"UNIT_Q": "m³/s",
     "UNIT_YMOY": "m",
diff --git a/src/app/calculators/dever/dever.config.json b/src/app/calculators/dever/dever.config.json
index 4bb14ec5eeaaab3bdfeb4f17752f6b98e07d0bb5..c3378c6b0b541d5015141fff5fc99666be5cab19 100644
--- a/src/app/calculators/dever/dever.config.json
+++ b/src/app/calculators/dever/dever.config.json
@@ -42,160 +42,48 @@
             {
                 "id": "select_ouvrage",
                 "type": "select",
-                "select": [
-                    {
-                        "id": "select_ouvrage_seuil_rect",
-                        "enum": "StructureType.SeuilRectangulaire"
-                    },
-                    {
-                        "id": "select_ouvrage_seuil_triang",
-                        "enum": "StructureType.SeuilTriangulaire"
-                    },
-                    {
-                        "id": "select_ouvrage_seuil_triangtrunc",
-                        "enum": "StructureType.SeuilTriangulaireTrunc"
-                    }
-                ]
+                "source": "device_structure_type"
             },
             {
-                "id": "select_loidebit1",
+                "id": "select_loidebit",
                 "type": "select",
-                "select": [
-                   {
-                        "id": "select_loidebit1_seuildenoye",
-                        "enum": "LoiDebit.WeirFree"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_rect"
-                    }
-                ]
-            },
-            {
-                "id": "select_loidebit3",
-                "type": "select",
-                "select": [
-                    {
-                        "id": "select_loidebit3_seuiltriang",
-                        "enum": "LoiDebit.TriangularWeirFree"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triang"
-                    }
-                ]
-            },
-            {
-                "id": "select_loidebit4",
-                "type": "select",
-                "select": [
-                    {
-                        "id": "select_loidebit4_seuiltriangtrunc",
-                        "enum": "LoiDebit.TriangularTruncWeirFree"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "source": "device_loi_debit"
             },
             {
                 "type": "input",
                 "id": "ZDV",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_rect"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triang"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "L",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_rect"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "Cd",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_seuildenoye"
-                    },
-                    {
-                        "refid": "select_loidebit3",
-                        "refvalue": "select_loidebit3_seuiltriang"
-                    },
-                    {
-                        "refid": "select_loidebit3",
-                        "refvalue": "select_loidebit4_seuiltriangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "alpha2",
                 "unit": "°",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triang"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "BT",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "ZT",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             }
         ]
     },
diff --git a/src/app/calculators/dever/dever.en.json b/src/app/calculators/dever/dever.en.json
index a488c994589b8290273a1544b82cae5d9e170b4b..9d4f6f0d5dafc5c1e6ee30588b1716bd4d6b5aad 100644
--- a/src/app/calculators/dever/dever.en.json
+++ b/src/app/calculators/dever/dever.en.json
@@ -2,14 +2,17 @@
     "Q": "Total Flow",
     "ZR": "Upstream bed elevation",
     "BR": "Upstream bed width",
-    "select_ouvrage_seuil_rect": "Rectangular weir",
-    "select_ouvrage_seuil_triang": "Triangular weir",
-    "select_ouvrage_seuil_triangtrunc": "Truncated triangular weir",
-    "select_loidebit1_seuildenoye": "Free flow rectangular weir",
-    "select_loidebit3_seuiltriang": "Free flow triangular weir",
-    "select_loidebit4_seuiltriangtrunc": "Free flow truncated triangular weir",
     "L": "Width of the weir",
     "Cd": "Discharge coefficient",
+
+    "select_structure_SeuilRectangulaire": "Rectangular weir",
+    "select_structure_SeuilTriangulaire": "Triangular weir",
+    "select_structure_SeuilTriangulaireTrunc": "Truncated triangular weir",
+
+    "select_loidebit_SeuilRectangulaire_WeirFree": "Free flow rectangular weir",
+    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Free flow triangular weir",
+    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Free flow truncated triangular weir",
+
     "UNIT_CVQT": "m³/s",
 	"UNIT_Q": "m³/s",
     "UNIT_EC": "m",
diff --git a/src/app/calculators/dever/dever.fr.json b/src/app/calculators/dever/dever.fr.json
index ec276acc334fedb4943fc0e8cf88b7e0cc3489b6..d4e462ff3c316c3480d2de67083d3dd5145ef6f7 100644
--- a/src/app/calculators/dever/dever.fr.json
+++ b/src/app/calculators/dever/dever.fr.json
@@ -2,14 +2,17 @@
     "Q": "Débit total",
     "ZR": "Cote du lit amont",
     "BR": "Largeur du lit amont",
-    "select_ouvrage_seuil_rect": "Déversoir rectangulaire",
-    "select_ouvrage_seuil_triang": "Déversoir triangulaire",
-    "select_ouvrage_seuil_triangtrunc": "Déversoir triangulaire tronqué",
-    "select_loidebit1_seuildenoye": "Déversoir rectangulaire dénoyé",
-    "select_loidebit3_seuiltriang": "Déversoir triangulaire dénoyé",
-    "select_loidebit4_seuiltriangtrunc": "Déversoir triangulaire tronqué dénoyé",
     "L": "Largeur du déversoir",
     "Cd": "Coefficient de débit",
+
+    "select_structure_SeuilRectangulaire": "Déversoir rectangulaire",
+    "select_structure_SeuilTriangulaire": "Déversoir triangulaire",
+    "select_structure_SeuilTriangulaireTrunc": "Déversoir triangulaire tronqué",
+
+    "select_loidebit_SeuilRectangulaire_WeirFree": "Déversoir rectangulaire dénoyé",
+    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Déversoir triangulaire dénoyé",
+    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Déversoir triangulaire tronqué dénoyé",
+
     "UNIT_CVQT": "m³/s",
 	"UNIT_Q": "m³/s",
     "UNIT_EC": "m",
diff --git a/src/app/calculators/lechapt-calmon/lechapt-calmon.config.json b/src/app/calculators/lechapt-calmon/lechapt-calmon.config.json
index 283d67aa24a3a695e69b5e3d2f66f2349c86e558..d2f57ba0c9b0ab5a346d2c0bae800f92ebde526c 100644
--- a/src/app/calculators/lechapt-calmon/lechapt-calmon.config.json
+++ b/src/app/calculators/lechapt-calmon/lechapt-calmon.config.json
@@ -7,7 +7,7 @@
             {
                 "id": "select_material",
                 "type": "select",
-                "source": "lechapt_calmon_materials"
+                "source": "lechapt_calmon_material"
             },
             {
                 "type": "input",
diff --git a/src/app/calculators/parallel-structures/parallel-structures.config.json b/src/app/calculators/parallel-structures/parallel-structures.config.json
index 07272c3a1b2a1f970f89ac76dc3155b04749538c..4a0b8a5806586e4c7a50165ded1ac86956c721f1 100644
--- a/src/app/calculators/parallel-structures/parallel-structures.config.json
+++ b/src/app/calculators/parallel-structures/parallel-structures.config.json
@@ -35,344 +35,90 @@
             {
                 "id": "select_ouvrage",
                 "type": "select",
-                "select": [
-                    {
-                        "id": "select_ouvrage_vanne_rect",
-                        "enum": "StructureType.VanneRectangulaire"
-                    },
-                    {
-                        "id": "select_ouvrage_seuil_rect",
-                        "enum": "StructureType.SeuilRectangulaire"
-                    },
-                    {
-                        "id": "select_ouvrage_seuil_triang",
-                        "enum": "StructureType.SeuilTriangulaire"
-                    },
-                    {
-                        "id": "select_ouvrage_seuil_triangtrunc",
-                        "enum": "StructureType.SeuilTriangulaireTrunc"
-                    }
-                ]
+                "source": "device_structure_type"
             },
             {
-                "id": "select_loidebit1",
+                "id": "select_loidebit",
                 "type": "select",
-                "select": [
-                    {
-                        "id": "select_loidebit1_cem88d",
-                        "enum": "LoiDebit.WeirCem88d"
-                    },
-                    {
-                        "id": "select_loidebit1_cem88v",
-                        "enum": "LoiDebit.WeirCem88v"
-                    },
-                    {
-                        "id": "select_loidebit1_seuildenoye",
-                        "enum": "LoiDebit.WeirFree"
-                    },
-                    {
-                        "id": "select_loidebit1_cunge80",
-                        "enum": "LoiDebit.WeirCunge80"
-                    },
-                    {
-                        "id": "select_loidebit1_villemonte",
-                        "enum": "LoiDebit.WeirVillemonte"
-                    },
-                    {
-                        "id": "select_loidebit1_kivi",
-                        "enum": "LoiDebit.KIVI"
-                    },
-                    {
-                        "id": "select_loidebit1_fente",
-                        "enum": "LoiDebit.WeirSubmergedLarinier"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_rect"
-                    }
-                ]
-            },
-            {
-                "id": "select_loidebit2",
-                "type": "select",
-                "select": [
-                    {
-                        "id": "select_loidebit2_cem88v",
-                        "enum": "LoiDebit.GateCem88v"
-                    },
-                    {
-                        "id": "select_loidebit2_cem88d",
-                        "enum": "LoiDebit.GateCem88d"
-                    },
-                    {
-                        "id": "select_loidebit2_vannedenoye",
-                        "enum": "LoiDebit.RectangularOrificeFree"
-                    },
-                    {
-                        "id": "select_loidebit2_vannenoye",
-                        "enum": "LoiDebit.RectangularOrificeSubmerged"
-                    },
-                    {
-                        "id": "select_loidebit2_cunge80",
-                        "enum": "LoiDebit.GateCunge80"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_vanne_rect"
-                    }
-                ]
-            },
-            {
-                "id": "select_loidebit3",
-                "type": "select",
-                "select": [
-                    {
-                        "id": "select_loidebit3_seuiltriang",
-                        "enum": "LoiDebit.TriangularWeirFree"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triang"
-                    }
-                ]
-            },
-            {
-                "id": "select_loidebit4",
-                "type": "select",
-                "select": [
-                    {
-                        "id": "select_loidebit4_seuiltriangtrunc",
-                        "enum": "LoiDebit.TriangularTruncWeirFree"
-                    }
-                ],
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "source": "device_loi_debit"
             },
             {
                 "type": "input",
                 "id": "ZDV",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_vanne_rect"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_rect"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triang"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "L",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_vanne_rect"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_rect"
-                    },
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_kivi"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "W",
                 "nodeType": "StructureRectangle",
-                "unit": "m",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_vanne_rect"
-                    }
-                ]
+                "unit": "m"
             },
             {
                 "type": "input",
                 "id": "CdWSL",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_fente"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "CdWR",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_seuildenoye"
-                    },
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_cem88d"
-                    },
-                    {
-                        "refid": "select_loidebit2",
-                        "refvalue": "select_loidebit2_cem88d"
-                    },
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_villemonte"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "CdGR",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_cunge80"
-                    },
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_cem88v"
-                    },
-                    {
-                        "refid": "select_loidebit2",
-                        "refvalue": "select_loidebit2_vannedenoye"
-                    },
-                    {
-                        "refid": "select_loidebit2",
-                        "refvalue": "select_loidebit2_vannenoye"
-                    },
-                    {
-                        "refid": "select_loidebit2",
-                        "refvalue": "select_loidebit2_cunge80"
-                    },
-                    {
-                        "refid": "select_loidebit2",
-                        "refvalue": "select_loidebit2_cem88v"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "CdT",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triang"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "alpha",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_kivi"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "beta",
                 "unit": "",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_kivi"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "ZRAM",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_loidebit1",
-                        "refvalue": "select_loidebit1_kivi"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "alpha2",
                 "unit": "°",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triang"
-                    },
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "BT",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             },
             {
                 "type": "input",
                 "id": "ZT",
                 "unit": "m",
-                "nodeType": "StructureRectangle",
-                "dep_exist": [
-                    {
-                        "refid": "select_ouvrage",
-                        "refvalue": "select_ouvrage_seuil_triangtrunc"
-                    }
-                ]
+                "nodeType": "StructureRectangle"
             }
         ]
     },
diff --git a/src/app/calculators/parallel-structures/parallel-structures.en.json b/src/app/calculators/parallel-structures/parallel-structures.en.json
index 84154f2febe14963072c072d625d339063fd0e57..df9a1d99a656287f0649e247678c32fc634993a8 100644
--- a/src/app/calculators/parallel-structures/parallel-structures.en.json
+++ b/src/app/calculators/parallel-structures/parallel-structures.en.json
@@ -1,26 +1,32 @@
 {
     "Q": "Total Flow",
-    "select_ouvrage_vanne_circ": "Circular gate",
-    "select_ouvrage_vanne_rect": "Rectangular gate",
-    "select_ouvrage_seuil_rect": "Rectangular weir",
-    "select_ouvrage_seuil_triang": "Triangular weir",
-    "select_ouvrage_seuil_triangtrunc": "Truncated triangular weir",
-    "select_ouvrage_seuil_trap": "Trapezoidal weir",
-    "select_ouvrage_vanne_trap": "trapezoidal gate",
     "W": "Gate opening",
-    "select_loidebit1_seuildenoye": "Free flow weir",
-    "select_loidebit1_cunge80": "Cunge 80",
-    "select_loidebit1_cem88d": "Weir/Orifice Cemagref 88",
-    "select_loidebit1_cem88v": "Weir/Undershot gate Cemagref 88",
-    "select_loidebit1_fente": "Submerged slot (Larinier 1992)",
-    "select_loidebit1_kivi": "Kindsvater-Carter and Villemonte",
-    "select_loidebit1_villemonte": "Villemonte 1957",
-    "select_loidebit2_vannedenoye": "Free flow gate",
-    "select_loidebit2_vannenoye": "Submerged gate",
-    "select_loidebit2_cunge80": "Cunge 80",
-    "select_loidebit2_cem88d": "Weir/Orifice Cemagref 88",
-    "select_loidebit2_cem88v": "Weir/Undershot gate Cemagref 88",
-    "select_loidebit3_seuiltriang": "Triangular weir (Villemonte)",
-    "select_loidebit4_seuiltriangtrunc": "Truncated triangular weir (Villemonte)",
+
+    "select_structure_Orifice": "Orifice",
+    "select_structure_VanneRectangulaire": "Rectangular gate",
+    "select_structure_SeuilRectangulaire": "Rectangular weir",
+    "select_structure_SeuilTriangulaire": "Triangular weir",
+    "select_structure_SeuilTriangulaireTrunc": "Truncated triangular weir",
+
+    "select_loidebit_Orifice_OrificeSubmerged": "Submerged orifice",
+
+    "select_loidebit_VanneRectangulaire_GateCem88d": "Weir/Orifice Cemagref 88",
+    "select_loidebit_VanneRectangulaire_GateCem88v": "Weir/Undershot gate Cemagref 88",
+    "select_loidebit_VanneRectangulaire_GateCunge80": "Cunge 80",
+    "select_loidebit_VanneRectangulaire_RectangularOrificeFree": "Free flow gate",
+    "select_loidebit_VanneRectangulaire_RectangularOrificeSubmerged": "Submerged gate",
+
+    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Triangular weir (Villemonte)",
+
+    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Truncated triangular weir (Villemonte)",
+
+    "select_loidebit_SeuilRectangulaire_WeirCem88d": "Weir/Orifice Cemagref 88",
+    "select_loidebit_SeuilRectangulaire_WeirCem88v": "Weir/Undershot gate Cemagref 88",
+    "select_loidebit_SeuilRectangulaire_WeirSubmergedLarinier": "Submerged slot (Larinier 1992)",
+    "select_loidebit_SeuilRectangulaire_WeirVillemonte": "Villemonte 1957",
+    "select_loidebit_SeuilRectangulaire_WeirFree": "Free flow weir",
+    "select_loidebit_SeuilRectangulaire_KIVI": "Kindsvater-Carter and Villemonte",
+    "select_loidebit_SeuilRectangulaire_WeirCunge80": "Cunge 80",
+
 	"UNIT_Q": "m³/s"
 }
diff --git a/src/app/calculators/parallel-structures/parallel-structures.fr.json b/src/app/calculators/parallel-structures/parallel-structures.fr.json
index 7b765db33b58a06d5691027e54494db1490a835c..992f033e1f78d947bbfaed5935f59e758311441b 100644
--- a/src/app/calculators/parallel-structures/parallel-structures.fr.json
+++ b/src/app/calculators/parallel-structures/parallel-structures.fr.json
@@ -1,25 +1,32 @@
 {
     "Q": "Débit total",
-    "select_ouvrage_vanne_circ": "Vanne circulaire",
-    "select_ouvrage_vanne_rect": "Vanne rectangulaire",
-    "select_ouvrage_seuil_rect": "Seuil rectangulaire",
-    "select_ouvrage_seuil_triang": "Seuil triangulaire",
-    "select_ouvrage_seuil_triangtrunc": "Seuil triangulaire tronqué",
-    "select_ouvrage_seuil_trap": "Seuil trapézoïdal",
-    "select_ouvrage_vanne_trap": "Vanne trapézoïdale",
-    "select_loidebit1_seuildenoye": "Seuil dénoyé",
-    "select_loidebit1_cunge80": "Cunge 80",
-    "select_loidebit1_cem88d": "Déversoir/Orifice Cemagref 88",
-    "select_loidebit1_cem88v": "Déversoir/Vanne de fond Cemagref 88",
-    "select_loidebit1_fente": "Fente noyée (Larinier 1992)",
-    "select_loidebit1_kivi": "Kindsvater-Carter et Villemonte",
-    "select_loidebit1_villemonte": "Villemonte 1957",
-    "select_loidebit2_vannedenoye": "Vanne dénoyé",
-    "select_loidebit2_vannenoye": "Vanne noyé",
-    "select_loidebit2_cunge80": "Cunge 80",
-    "select_loidebit2_cem88d": "Déversoir/Orifice Cemagref 88",
-    "select_loidebit2_cem88v": "Déversoir/Vanne de fond Cemagref 88",
-    "select_loidebit3_seuiltriang": "Déversoir triangulaire (Villemonte)",
-    "select_loidebit4_seuiltriangtrunc": "Déversoir triangulaire tronqué (Villemonte)",
+    "W": "Ouverture de vanne",
+
+    "select_structure_Orifice": "Orifice",
+    "select_structure_SeuilRectangulaire": "Seuil rectangulaire",
+    "select_structure_SeuilTriangulaire": "Seuil triangulaire",
+    "select_structure_SeuilTriangulaireTrunc": "Seuil triangulaire tronqué",
+    "select_structure_VanneRectangulaire": "Vanne rectangulaire",
+
+    "select_loidebit_Orifice_OrificeSubmerged": "Orifice noyé",
+
+    "select_loidebit_VanneRectangulaire_GateCem88d": "Déversoir/Orifice Cemagref 88",
+    "select_loidebit_VanneRectangulaire_GateCem88v": "Déversoir/Vanne de fond Cemagref 88",
+    "select_loidebit_VanneRectangulaire_GateCunge80": "Cunge 80",
+    "select_loidebit_VanneRectangulaire_RectangularOrificeFree": "Vanne dénoyée",
+    "select_loidebit_VanneRectangulaire_RectangularOrificeSubmerged": "Vanne noyée",
+
+    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Déversoir triangulaire (Villemonte)",
+
+    "select_loidebit_SeuilTriangulaireTrunc_TriangularTruncWeirFree": "Déversoir triangulaire tronqué (Villemonte)",
+
+    "select_loidebit_SeuilRectangulaire_WeirCem88d": "Déversoir/Orifice Cemagref 88",
+    "select_loidebit_SeuilRectangulaire_WeirCem88v": "Déversoir/Vanne de fond Cemagref 88",
+    "select_loidebit_SeuilRectangulaire_WeirSubmergedLarinier": "Fente noyée (Larinier 1992)",
+    "select_loidebit_SeuilRectangulaire_WeirVillemonte": "Villemonte 1957",
+    "select_loidebit_SeuilRectangulaire_WeirFree": "Seuil dénoyé",
+    "select_loidebit_SeuilRectangulaire_KIVI": "Kindsvater-Carter et Villemonte",
+    "select_loidebit_SeuilRectangulaire_WeirCunge80": "Cunge 80",
+
 	"UNIT_Q": "m³/s"
-}
\ No newline at end of file
+}
diff --git a/src/app/calculators/regime-uniforme/regime-uniforme.config.json b/src/app/calculators/regime-uniforme/regime-uniforme.config.json
index a5623b0006f2e80f9b4cdcc2c44facdeaa9ce527..ac65a0ea103d3b1ada2455bd8629718355a4c39c 100644
--- a/src/app/calculators/regime-uniforme/regime-uniforme.config.json
+++ b/src/app/calculators/regime-uniforme/regime-uniforme.config.json
@@ -7,7 +7,7 @@
             {
                 "id": "select_section",
                 "type": "select",
-                "source": "acsection_available_sections"
+                "source": "acsection_section"
             },
             {
                 "type": "input",
diff --git a/src/app/calculators/remous/remous.config.json b/src/app/calculators/remous/remous.config.json
index f7ea148e2f859ebe9fbaab5c0aab4706f9c47e5b..172802242792d17f008d5058443b9bad62bc5e20 100644
--- a/src/app/calculators/remous/remous.config.json
+++ b/src/app/calculators/remous/remous.config.json
@@ -7,7 +7,7 @@
             {
                 "id": "select_section",
                 "type": "select",
-                "source": "acsection_available_sections"
+                "source": "acsection_section"
             },
             {
                 "type": "input",
diff --git a/src/app/calculators/section-param/section-param.config.json b/src/app/calculators/section-param/section-param.config.json
index 0d8a6332303fbec0abf78d447abe979314ba068e..acb801414d8d66514c56acb20fe93175672a8829 100644
--- a/src/app/calculators/section-param/section-param.config.json
+++ b/src/app/calculators/section-param/section-param.config.json
@@ -7,7 +7,7 @@
             {
                 "id": "select_section",
                 "type": "select",
-                "source": "acsection_available_sections"
+                "source": "acsection_section"
             },
             {
                 "type": "input",
diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts
index f10ec866230967f6ff0de706f26f982265ec6356..ebeb77d4a6d1c17a928c961b960272c3a1f7bbd2 100644
--- a/src/app/formulaire/definition/form-definition.ts
+++ b/src/app/formulaire/definition/form-definition.ts
@@ -196,35 +196,6 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
         this.kids.push(tab);
     }
 
-    public parseDependencies(json: {}) {
-        // tslint:disable-next-line:forin
-        for (const conf_index in json) {
-            const conf = json[conf_index];
-            const type: string = conf["type"];
-
-            switch (type) {
-                // field set
-                case "fieldset":
-                case "template_container":
-                    for (const k of this.kids) {
-                        if (k.id === conf["id"]) {
-                            k.parseDependencies(conf);
-                            break;
-                        }
-                    }
-                    break;
-
-                case "fieldset_template":
-                    for (const k of this.kids) {
-                        if (k instanceof FieldsetContainer) {
-                            k.parseDependencies(conf);
-                        }
-                    }
-                    break;
-            }
-        }
-    }
-
     /**
      * 1ère passe d'analyse de la configuration
      */
@@ -290,7 +261,6 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
         }
 
         this.completeParse(this._jsonConfig);
-        this.parseDependencies(this._jsonConfig);
     }
 
     public hasParameter(symbol: string): boolean {
@@ -381,8 +351,6 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
      */
     public reset() {
         this.resetResults([], undefined, true);
-        this.applyDependencies();
-
         // prévenir les composants qu'il faut détecter les changements
         this.notifyReset();
     }
@@ -407,12 +375,6 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
         return select.getValue().label;
     }
 
-    public applyDependencies() {
-        for (const fe of this.topFormElements) {
-            fe.applyDependencies();
-        }
-    }
-
     public abstract resetResults(visited: string[], symbol?: string, forceResetAllDependencies?: boolean);
     public abstract doCompute();
     public abstract get hasResults(): boolean;
diff --git a/src/app/formulaire/dependency/dependency-condition.ts b/src/app/formulaire/dependency/dependency-condition.ts
deleted file mode 100644
index 876e46426f2bbf57e5c796dc3e66a847f601322d..0000000000000000000000000000000000000000
--- a/src/app/formulaire/dependency/dependency-condition.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-export enum DependencyConditionType {
-    HasValue, IsVariable, IsDisplayed
-}
-
-export class DependencyCondition {
-    constructor(private _type: DependencyConditionType) {
-    }
-
-    public get type() {
-        return this._type;
-    }
-
-    public toString(): string {
-        return "cond=" + DependencyConditionType[this._type];
-    }
-}
diff --git a/src/app/formulaire/dependency/dependency.ts b/src/app/formulaire/dependency/dependency.ts
deleted file mode 100644
index fe7426f55bed6b9e75365cce30b1a5e9c1aad49a..0000000000000000000000000000000000000000
--- a/src/app/formulaire/dependency/dependency.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import { FormulaireElement } from "../formulaire-element";
-import { DependencyCondition } from "./dependency-condition";
-
-/**
- * Dépendance entre un élément maître et un élément esclave
- * Si le maître vérifie une condition (masterCondition), alors la dépendance est appliquée à l'élément esclave,
- * cad que son affichage, sa valeur, ... sont modifiés
- */
-export abstract class Dependency {
-    private _slave: FormulaireElement;
-
-    private _masterId: string;
-
-    private _masterCondition: DependencyCondition;
-
-    constructor(s: FormulaireElement, mid: string, mc: DependencyCondition) {
-        this._slave = s;
-        this._masterId = mid;
-        this._masterCondition = mc;
-    }
-
-    private getMasterElement(id: string): FormulaireElement {
-        let parentNode = this._slave.parent;
-        while (parentNode !== undefined) {
-            const res: FormulaireElement = parentNode.getFormulaireNodeById(id) as FormulaireElement;
-            if (res !== undefined) {
-                return res;
-            }
-            parentNode = parentNode.parent;
-        }
-    }
-
-    protected get masterElement(): FormulaireElement {
-        return this.getMasterElement(this._masterId);
-    }
-
-    public get masterCondition(): DependencyCondition {
-        return this._masterCondition;
-    }
-
-    public apply() {
-        const master: FormulaireElement = this.masterElement;
-        if (master && master.verifiesDependency(this)) {
-            this._slave.applyDependency(this);
-        }
-    }
-
-    public toString(): string {
-        return "slave=" + this._slave.toString() + "\n  mid=" + this._masterId + "\n  " + this._masterCondition.toString();
-    }
-}
diff --git a/src/app/formulaire/dependency/existence-dependency-condition.ts b/src/app/formulaire/dependency/existence-dependency-condition.ts
deleted file mode 100644
index 0ec4ce094f9bf2670e355bdd94d44ca8dd57cdd2..0000000000000000000000000000000000000000
--- a/src/app/formulaire/dependency/existence-dependency-condition.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { DependencyCondition, DependencyConditionType } from "./dependency-condition";
-
-
-export class ExistenceDependencyCondition extends DependencyCondition {
-    constructor() {
-        super(DependencyConditionType.IsDisplayed);
-    }
-}
diff --git a/src/app/formulaire/dependency/existence-dependency.ts b/src/app/formulaire/dependency/existence-dependency.ts
deleted file mode 100644
index 2f1a17f24e70b83f76a8a86853bc13e0f4bd6166..0000000000000000000000000000000000000000
--- a/src/app/formulaire/dependency/existence-dependency.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Dependency } from "./dependency";
-import { FormulaireElement } from "../formulaire-element";
-
-/**
- * dépendance déterminant l'affichage de l'élément esclave
- */
-export class ExistenceDependency extends Dependency {
-    /**
-     * true : l'élément slave est affiché si le master est affiché
-     * false : l'élément slave est affiché si le master n'est pas affiché
-     */
-    // private _direct: boolean;
-
-    public toString() {
-        return "existdep\n  " + super.toString();
-    }
-}
diff --git a/src/app/formulaire/dependency/value-dependency-condition.ts b/src/app/formulaire/dependency/value-dependency-condition.ts
deleted file mode 100644
index b0e3095688779361b463d3c59edf7a7fee71214f..0000000000000000000000000000000000000000
--- a/src/app/formulaire/dependency/value-dependency-condition.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { DependencyCondition, DependencyConditionType } from "./dependency-condition";
-
-
-export class ValueDependencyCondition extends DependencyCondition {
-    constructor(private _value: any) {
-        super(DependencyConditionType.HasValue);
-    }
-
-    public get value(): any {
-        return this._value;
-    }
-
-    public toString(): string {
-        return super.toString() + " " + this._value;
-    }
-}
diff --git a/src/app/formulaire/dependency/value-dependency.ts b/src/app/formulaire/dependency/value-dependency.ts
deleted file mode 100644
index b94f9fc9bb6acda3ac142ca06a4047f4c13e9aca..0000000000000000000000000000000000000000
--- a/src/app/formulaire/dependency/value-dependency.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Dependency } from "./dependency";
-import { FormulaireElement } from "../formulaire-element";
-import { ValueDependencyCondition } from "./value-dependency-condition";
-
-/**
- * dépendance déterminant la valeur de l'élément esclave
- */
-export class ValueDependency extends Dependency {
-    public slaveValue: any;
-
-    constructor(slave: FormulaireElement, masterId: string, masterValue: any) {
-        super(slave, masterId, new ValueDependencyCondition(masterValue));
-    }
-
-    public toString() {
-        return "valdep\n  " + super.toString() + "\n  slave val " + this.slaveValue;
-    }
-}
diff --git a/src/app/formulaire/fieldset.ts b/src/app/formulaire/fieldset.ts
index 4f08999ccab374a223b46390d493f6a578aea144..9f112fb4c10e97848c219443217647e41d6ba8f3 100644
--- a/src/app/formulaire/fieldset.ts
+++ b/src/app/formulaire/fieldset.ts
@@ -119,6 +119,7 @@ export class FieldSet extends FormulaireElement implements Observer {
 
         let res: NgParameter;
 
+        // @TODO tabarnak !?
         const nt: string = json["nodeType"];
         const nodeType: ComputeNodeType = nt ? ComputeNodeType[nt] : this.getPropValue("nodeType");
 
@@ -192,7 +193,6 @@ export class FieldSet extends FormulaireElement implements Observer {
     public updateFields() {
         this.clearFields();
         this.parseFields();
-        this.parseDependencies(this._jsonConfig);
         this.updateLocalisation();
 
         // MAJ des selects avec les valeurs actuelles des propriétés
@@ -227,9 +227,6 @@ export class FieldSet extends FormulaireElement implements Observer {
                 break;
 
         }
-
-        // fin MAJ selects
-        this.applyDependencies();
     }
 
     /**
@@ -239,7 +236,7 @@ export class FieldSet extends FormulaireElement implements Observer {
         const selectField: SelectField = this.getFormulaireNodeById(selectId) as SelectField;
         if (selectField) {
             const propVal: any = this.getPropValue(propertyKey);
-            const selectElement = selectField.getSelectedEntryFromValue(propVal); // @TODO juste setValue() ?
+            const selectElement = selectField.getSelectedEntryFromValue(propVal);
             try {
                 selectField.setValue(selectElement);
             } catch (e) {
@@ -292,31 +289,6 @@ export class FieldSet extends FormulaireElement implements Observer {
         this.updateFields();
     }
 
-    public parseDependencies(json: {}) {
-        super.parseDependencies(json);
-
-        for (const k1 in json) {
-            if (k1 === "fields") {
-                const fields = json[k1];
-                for (const k2 in fields) {
-                    const field = fields[k2];
-                    switch (field["type"]) {
-                        case "input":
-                        case "select":
-                        case "check":
-                            for (const k of this.kids) {
-                                if (k.id === field["id"]) {
-                                    k.parseDependencies(field);
-                                    break;
-                                }
-                            }
-                            break;
-                    }
-                }
-            }
-        }
-    }
-
     public getNodeParameter(symbol: string): NgParameter {
         for (const p of this.kids) {
             if (p instanceof NgParameter) {
diff --git a/src/app/formulaire/formulaire-element.ts b/src/app/formulaire/formulaire-element.ts
index 1bd652334908494703ac6004a9e45b28634030c4..dab5ab0cb6ff2fa1c4052dbcce7c8cca0a0dd144 100644
--- a/src/app/formulaire/formulaire-element.ts
+++ b/src/app/formulaire/formulaire-element.ts
@@ -1,9 +1,5 @@
 import { FormulaireNode } from "./formulaire-node";
 import { StringMap } from "../stringmap";
-import { Dependency } from "./dependency/dependency";
-import { DependencyCondition, DependencyConditionType } from "./dependency/dependency-condition";
-import { ValueDependencyCondition } from "./dependency/value-dependency-condition";
-import { ExistenceDependency } from "./dependency/existence-dependency";
 import { DeepFormulaireElementIterator } from "./form-iterator/deep-element-iterator";
 import { I18nService } from "../services/internationalisation/internationalisation.service";
 import { ServiceFactory } from "../services/service-factory";
@@ -29,8 +25,6 @@ export abstract class FormulaireElement extends FormulaireNode {
 
     private intlService: I18nService;
 
-    protected _dependencies: Dependency[] = [];
-
     public static removePrefix(s: string, prefix: string): string {
         if (s.startsWith(prefix)) {
             const l = prefix.length;
@@ -81,101 +75,6 @@ export abstract class FormulaireElement extends FormulaireNode {
         return res;
     }
 
-    /**
-     * analyse les dépendances d'existence
-     * @param json configuration de la dépendance
-     */
-    private parse_existence_dependencies(json: {}) {
-        for (const di in json) {
-            if (json.hasOwnProperty(di)) {
-                const d = json[di];
-                const rv = d["refvalue"];
-                let mc: DependencyCondition;
-                if (rv !== undefined) {
-                    mc = new ValueDependencyCondition(rv);
-                } else {
-                    const cond = d["cond"];
-                    if (cond !== undefined) {
-                        switch (cond) {
-                            case "isvar":
-                                mc = new DependencyCondition(DependencyConditionType.IsVariable);
-                                break;
-
-                            case "isdisp":
-                                mc = new DependencyCondition(DependencyConditionType.IsDisplayed);
-                                break;
-
-                            default:
-                                throw new Error(
-                                    "Formulaire.parse_existence_dependencies() : type de condition '" + cond + "' non pris en charge"
-                                );
-                        }
-                    } else {
-                        throw new Error("Formulaire.parse_existence_dependencies() : infos de dépendance manquantes/non prises en charge");
-                    }
-                }
-                const dep = new ExistenceDependency(this, d["refid"], mc);
-                this._dependencies.push(dep);
-            }
-        }
-    }
-
-    /**
-     * analyse les dépendances (existence/valeur)
-     * @param json configuration de la dépendance
-     * @param parentNode node parent dans lequel rechercher l'élément master (dont l'existence dépend)
-     */
-    public parseDependencies(json: {}) {
-        const dep = json["dep_exist"];
-        if (dep !== undefined) {
-            this.parse_existence_dependencies(dep);
-        }
-    }
-
-    public verifiesDependency(d: Dependency): boolean {
-        if (d.masterCondition.type === DependencyConditionType.IsDisplayed) {
-            return this._isDisplayed;
-        }
-    }
-
-    /**
-     * applique une dépendance dont la condition a été vérifiée
-     */
-    public applyDependency(d: Dependency) {
-        if (d instanceof ExistenceDependency) {
-            this.isDisplayed = true;
-        }
-    }
-
-    private prepareExistenceDependencies() {
-        // si des FormulaireElement sont présents dans des ExistenceDependency, on met leur membre isDisplayed à false
-
-        for (const d of this._dependencies) {
-            if (d instanceof ExistenceDependency) {
-                this.isDisplayed = false;
-                break;
-            }
-        }
-    }
-
-    public applyDependencies() {
-        this.prepareExistenceDependencies();
-
-        for (const d of this._dependencies) {
-            d.apply();
-        }
-
-        for (const k of this.getKids()) {
-            k.applyDependencies();
-        }
-    }
-
-    public printDependencies() {
-        for (const d of this._dependencies) {
-            console.log(d.toString());
-        }
-    }
-
     /**
      * Updates localisation for this element: first the label then all the element's children
      * @param loc calculator-specific localised messages map
diff --git a/src/app/formulaire/formulaire-node.ts b/src/app/formulaire/formulaire-node.ts
index 918c6d8da06ddab9dacd36d950cd3edee4bc09e7..b1406fec955349c7a7795df37e819b207015e69a 100644
--- a/src/app/formulaire/formulaire-node.ts
+++ b/src/app/formulaire/formulaire-node.ts
@@ -115,13 +115,6 @@ export abstract class FormulaireNode implements IObservable {
 
     public abstract parseConfig(json: {}, data?: {});
 
-    /**
-     * analyse les dépendances (existence/valeur)
-     * @param json configuration de la dépendance
-     * @param parentNode nod parent dans lequel rechercher l'élément master (dont l'existence dépend)
-     */
-    public abstract parseDependencies(json: {});
-
     // interface IObservable
 
     /**
diff --git a/src/app/formulaire/ngparam.ts b/src/app/formulaire/ngparam.ts
index 5562845dd37049df5bf0438291638f0242d59b0c..07e5051f6b308366f7015775fd6cd982017b6415 100644
--- a/src/app/formulaire/ngparam.ts
+++ b/src/app/formulaire/ngparam.ts
@@ -4,9 +4,6 @@ import { Interval, ParamDefinition, ParamDomain, ParamValueMode, INumberIterator
 import { sprintf } from "sprintf-js";
 
 import { InputField } from "./input-field";
-import { Dependency } from "./dependency/dependency";
-import { DependencyConditionType } from "./dependency/dependency-condition";
-import { ValueDependencyCondition } from "./dependency/value-dependency-condition";
 import { ServiceFactory } from "../services/service-factory";
 import { FormulaireNode } from "./formulaire-node";
 
@@ -453,25 +450,6 @@ export class NgParameter extends InputField implements Observer {
         this.radioConfig = NgParameter.getRadioConfig(radioConfig);
     }
 
-    public verifiesDependency(d: Dependency): boolean {
-        if (super.verifiesDependency(d)) {
-            return true;
-        }
-        switch (d.masterCondition.type) {
-            case DependencyConditionType.HasValue: {
-                    const mc: ValueDependencyCondition = <ValueDependencyCondition>d.masterCondition;
-                    return this.getValue() === mc.value;
-                }
-
-            case DependencyConditionType.IsVariable:
-                return this.radioState === ParamRadioConfig.VAR;
-
-            default:
-                throw new Error("NgParameter.verifiesDependency() : type de condition '"
-                    + DependencyConditionType[d.masterCondition.type] + "' non pris en charge");
-        }
-    }
-
     // interface Observer
 
     public update(sender: any, data: any) {
diff --git a/src/app/formulaire/pab-table.ts b/src/app/formulaire/pab-table.ts
index 9464eeef8ba8baaacf454afd9e3eb201b5c3e103..a31529bc573e56b4712c33cf3e4338216fbff768 100644
--- a/src/app/formulaire/pab-table.ts
+++ b/src/app/formulaire/pab-table.ts
@@ -16,8 +16,6 @@ export class PabTable extends FormulaireElement {
         super(parent);
     }
 
-    public parseDependencies(json: {}) { } // implements abstract method of FormulaireNode
-
     public parseConfig(json: {}) {
         this._confId = json["id"];
     }
diff --git a/src/app/formulaire/select-field.ts b/src/app/formulaire/select-field.ts
index 6f98a6419e403c7b3f1f2562fcf36f99f5e18dac..07f944d0917eae2fbc659694c394be4b1cfabe4d 100644
--- a/src/app/formulaire/select-field.ts
+++ b/src/app/formulaire/select-field.ts
@@ -1,12 +1,10 @@
-import { LechaptCalmon, acSection, CourbeRemous } from "jalhyd";
+import { LechaptCalmon, acSection, CourbeRemous, Nub, ParallelStructure, StructureType, LoiDebit } from "jalhyd";
 
 import { Field } from "./field";
 import { SelectEntry } from "./select-entry";
-import { Dependency } from "./dependency/dependency";
-import { DependencyConditionType } from "./dependency/dependency-condition";
-import { ValueDependencyCondition } from "./dependency/value-dependency-condition";
 import { StringMap } from "../stringmap";
 import { FormulaireNode } from "./formulaire-node";
+import { FormulaireDefinition } from "./definition/form-definition";
 
 export class SelectField extends Field {
 
@@ -86,22 +84,6 @@ export class SelectField extends Field {
         }
     }
 
-    public verifiesDependency(d: Dependency): boolean {
-        if (super.verifiesDependency(d)) {
-            return true;
-        }
-
-        switch (d.masterCondition.type) {
-            case DependencyConditionType.HasValue:
-                const mc: ValueDependencyCondition = <ValueDependencyCondition>d.masterCondition;
-                return this._selectedEntry.id === mc.value;
-
-            default:
-                throw new Error("SelectField.verifiesDependency() : type de condition '"
-                    + DependencyConditionType[d.masterCondition.type] + "' non pris en charge");
-        }
-    }
-
     public updateLocalisation(loc: StringMap) {
         super.updateLocalisation(loc);
         for (const e of this._entries) {
@@ -112,10 +94,11 @@ export class SelectField extends Field {
     public parseConfig(field: {}, data?: {}) {
         this._confId = field["id"];
         const source = field["source"];
+        const nub: Nub = (this.parentForm as FormulaireDefinition).currentNub;
         // ad-hoc cases
         switch (source) {
 
-            case "lechapt_calmon_materials":
+            case "lechapt_calmon_material":
                 this.addEntry(new SelectEntry("select_material_empty", ""));
                 let i = 0;
                 for (const mat of LechaptCalmon.materials) {
@@ -125,7 +108,7 @@ export class SelectField extends Field {
                 }
                 break;
 
-            case "acsection_available_sections":
+            case "acsection_section":
                 for (const sec of acSection.availableSectionTypes) {
                     const e: SelectEntry = new SelectEntry("select_section_" + sec.id, sec.value);
                     this.addEntry(e);
@@ -146,38 +129,25 @@ export class SelectField extends Field {
                     this.addEntry(e);
                 }
                 break;
-        }
-        /* for (const v of values) {
-            let val: string;
-            if (v.enum) {
-                const tmp = v.enum.split(".");
-                switch (tmp[0]) {
-                    case "ComputeNodeType":
-                        val = ComputeNodeType[tmp[1]];
-                        break;
-
-                    case "StructureType":
-                        val = StructureType[tmp[1]];
-                        break;
-
-                    case "LoiDebit":
-                        val = LoiDebit[tmp[1]];
-                        break;
-
-                    case "MethodeResolution":
-                        val = MethodeResolution[tmp[1]];
-                        break;
-
-                    default:
-                        throw new Error(`type d'enum ${tmp[0]} non pris en charge`);
+
+            case "device_structure_type":
+                for (const st in (nub as ParallelStructure).getLoisAdmissibles()) {
+                    const e: SelectEntry = new SelectEntry("select_structure_" + st, StructureType[st]);
+                    this.addEntry(e);
                 }
-            } else if (v.value) {
-                val = v.value;
-            }
+                break;
 
-            const id = v["id"];
-            const e: SelectEntry = new SelectEntry(id, val);
-            this.addEntry(e);
-        } */
+            case "device_loi_debit":
+                // get current structure type from appropriate Nub child
+                const child = nub.getChildren()[this.parent.indexAsKid()];
+                const cst = child.properties.getPropValue("structureType");
+                const la = (nub as ParallelStructure).getLoisAdmissibles();
+                const stName = StructureType[cst];
+                for (const ld of la[stName]) {
+                    const e: SelectEntry = new SelectEntry("select_loidebit_" + stName + "_" + LoiDebit[ld], ld);
+                    this.addEntry(e);
+                }
+                break;
+        }
     }
 }
diff --git a/src/app/services/formulaire/formulaire.service.ts b/src/app/services/formulaire/formulaire.service.ts
index 0b499b5d895036c7bcc44e8e9f6525f8afa95862..97016de31a93512fa5f8082189bb358580ad8321 100644
--- a/src/app/services/formulaire/formulaire.service.ts
+++ b/src/app/services/formulaire/formulaire.service.ts
@@ -394,7 +394,6 @@ export class FormulaireService extends Observable {
             return f;
 
         }).then(fi => {
-            fi.applyDependencies();
             this.notifyObservers({
                 "action": "createForm",
                 "form": fi