diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index cfcff201e7195cdce8a7e160e887a09adde30477..3e8a34f29bde03236fd9e236b9b55c5498ad226d 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -121,6 +121,7 @@ import { LoadSessionURLComponent } from "./components/load-session-url/load-sess
 import { DialogShowMessageComponent } from "./components/dialog-show-message/dialog-show-message.component";
 import { DialogConfirmLoadSessionURLComponent } from "./components/dialog-confirm-load-session-url/dialog-confirm-load-session-url.component";
 import { StructureFieldsetContainerComponent } from "./components/structure-fieldset-container/structure-fieldset-container.component";
+import { BasinFieldsetContainerComponent } from "./components/basin-fieldset-container/basin-fieldset-container.component";
 
 const appRoutes: Routes = [
     { path: "list/search", component: CalculatorListComponent },
@@ -211,6 +212,7 @@ const appRoutes: Routes = [
         FieldSetComponent,
         FieldsetContainerComponent,
         StructureFieldsetContainerComponent,
+        BasinFieldsetContainerComponent,
         FixedResultsComponent,
         FixedVarResultsComponent,
         FlexGtXxsShowHideDirective,
diff --git a/src/app/calculators/pbbassin/en.json b/src/app/calculators/pbbassin/en.json
index 6566e3fd828cb3b988499fd1881afb6acdbe7f6b..a0c025b65802fd3c6a7c419c30116897cf99ff7e 100644
--- a/src/app/calculators/pbbassin/en.json
+++ b/src/app/calculators/pbbassin/en.json
@@ -1,5 +1,6 @@
 {
-    "fs_basin_params": "Basin parameters",
+    "basin_container": "Basins",
+    "fs_basin": "Basin parameters",
 
     "S": "Surface",
     "ZF": "Bottom elevation"
diff --git a/src/app/calculators/pbbassin/fr.json b/src/app/calculators/pbbassin/fr.json
index 71d54fd771d5d737f4d6e7267777f36fc1876358..29fe43624e0c3c1f9275e1f96ab56e55ed9c7b9f 100644
--- a/src/app/calculators/pbbassin/fr.json
+++ b/src/app/calculators/pbbassin/fr.json
@@ -1,5 +1,6 @@
 {
-    "fs_basin_params": "Paramètres du bassin",
+    "basin_container": "Bassins",
+    "fs_basin": "Paramètres du bassin",
 
     "S": "Surface",
     "ZF": "Cote de fond"
diff --git a/src/app/calculators/prebarrage/config.json b/src/app/calculators/prebarrage/config.json
index 3474300cdb19deeb219ba7d619b6be49817c019c..7dada6df94c09621a3c55d9ba3475b3e2298a9f6 100644
--- a/src/app/calculators/prebarrage/config.json
+++ b/src/app/calculators/prebarrage/config.json
@@ -27,13 +27,21 @@
         "type": "subform",
         "config": [
             {
-                "id": "fs_basin_params",
-                "type": "fieldset",
+                "id": "fs_basin",
+                "type": "fieldset_template",
+                "calcType": "PbBassin",
                 "fields": [
                     "S",
                     "ZF"
                 ]
             },
+            {
+                "id": "basin_container",
+                "type": "template_container",
+                "templates": [
+                    "fs_basin"
+                ]
+            },
             {
                 "type": "options",
                 "selectIds": [ ]
diff --git a/src/app/components/basin-fieldset-container/basin-fieldset-container.component.ts b/src/app/components/basin-fieldset-container/basin-fieldset-container.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2c6a93a7da56bcaf63f18f9e7633941b0212997f
--- /dev/null
+++ b/src/app/components/basin-fieldset-container/basin-fieldset-container.component.ts
@@ -0,0 +1,19 @@
+import { Component } from "@angular/core";
+
+import { I18nService } from "../../services/internationalisation.service";
+import { ApplicationSetupService } from "../../services/app-setup.service";
+import { FieldsetContainerComponent } from "../fieldset-container/fieldset-container.component";
+
+@Component({
+    selector: "basin-fieldset-container",
+    templateUrl: "../fieldset-container/fieldset-container.component.html",
+    styleUrls: [
+        "../fieldset-container/fieldset-container.component.scss"
+    ]
+})
+export class BasinFieldsetContainerComponent extends FieldsetContainerComponent {
+
+    constructor(i18nService: I18nService, appSetupService: ApplicationSetupService) {
+        super(i18nService, appSetupService);
+    }
+}
diff --git a/src/app/components/fieldset-container/fieldset-container.component.ts b/src/app/components/fieldset-container/fieldset-container.component.ts
index bbaa490daa60e74932c64014c58b454a0451cfea..1231b32eb239bd9ef8865050c82e0d3d885444f2 100644
--- a/src/app/components/fieldset-container/fieldset-container.component.ts
+++ b/src/app/components/fieldset-container/fieldset-container.component.ts
@@ -37,7 +37,7 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit {
      * liste des composants FieldSet enfants
      */
     @ViewChildren(FieldSetComponent)
-    private _fieldsetComponents: QueryList<FieldSetComponent>;
+    protected _fieldsetComponents: QueryList<FieldSetComponent>;
 
     /**
      * flag de validité des FieldSet enfants
@@ -86,7 +86,7 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit {
         this._container.addFromTemplate(0, after.indexAsKid());
     }
 
-    private onFieldsetListChange() {
+    protected onFieldsetListChange() {
     }
 
     public ngAfterViewInit() {
diff --git a/src/app/components/generic-calculator/calculator.component.html b/src/app/components/generic-calculator/calculator.component.html
index b713123c1459587f626b3634f1020ca6e0d1b557..a61455db06fc8271a318e1955d57b18ba30bcfee 100644
--- a/src/app/components/generic-calculator/calculator.component.html
+++ b/src/app/components/generic-calculator/calculator.component.html
@@ -95,7 +95,8 @@
                         <div *ngIf="isPB" id="pb-form-container" [hidden]="! showPBInputData"
                             fxFlex.gt-sm="1 0 400px"
                             fxFlex.lt-md="1 0 500px"
-                            fxFlex.lt-sm="1 0 300px">
+                            fxFlex.lt-sm="1 0 300px"
+                            fxLayout="column">
 
                             <ng-template ngFor let-fe [ngForOf]="formElements">
                                 <field-set *ngIf="isFieldset(fe)"
@@ -109,6 +110,13 @@
                                     (radio)=onRadioClick($event) (validChange)=onElementValid() (inputChange)=onInputChange($event)
                                     (tabPressed)="onTabPressed($event)">
                                 </structure-fieldset-container>
+
+                                <basin-fieldset-container *ngIf="isBasinFieldsetContainer(fe)"
+                                    [style.display]="getElementStyleDisplay(fe.id)" [_container]=fe
+                                    (radio)=onRadioClick($event) (validChange)=onElementValid()
+                                    (inputChange)=onInputChange($event) (tabPressed)="onTabPressed($event)"
+                                    fxFlex="1 0 auto">
+                                </basin-fieldset-container>
                             </ng-template>
                         </div>
 
diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts
index c72aa6cbc2a48419d6bcc6107ce5214bf8e72282..e60c2a0bd124519ecf300e03ead3077f5734f03e 100644
--- a/src/app/components/generic-calculator/calculator.component.ts
+++ b/src/app/components/generic-calculator/calculator.component.ts
@@ -204,6 +204,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe
         if (fe instanceof FieldsetContainer) {
             switch (fe.getTemplate(0).calcTypeFromConfig) {
                 case CalculatorType.Structure:
+                case CalculatorType.PbBassin:
                     return false;
 
                 default:
@@ -221,6 +222,14 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe
         return false;
     }
 
+    /** détermine si un FormulaireElement est du type FieldsetContainer contenant des bassins */
+    public isBasinFieldsetContainer(fe: any): boolean {
+        if( fe instanceof FieldsetContainer){
+            return fe.getTemplate(0).calcTypeFromConfig === CalculatorType.PbBassin;
+        }
+        return false;
+    }
+
     /** détermine si un FormulaireElement est du type PabTable */
     public isPabTable(fe: any): boolean {
         return fe instanceof PabTable;
diff --git a/src/app/formulaire/definition/form-prebarrage.ts b/src/app/formulaire/definition/form-prebarrage.ts
index 993a72e8b5fe00c3daf93888ba338a5fa12c73e2..d642c498fa7616a38cda362fec0796b0b31f4bf4 100644
--- a/src/app/formulaire/definition/form-prebarrage.ts
+++ b/src/app/formulaire/definition/form-prebarrage.ts
@@ -143,6 +143,24 @@ export class FormulairePrebarrage extends FormulaireFixedVar {
                 this.basinForm.preparseConfig(this.basinFormConfig);
                 this.basinForm.parseConfig(this.basinFormConfig);
                 ServiceFactory.formulaireService.updateFormulaireLocalisation(this.basinForm);
+                // add fieldsets for existing basins
+                if (node.parent.bassins.length > 0) {
+                    for (const bassin of node.parent.bassins) {
+                        for (const e of this.basinForm.allFormElements) {
+                            if (e instanceof FieldsetContainer) { // @TODO manage many containers one day ?
+                                e.addFromTemplate(0, undefined, bassin, { resetResults: false });
+                            }
+                        }
+                    }
+                } else {
+                    // if there was no existing basin, add a default one
+                    for (const e of this.basinForm.allFormElements) {
+                        if (e instanceof FieldsetContainer) {
+                            e.addFromTemplate(0, undefined, undefined, { resetResults: false });
+                            break;
+                        }
+                    }
+                }
                 this.showFormElements(this.basinForm);
 
             } else if (node instanceof PbCloison) {