diff --git a/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js b/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js
index 3eb2e8666..e7172b1bd 100644
--- a/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js
+++ b/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js
@@ -73,6 +73,11 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", {
      * @returns a promise
      */
     _createVirtualMeasure(cmDef, fields) {
+        this._createVirtualField(cmDef, fields);
+        // Activate computed field
+        return this.toggleMeasure(cmDef.id);
+    },
+    _createVirtualField(cmDef, fields, config) {
         const arrFields = fields || this.metaData.fields;
         // This is a minimal 'fake' field info
         arrFields[cmDef.id] = {
@@ -88,11 +93,9 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", {
             // Operator used for group the measure added.
             group_operator: "sum",
         };
-        this.metaData.measures[cmDef.id] = arrFields[cmDef.id];
-        // Activate computed field
-        return this.toggleMeasure(cmDef.id);
+        const metaData = (config && config.metaData) || this.metaData;
+        metaData.measures[cmDef.id] = arrFields[cmDef.id];
     },
-
     /**
      * Active the measures related to the 'fake' field
      *
@@ -124,8 +127,12 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", {
      * @private
      * @param {String} field
      */
-    _isMeasureEnabled(field) {
-        return _.contains(this.metaData.activeMeasures, field);
+    _isMeasureEnabled(field, config) {
+        const activeMeasures =
+            (config && config.metaData.activeMeasures) ||
+            this.metaData.activeMeasures ||
+            [];
+        return _.contains(activeMeasures, field);
     },
 
     /**
@@ -134,9 +141,9 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", {
      * @private
      * @param {Object} subGroupData
      */
-    _fillComputedMeasuresData(subGroupData) {
+    _fillComputedMeasuresData(subGroupData, config) {
         for (const cm of this._computed_measures) {
-            if (!this._isMeasureEnabled(cm.id)) continue;
+            if (!this._isMeasureEnabled(cm.id, config)) continue;
             if (subGroupData.__count === 0) {
                 subGroupData[cm.id] = false;
             } else {
@@ -151,10 +158,10 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", {
      *
      * @override
      */
-    _prepareData(group, groupSubdivisions) {
+    _prepareData(group, groupSubdivisions, config) {
         for (const groupSubdivision of groupSubdivisions) {
             for (const subGroup of groupSubdivision.subGroups) {
-                this._fillComputedMeasuresData(subGroup);
+                this._fillComputedMeasuresData(subGroup, config);
             }
         }
         this._super(...arguments);
@@ -243,6 +250,7 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", {
      */
     async load(searchParams) {
         var _super = this._super.bind(this);
+        var config = {metaData: this.metaData, data: this.data};
         if (!this.metaData.measures) {
             const metaData = this._buildMetaData();
             metaData.measures = computeReportMeasures(
@@ -251,8 +259,7 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", {
                 metaData.activeMeasures,
                 metaData.additionalMeasures
             );
-            const config = {metaData, data: this.data};
-            await this._loadData(config);
+            config = {metaData, data: this.data};
         }
         if ("context" in searchParams) {
             this._computed_measures =
@@ -261,10 +268,10 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", {
                 [];
         }
         for (const cmDef of this._computed_measures) {
-            if (this._isMeasureEnabled(cmDef.id)) {
+            if (this._isMeasureEnabled(cmDef.id, config)) {
                 continue;
             }
-            await this._createVirtualMeasure(cmDef);
+            await this._createVirtualField(cmDef, undefined, config);
         }
         const fieldNames = Object.keys(this.metaData.fields);
         for (const fieldName of fieldNames) {
@@ -280,10 +287,6 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", {
                         this.metaData.activeMeasures,
                         fieldName
                     );
-                    const config = {metaData: this.metaData, data: this.data};
-                    this._loadData(config).then(() => {
-                        this.notify();
-                    });
                 }
             }
         }