diff --git a/spec/pab/cloison_aval.spec.ts b/spec/pab/cloison_aval.spec.ts
index 3e3537b5f59908c7838703220235da97cd3e80a3..156d0efbbb5958fcb406ee133a2be07f72597bd3 100644
--- a/spec/pab/cloison_aval.spec.ts
+++ b/spec/pab/cloison_aval.spec.ts
@@ -36,14 +36,16 @@ describe("class CloisonAval", () => {
             const r = ca.CalcSerie();
             expect(r.vCalc).toBeCloseTo(75.059, 3);
             expect(r.values.ZDV).toBeCloseTo(73.9, 2);
-            expect(r.log.messages[0].code).toBe(MessageCode.WARNING_VANLEV_ZDV_SUP_MAX);
+            expect(r.log.messages[0].code).toBe(MessageCode.WARNING_NOTCH_SUBMERSION_GREATER_THAN_07);
+            expect(r.log.messages[1].code).toBe(MessageCode.WARNING_VANLEV_ZDV_SUP_MAX);
         });
         it("ZDV max bound Calc(Z1) should return 75.096 and extraResults.ZDV should be 74", () => {
             s.prms.minZDV.singleValue = 74;
             const r = ca.CalcSerie();
             expect(r.vCalc).toBeCloseTo(75.096, 3);
             expect(r.values.ZDV).toBeCloseTo(74, 2);
-            expect(r.log.messages[0].code).toBe(MessageCode.WARNING_VANLEV_ZDV_INF_MIN);
+            expect(r.log.messages[0].code).toBe(MessageCode.WARNING_NOTCH_SUBMERSION_GREATER_THAN_07);
+            expect(r.log.messages[1].code).toBe(MessageCode.WARNING_VANLEV_ZDV_INF_MIN);
         });
     });
 
diff --git a/spec/structure/parallel_structure.spec.ts b/spec/structure/parallel_structure.spec.ts
index f6aed5569b77be102b5cc3d14c8a85b923684d6a..7fe8bcda547e5c6f872958b95d843b0b447a414b 100644
--- a/spec/structure/parallel_structure.spec.ts
+++ b/spec/structure/parallel_structure.spec.ts
@@ -7,6 +7,7 @@ import { ParallelStructureParams } from "../../src/structure/parallel_structure_
 import { StructureKivi } from "../../src/structure/structure_kivi";
 import { StructureKiviParams } from "../../src/structure/structure_kivi_params";
 import { LoiDebit } from "../../src/structure/structure_props";
+import { StructureRectangularOrificeFree } from "../../src/structure/structure_rectangular_orifice_free";
 import { MessageCode } from "../../src/util/message";
 import { Result } from "../../src/util/result";
 import { precDigits } from "../test_config";
@@ -175,4 +176,38 @@ describe("Class ParallelStructure: ", () => {
             expect(ps.CalcSerie().vCalc).toBeCloseTo(100, 3);
         });
     });
+    fdescribe("Strucure logs should be propagated to parent Result - ", () => {
+        it("example with StructureRectangularOrificeFree, h2 > 0, calculating Q", () => {
+            const ps = Session.getInstance().createNub(
+                new Props({ calcType: CalculatorType.ParallelStructure })
+            ) as ParallelStructure;
+            ps.prms.Q.singleValue = 2.309;
+            ps.addChild(CreateStructure(LoiDebit.RectangularOrificeFree));
+            ps.prms.Z1.singleValue = 105;
+            ps.prms.Z2.singleValue = 102;
+            ps.structures[0].prms.ZDV.singleValue = 101.5;
+            const res = ps.CalcSerie().resultElement;
+            expect(res.log.messages.length).toBe(1);
+            expect(
+                res.log.messages[0].code
+            ).toBe(MessageCode.WARNING_DOWNSTREAM_ELEVATION_POSSIBLE_SUBMERSION);
+        });
+        it("example with StructureRectangularOrificeFree, h2 > 0, calculating something other than Q", () => {
+            const ps = Session.getInstance().createNub(
+                new Props({ calcType: CalculatorType.ParallelStructure })
+            ) as ParallelStructure;
+            ps.prms.Q.singleValue = 2.309;
+            const c = CreateStructure(LoiDebit.RectangularOrificeFree) as StructureRectangularOrificeFree;
+            ps.addChild(c);
+            ps.prms.Z1.singleValue = 105;
+            ps.prms.Z2.singleValue = 102;
+            ps.structures[0].prms.ZDV.singleValue = 101.5;
+            ps.calculatedParam = c.prms.L;
+            const res = ps.CalcSerie().resultElement;
+            expect(res.log.messages.length).toBe(1);
+            expect(
+                res.log.messages[0].code
+            ).toBe(MessageCode.WARNING_DOWNSTREAM_ELEVATION_POSSIBLE_SUBMERSION);
+        });
+    });
 });
diff --git a/src/nub.ts b/src/nub.ts
index 09a0e8514c8836a3e79a785071e126b17fdc69f9..a883bcf1ebdf0878939ec2d28e2d147caaa810d2 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -1277,7 +1277,7 @@ export abstract class Nub extends ComputeNode implements IObservable {
         return computedSymbol;
     }
 
-    protected doCalc(computedSymbol?: any, rInit?: number) {
+    protected doCalc(computedSymbol?: any, rInit?: number): Result {
         return this.Calc(computedSymbol, rInit);
     }
 
diff --git a/src/structure/parallel_structure.ts b/src/structure/parallel_structure.ts
index bb23f3832858fd266bb3bc409ec2bdce3f58c178..b21a5e9e3d6ff605d85b95fcffa80a880d5c46b9 100644
--- a/src/structure/parallel_structure.ts
+++ b/src/structure/parallel_structure.ts
@@ -89,9 +89,9 @@ export class ParallelStructure extends Nub {
         for (let i = 0; i < this._children.length; i++) {
             if (i !== iExcept) {
                 const res: Result = this._children[i].Calc("Q");
-                // @TODO vérifier que ça marche sans la ligne ci-dessous
-                // calcRes.resultElement.AddResultElementToExtra(res.resultElement, `ouvrage[${i}].Q`);
                 qTot += res.vCalc;
+                // merge logs
+                calcRes.resultElement.log.addLog(res.log);
             }
         }
         // Assigne le débit total dans le résultat
@@ -130,6 +130,8 @@ export class ParallelStructure extends Nub {
                 if (r.ok) {
                     this.result.symbol = r.symbol;
                     this.result.vCalc = r.vCalc;
+                    // merge logs
+                    this.result.log.addLog(r.log);
                 } else {
                     this.currentResult = r;
                 }