diff --git a/src/app/calculators/pbcloison/en.json b/src/app/calculators/pbcloison/en.json
index bcd280c3ae48286d01329c713f69232a9b5c0713..2f9e9474495b783410a871c4c760bd4f12f1d9a8 100644
--- a/src/app/calculators/pbcloison/en.json
+++ b/src/app/calculators/pbcloison/en.json
@@ -2,5 +2,34 @@
     "fs_wall_params": "Wall parameters",
 
     "select_upstream_basin": "Upstream basin",
-    "select_downstream_basin": "Downstream basin"
+    "select_downstream_basin": "Downstream basin",
+
+    "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_Orifice_OrificeFree": "Free orifice",
+
+    "select_loidebit_VanneRectangulaire_GateCem88d": "Weir/Orifice Cemagref 88",
+    "select_loidebit_VanneRectangulaire_GateCem88v": "Weir/Undershot gate Cemagref 88",
+    "select_loidebit_VanneRectangulaire_GateCunge80": "Cunge (1980)",
+    "select_loidebit_VanneRectangulaire_RectangularOrificeFree": "Free flow gate",
+    "select_loidebit_VanneRectangulaire_RectangularOrificeSubmerged": "Submerged gate",
+
+    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "V-notch sharp-crested weir (Villemonte)",
+    "select_loidebit_SeuilTriangulaire_TriangularWeirBroad": "V-notch broad-crested weir (Bos)",
+
+    "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_WeirSubmerged": "Submerged weir",
+    "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 (1980)"
 }
diff --git a/src/app/calculators/pbcloison/fr.json b/src/app/calculators/pbcloison/fr.json
index 4480513b321933fb82ec471c694ecf845462c426..e02e713f3602e08b138a20923fecca7caf3cac33 100644
--- a/src/app/calculators/pbcloison/fr.json
+++ b/src/app/calculators/pbcloison/fr.json
@@ -1,6 +1,36 @@
 {
     "fs_wall_params": "Paramètres de la cloison",
+    "fs_wall_device": "Ouvrage",
 
     "select_upstream_basin": "Bassin amont",
-    "select_downstream_basin": "Bassin aval"
+    "select_downstream_basin": "Bassin aval",
+
+    "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_Orifice_OrificeFree": "Orifice dé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 (1980)",
+    "select_loidebit_VanneRectangulaire_RectangularOrificeFree": "Vanne dénoyée",
+    "select_loidebit_VanneRectangulaire_RectangularOrificeSubmerged": "Vanne noyée",
+
+    "select_loidebit_SeuilTriangulaire_TriangularWeirFree": "Déversoir triangulaire mince (Villemonte)",
+    "select_loidebit_SeuilTriangulaire_TriangularWeirBroad": "Déversoir triangulaire épais (Bos)",
+
+    "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_WeirSubmerged": "Seuil noyé",
+    "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 (1980)"
 }
diff --git a/src/app/components/pb-schema/pb-schema.component.ts b/src/app/components/pb-schema/pb-schema.component.ts
index 0dddab78b08f8ccded24d1421f06ae76c44c6185..fa57966e7d5c8e3deb19c52263f732acf65b3c5e 100644
--- a/src/app/components/pb-schema/pb-schema.component.ts
+++ b/src/app/components/pb-schema/pb-schema.component.ts
@@ -78,6 +78,11 @@ export class PbSchemaComponent implements AfterViewInit, AfterContentInit, OnIni
         });
         this.nativeElement = this.schema.nativeElement;
         this.render();
+        // reset form to river properties (clodo timeout to prevent ExpressionChangedAfterItHasBeenCheckedError)
+        setTimeout(() => {
+            this.unselect();
+        }, 10);
+        // @TODO find a way to remember last selected item ? Through a service ?
     }
 
     private render() {
diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts
index dd679776531c4cf0cd40287f96d078e460df5b95..721715aef9d00dc4a61acf9932bb44d6ce4fcb2b 100644
--- a/src/app/formulaire/definition/form-definition.ts
+++ b/src/app/formulaire/definition/form-definition.ts
@@ -413,7 +413,8 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
     }
 
     public isDisplayed(id: string) {
-        return (<FormulaireElement>this.getFormulaireNodeById(id)).isDisplayed;
+        const fe = <FormulaireElement>this.getFormulaireNodeById(id);
+        return fe !== undefined && fe.isDisplayed;
     }
 
     /**
diff --git a/src/app/formulaire/definition/form-pb-cloison.ts b/src/app/formulaire/definition/form-pb-cloison.ts
index 90ac294ecd70010c4774e85033b3eaff38795a8c..cf9801ef6299747ca7f51bbce2ed795529d638e0 100644
--- a/src/app/formulaire/definition/form-pb-cloison.ts
+++ b/src/app/formulaire/definition/form-pb-cloison.ts
@@ -60,6 +60,10 @@ export class FormulairePbCloison extends FormulaireParallelStructure {
                 const oldDownstreamBasin = nub.bassinAval;
                 pb.deleteChild(pb.findChildPosition(nub.uid));
                 const newWall = new PbCloison(newBasin, oldDownstreamBasin);
+                // copy structures
+                for (const s of nub.structures) {
+                    newWall.addChild(s);
+                }
                 pb.addChild(newWall);
                 this.currentNub = newWall;
             } else if (sender.id === this._downstreamBasinSelectId) {
@@ -67,6 +71,10 @@ export class FormulairePbCloison extends FormulaireParallelStructure {
                 const oldUpstreamBasin = nub.bassinAmont;
                 pb.deleteChild(pb.findChildPosition(nub.uid));
                 const newWall = new PbCloison(oldUpstreamBasin, newBasin);
+                // copy structures
+                for (const s of nub.structures) {
+                    newWall.addChild(s);
+                }
                 pb.addChild(newWall);
                 this.currentNub = newWall;
             }
diff --git a/src/app/formulaire/definition/form-prebarrage.ts b/src/app/formulaire/definition/form-prebarrage.ts
index 7d69abf7ac62dfe0ce230ec6870c18b7b0f16e41..063d37ecfccda3cc4dfe8378529db6cb5643122a 100644
--- a/src/app/formulaire/definition/form-prebarrage.ts
+++ b/src/app/formulaire/definition/form-prebarrage.ts
@@ -21,9 +21,6 @@ export class FormulairePrebarrage extends FormulaireFixedVar {
     /** configuration for re-creating basin form every time needed */
     private basinFormConfig: string;
 
-    /** child form for walls (repeatable devices) */
-    private wallForm: FormulairePbCloison;
-
     /** configuration for re-creating wall form every time needed */
     private wallFormConfig: string;
 
@@ -74,7 +71,6 @@ export class FormulairePrebarrage extends FormulaireFixedVar {
                 break;
             case "subform_wall":
                 // same as above
-                console.log("===> storing wall form config", json["config"]);
                 this.wallFormConfig = json["config"];
                 break;
         }
@@ -101,18 +97,19 @@ export class FormulairePrebarrage extends FormulaireFixedVar {
             this.showFormElements(this.basinForm);
 
         } else if (node instanceof PbCloison) {
-            console.log("---------------> new wall form !!");
-            this.wallForm = new FormulairePbCloison();
-            this.wallForm.defaultProperties["calcType"] = CalculatorType.PbCloison;
-            this.wallForm.currentNub = node;
-            this.wallForm.preparseConfig(this.wallFormConfig);
-            this.wallForm.parseConfig(this.wallFormConfig);
+            const wallForm = new FormulairePbCloison();
+            wallForm.defaultProperties["calcType"] = CalculatorType.PbCloison;
+            wallForm.currentNub = node;
+            wallForm.preparseConfig(this.wallFormConfig);
+            wallForm.parseConfig(this.wallFormConfig);
+            // subscribe to upstream/downstream basin change
+            wallForm.addObserver(this); // @TODO why not this.form ? wallForm is just a dummy form to extract elements from…
+            ServiceFactory.instance.formulaireService.loadUpdateFormulaireLocalisation(wallForm);
             // add fieldsets for existing Structures
             console.log(`Node ${node.uid} : ${node.structures.length} structures, Form ${this.uid} : ${this._kids.length} form elements`);
             if (node.structures.length > 0) {
-                console.log(">> adding fieldsets for existing structures");
                 for (const struct of node.structures) {
-                    for (const e of this.allFormElements) {
+                    for (const e of wallForm.allFormElements) {
                         if (e instanceof FieldsetContainer) { // @TODO manage many containers one day ?
                             e.addFromTemplate(0, undefined, struct);
                         }
@@ -122,10 +119,7 @@ export class FormulairePrebarrage extends FormulaireFixedVar {
                 // if there was no existing structure, add a default one ! @TODO
                 console.log("TODO add default structure");
             }
-            // subscribe to upstream/downstream basin change
-            this.wallForm.addObserver(this);
-            ServiceFactory.instance.formulaireService.loadUpdateFormulaireLocalisation(this.wallForm);
-            this.showFormElements(this.wallForm);
+            this.showFormElements(wallForm);
         }
     }