diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts
index d3333d8d6416bb16ee1663322c4b5efc17ae59bb..026ffdba401250ecaecf07f3c2fd77417dd5a716 100644
--- a/src/app/formulaire/definition/form-definition.ts
+++ b/src/app/formulaire/definition/form-definition.ts
@@ -174,7 +174,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
     }
 
     /** called at the end of parseConfig() */
-    protected completeParse(json: {}) {
+    protected completeParse(firstNotif: boolean = true) {
         this.helpLinks = this._resultsHelpLinks;
     }
 
@@ -294,7 +294,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
             }
         }
 
-        this.completeParse(this._jsonConfig);
+        this.completeParse();
     }
 
     public hasParameter(symbol: string): boolean {
diff --git a/src/app/formulaire/definition/form-fixedvar.ts b/src/app/formulaire/definition/form-fixedvar.ts
index 20314b5209a40fa200917e1cc31c43f3a94f5be8..4d553ef88508364b729404766fcaffd01212ef96 100644
--- a/src/app/formulaire/definition/form-fixedvar.ts
+++ b/src/app/formulaire/definition/form-fixedvar.ts
@@ -125,6 +125,7 @@ export class FormulaireFixedVar extends FormulaireDefinition {
         for (const fs of this.allFieldsets) {
             fs.updateFields();
         }
+        this.completeParse(false); // re-add observers that were destroyed by updateFields()
     }
 
     // interface Observer
diff --git a/src/app/formulaire/definition/form-macrorugo-compound.ts b/src/app/formulaire/definition/form-macrorugo-compound.ts
index c94dad30a3aafd7dfd1b3a27ce6d35f391b31f21..2fb689c5ba617cf31b0c14c2958439681995f4a4 100644
--- a/src/app/formulaire/definition/form-macrorugo-compound.ts
+++ b/src/app/formulaire/definition/form-macrorugo-compound.ts
@@ -51,9 +51,11 @@ export class FormulaireMacrorugoCompound extends FormulaireRepeatableFieldset {
         }
     }
 
-    protected completeParse(json: {}) {
-        this.subscribeFieldsetContainer();
-        this.updateApronState(this.currentNub.properties.getPropValue("inclinedApron"));
+    protected completeParse(firstNotif: boolean = true) {
+        this.fieldsetContainer.addObserver(this);
+        if (firstNotif) {
+            this.updateApronState(this.currentNub.properties.getPropValue("inclinedApron"));
+        }
         this.helpLinks = this._resultsHelpLinks;
     }
 
@@ -65,13 +67,6 @@ export class FormulaireMacrorugoCompound extends FormulaireRepeatableFieldset {
         return n as FieldsetContainer;
     }
 
-    /**
-     * abonnement en tant qu'observateur du FieldsetContainer
-     */
-    private subscribeFieldsetContainer() {
-        this.fieldsetContainer.addObserver(this);
-    }
-
     /**
      * abonnement en tant qu'observateur des NgParameter des FieldSet contenus dans le FieldsetContainer
      */
diff --git a/src/app/formulaire/definition/form-parallel-structures.ts b/src/app/formulaire/definition/form-parallel-structures.ts
index 6e238dd769a8342766cfb1360625324bfb305075..6a097c297506ccda99dd052ebba20eca84ac1318 100644
--- a/src/app/formulaire/definition/form-parallel-structures.ts
+++ b/src/app/formulaire/definition/form-parallel-structures.ts
@@ -92,7 +92,7 @@ export class FormulaireParallelStructure extends FormulaireRepeatableFieldset {
         return newStructure;
     }
 
-    protected completeParse(json: {}) {
+    protected completeParse(firstNotif: boolean = true) {
         this.subscribeFieldsetContainer();
         this.helpLinks = this._resultsHelpLinks;
     }
diff --git a/src/app/formulaire/definition/form-solveur.ts b/src/app/formulaire/definition/form-solveur.ts
index fad442e8512f35b90792eb4e14f6ace9a85f46d0..1e2664d9f9e0d0da55c8852e764f32b0b05a4c04 100644
--- a/src/app/formulaire/definition/form-solveur.ts
+++ b/src/app/formulaire/definition/form-solveur.ts
@@ -27,8 +27,8 @@ export class FormulaireSolveur extends FormulaireFixedVar {
         this._searchedParamSelectId = this.getOption(json, "searchedParamSelectId");
     }
 
-    protected completeParse(json: {}, firstNotif: boolean = true) {
-        super.completeParse(json);
+    protected completeParse(firstNotif: boolean = true) {
+        super.completeParse();
         if (this._targetNubSelectId) {
             const sel = this.getFormulaireNodeById(this._targetNubSelectId);
             if (sel) {
@@ -93,7 +93,7 @@ export class FormulaireSolveur extends FormulaireFixedVar {
                 if (trSel) {
                     (trSel.parent as FieldSet).updateFields();
                     // trick to re-set observers
-                    this.completeParse({}, false);
+                    this.completeParse(false);
                 }
                 // refresh parameters selector
                 this.refreshParameterEntries();
diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts
index b7253882286a2c7282e287359b9835ebcbc825fd..732a659a5b1f1d2c4dbe0cfc36dd88bff9ae05c0 100644
--- a/src/app/formulaire/definition/form-verificateur.ts
+++ b/src/app/formulaire/definition/form-verificateur.ts
@@ -21,8 +21,8 @@ export class FormulaireVerificateur extends FormulaireFixedVar {
         this._speciesListSelectId = this.getOption(json, "speciesListSelectId");
     }
 
-    protected completeParse(json: {}, firstNotif: boolean = true) {
-        super.completeParse(json);
+    protected completeParse(firstNotif: boolean = true) {
+        super.completeParse();
         if (this._targetPassSelectId) {
             const sel = this.getFormulaireNodeById(this._targetPassSelectId);
             if (sel) {