diff --git a/app/ecolyo.661ca74a9860cde92f98.js b/app/ecolyo.21539ddc43e88794cf62.js
similarity index 99%
rename from app/ecolyo.661ca74a9860cde92f98.js
rename to app/ecolyo.21539ddc43e88794cf62.js
index 75ee69448c9460efdb36a228b992ebf4666e5412..64b1fda954b15c760c812c38f72af1690000d25d 100644
--- a/app/ecolyo.661ca74a9860cde92f98.js
+++ b/app/ecolyo.21539ddc43e88794cf62.js
@@ -1583,50 +1583,48 @@ var SplashRoot = function SplashRoot(_ref) {
 
               case 6:
                 migrationsResult = _context.sent;
-                _context.next = 9;
-                return initializationService.initIndex();
-
-              case 9:
+                // Init index
+                // await initializationService.initIndex()
                 // Init last release notes when they exist
                 dispatch((0, _global.showReleaseNotes)(migrationsResult.show, migrationsResult.notes)); //init Terms
 
-                _context.next = 12;
+                _context.next = 10;
                 return initializationService.initConsent();
 
-              case 12:
+              case 10:
                 termsStatus = _context.sent;
                 if (subscribed) dispatch((0, _global.updateTermValidation)(termsStatus)); // Init fluidPrices
 
-                _context.next = 16;
+                _context.next = 14;
                 return initializationService.initFluidPrices();
 
-              case 16:
-                _context.next = 18;
+              case 14:
+                _context.next = 16;
                 return initializationService.initProfile();
 
-              case 18:
+              case 16:
                 profile = _context.sent;
-                _context.next = 21;
+                _context.next = 19;
                 return initializationService.initProfileType();
 
-              case 21:
+              case 19:
                 profileType = _context.sent;
-                _context.next = 24;
+                _context.next = 22;
                 return initializationService.initProfileEcogesture();
 
-              case 24:
+              case 22:
                 profileEcogesture = _context.sent;
 
                 if (!(subscribed && profile)) {
-                  _context.next = 48;
+                  _context.next = 46;
                   break;
                 }
 
                 setValidExploration(_userExploration.UserExplorationID.EXPLORATION007);
-                _context.next = 29;
+                _context.next = 27;
                 return Promise.all([initializationService.initEcogesture(profile.ecogestureHash), initializationService.initDuelEntity(profile.duelHash), initializationService.initQuizEntity(profile.quizHash), initializationService.initExplorationEntity(profile.challengeHash), initializationService.initChallengeEntity(profile.explorationHash), initializationService.initAnalysis(profile)]);
 
-              case 29:
+              case 27:
                 _yield$Promise$all = _context.sent;
                 _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 6);
                 ecogestureHash = _yield$Promise$all2[0];
@@ -1654,11 +1652,11 @@ var SplashRoot = function SplashRoot(_ref) {
 
                 dispatch((0, _global.toggleAnalysisNotification)(!profile.haveSeenLastAnalysis));
 
-              case 48:
-                _context.next = 50;
+              case 46:
+                _context.next = 48;
                 return initializationService.initFluidStatus();
 
-              case 50:
+              case 48:
                 fluidStatus = _context.sent;
 
                 if (subscribed) {
@@ -1687,14 +1685,14 @@ var SplashRoot = function SplashRoot(_ref) {
                 } // Init Challenge
 
 
-                _context.next = 54;
+                _context.next = 52;
                 return initializationService.initUserChallenges(fluidStatus);
 
-              case 54:
+              case 52:
                 userChallengeList = _context.sent;
 
                 if (!subscribed) {
-                  _context.next = 81;
+                  _context.next = 79;
                   break;
                 }
 
@@ -1709,22 +1707,22 @@ var SplashRoot = function SplashRoot(_ref) {
 
 
                 if (!(((_filteredCurrentOngoi2 = filteredCurrentOngoingChallenge[0]) === null || _filteredCurrentOngoi2 === void 0 ? void 0 : _filteredCurrentOngoi2.action.state) === _userAction.UserActionState.ONGOING)) {
-                  _context.next = 65;
+                  _context.next = 63;
                   break;
                 }
 
                 actionService = new _action.default(client);
-                _context.next = 63;
+                _context.next = 61;
                 return actionService.isActionDone(filteredCurrentOngoingChallenge[0]);
 
-              case 63:
+              case 61:
                 updatedUserChallenge = _context.sent;
 
                 if (updatedUserChallenge) {
                   dispatch((0, _challenge.updateUserChallengeList)(updatedUserChallenge));
                 }
 
-              case 65:
+              case 63:
                 // Set Notification if action state is notification
                 if (((_filteredCurrentOngoi3 = filteredCurrentOngoingChallenge[0]) === null || _filteredCurrentOngoi3 === void 0 ? void 0 : _filteredCurrentOngoi3.action.state) === _userAction.UserActionState.NOTIFICATION) {
                   dispatch((0, _global.toggleChallengeActionNotification)(true));
@@ -1735,52 +1733,52 @@ var SplashRoot = function SplashRoot(_ref) {
                 });
 
                 if (!(((_filteredCurrentDuelC = filteredCurrentDuelChallenge[0]) === null || _filteredCurrentDuelC === void 0 ? void 0 : _filteredCurrentDuelC.duel.state) === _userDuel.UserDuelState.ONGOING)) {
-                  _context.next = 81;
+                  _context.next = 79;
                   break;
                 }
 
-                _context.next = 70;
+                _context.next = 68;
                 return initializationService.initDuelProgress(filteredCurrentDuelChallenge[0]);
 
-              case 70:
+              case 68:
                 _yield$initialization = _context.sent;
                 _updatedUserChallenge = _yield$initialization.updatedUserChallenge;
                 dataloads = _yield$initialization.dataloads;
 
                 if (!subscribed) {
-                  _context.next = 81;
+                  _context.next = 79;
                   break;
                 }
 
                 dispatch((0, _challenge.setChallengeConsumption)(_updatedUserChallenge, dataloads)); // Check is duel is done and display notification
 
                 challengeService = new _challenge2.default(client);
-                _context.next = 78;
+                _context.next = 76;
                 return challengeService.isChallengeDone(_updatedUserChallenge, dataloads);
 
-              case 78:
+              case 76:
                 _yield$challengeServi = _context.sent;
                 isDone = _yield$challengeServi.isDone;
                 dispatch((0, _global.toggleChallengeDuelNotification)(isDone));
 
-              case 81:
+              case 79:
                 if (!profile) {
-                  _context.next = 84;
+                  _context.next = 82;
                   break;
                 }
 
-                _context.next = 84;
+                _context.next = 82;
                 return _usageEvent.default.addEvent(client, {
                   type: _usageEvent2.UsageEventType.CONNECTION_EVENT,
                   result: profile.isFirstConnection ? 'firstConnection' : undefined,
                   context: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ? 'mobile' : 'desktop'
                 });
 
-              case 84:
-                _context.next = 86;
+              case 82:
+                _context.next = 84;
                 return partnersInfoService.getPartnersInfo();
 
-              case 86:
+              case 84:
                 partnersInfo = _context.sent;
                 // Get last partnersIssueDate
                 today = _luxon.DateTime.local().setZone('utc', {
@@ -1788,15 +1786,15 @@ var SplashRoot = function SplashRoot(_ref) {
                 }).startOf('day').toISO(); // If notification is activated and konnector is connected, set FluidStatus to PARTNER_ISSUE
 
                 if (!(partnersInfo && partnersInfo.notification_activated)) {
-                  _context.next = 98;
+                  _context.next = 96;
                   break;
                 }
 
                 fluidService = new _fluid3.default(client);
-                _context.next = 92;
+                _context.next = 90;
                 return fluidService.getFluidStatus(partnersInfo);
 
-              case 92:
+              case 90:
                 _updatedFluidStatus = _context.sent;
                 isConcernedByPartnerIssue = false;
                 _iterator2 = _createForOfIteratorHelper(_updatedFluidStatus);
@@ -1823,7 +1821,7 @@ var SplashRoot = function SplashRoot(_ref) {
                   dispatch((0, _global.setPartnersIssue)(true));
                 }
 
-              case 98:
+              case 96:
                 if (subscribed) {
                   _logger.default.info('Initialization finished successfully !');
 
@@ -1834,11 +1832,11 @@ var SplashRoot = function SplashRoot(_ref) {
                   });
                 }
 
-                _context.next = 105;
+                _context.next = 103;
                 break;
 
-              case 101:
-                _context.prev = 101;
+              case 99:
+                _context.prev = 99;
                 _context.t0 = _context["catch"](3);
 
                 if (_context.t0.message === 'Failed to fetch' && !initStepErrors) {
@@ -1847,12 +1845,12 @@ var SplashRoot = function SplashRoot(_ref) {
 
                 _logger.default.error("[Initialization] Error : ".concat(_context.t0));
 
-              case 105:
+              case 103:
               case "end":
                 return _context.stop();
             }
           }
-        }, _callee, null, [[3, 101]]);
+        }, _callee, null, [[3, 99]]);
       }));
       return _loadData.apply(this, arguments);
     }
@@ -2902,7 +2900,6 @@ exports.InitStepsErrors = InitStepsErrors;
   InitStepsErrors["ECOGESTURE_ERROR"] = "ecogesture_error";
   InitStepsErrors["CHALLENGES_ERROR"] = "challenges_error";
   InitStepsErrors["ANALYSIS_ERROR"] = "analysis_error";
-  InitStepsErrors["INDEX_ERROR"] = "index_error";
   InitStepsErrors["PRICES_ERROR"] = "prices_error";
   InitStepsErrors["CONSOS_ERROR"] = "consos_error";
   InitStepsErrors["PARTNERS_ERROR"] = "partners_error";
@@ -3235,6 +3232,7 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__("lwsE"));
 
 var _createClass2 = _interopRequireDefault(__webpack_require__("W8MJ"));
 
+/* eslint-disable @typescript-eslint/no-explicit-any */
 var MailService = /*#__PURE__*/function () {
   function MailService() {
     (0, _classCallCheck2.default)(this, MailService);
@@ -31360,7 +31358,7 @@ exports.push([module.i, "/* Cozy UI utilities classes */\n/* Cozy UI React compo
 /***/ "pZg0":
 /***/ (function(module, exports) {
 
-module.exports = {"name":"Ecolyo","slug":"ecolyo","icon":"icon.svg","categories":["energy"],"version":"1.10.2","licence":"AGPL-3.0","editor":"Métropole de Lyon","default_locale":"fr","locales":{"fr":{"short_description":"Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre les consommations d’énergie et d’eau de votre foyer.","long_description":"Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre les consommations d’énergie et d’eau de votre foyer afin de vous accompagner dans la gestion quotidienne de ces consommations et ce, de façon ludique en vous lançant des défis personnalisés.","permissions":{"ecolyo":{"description":"Requises pour le fonctionnement des différentes parties de l’application (Analyse, liste d’écogestes personnalisée, …)."},"enedis":{"description":"Requises pour l’affichage et l’analyse de vos consommations électriques dans Ecolyo. Issues du connecteur Enedis."},"grdf":{"description":"Requises pour l’affichage et l’analyse de vos consommations de gaz dans Ecolyo. Issues du connecteur GRDF."},"egl":{"description":"Requises pour l’affichage et l’analyse de vos consommations d’eau dans Ecolyo. Issues du connecteur Eau du Grand Lyon."},"konnectors":{"description":"Requis pour vérifier la présence des connecteurs Enedis, GRDF et Eau du Grand Lyon ainsi que pour pouvoir les configurer à partir de l’application Ecolyo."},"accounts":{"description":"Requis pour stocker des informations propres aux comptes énergie et eau (Enedis, GRDF, Eau du Grand Lyon). Sont stockés votre numéro de PDL pour Enedis, votre numéro de PCE pour GRDF, vos logins et mots de passe pour Eau du Grand Lyon."},"triggers":{"description":"Requis pour le bon fonctionnement des connecteurs énergie et eau."},"jobs":{"description":"Requis pour le bon fonctionnement des connecteurs énergie et eau."},"terms":{"description":"Nécessaire pour la gestion des consentements de l'application"},"apps":{"description":"Requis par Cozy pour afficher les icônes des applications installées dans la barre Cozy."},"settings":{"description":"Requis pour afficher les paramètres Cozy dans la barre Cozy."},"ecolyo-dju":{"description":"Requis pour la récupération des DJU (Degrés Jours Unifiés), informations météorologiques permettant d’ajuster le modèle de comparaison des consommations énergétiques."},"dacc-dev":{"description":"Requis pour la récupération et l’envoi de statistiques d’utilisation anonymisées dans un environnement de test."},"dacc":{"description":"Requis pour envoyer des statistiques d'utilisation anonymisées."},"backoffice-rec":{"description":"Requis pour la récupération des données de la newsletter dans un environment de test."},"backoffice":{"description":"Requis pour la récupération des données de la newsletter."},"backoffice-partners-info-rec":{"description":"Requis pour la récupération du status des services partenaires dans un environment de test."},"backoffice-partners-info":{"description":"Requis pour la récupération du status des services partenaires"},"backoffice-prices-rec":{"description":"Requis pour la récupération du prix des fluides dans un environnement de test."},"backoffice-prices":{"description":"Requis pour la récupération du prix des fluides."}}},"en":{"short_description":"Ecolyo a free service developed by Métropole de Lyon to help you to monitor and understand the energy and water consumption of your home.","long_description":"Ecolyo a free service developed by the Métropole de Lyon to help you to monitor and understand the energy and water consumption of your home. To help you in reducing your daily consumption it gives you best energy consumption practices, consumption analysis and challenges to take up. At least one Smartmeter is needed among Linky (for electricity), Gazpar (for gas) or Téléo (for water).","permissions":{"ecolyo":{"description":"Required for the operation of the different parts of the application (Analysis, customized eco-gesture lists, etc...)."},"enedis":{"description":"Required for the display and analysis of your electricity consumption in Ecolyo. Retrieved by the Enedis connector."},"grdf":{"description":"Required for the display and analysis of your gas consumption in Ecolyo. Retrieved by the GRDF connector."},"egl":{"description":"Required for the display and analysis of your water consumption in Ecolyo. Retrieved by the Eau du Grand Lyon connector."},"konnectors":{"description":"Required to verify the presence of the Enedis, GRDF and Eau du Grand Lyon connectors as well as to be able to configure them from the Ecolyo application."},"accounts":{"description":"Required to store information specific to energy and water accounts (Enedis, GRDF, Eau du Grand Lyon). Your PDL number for Enedis, your PCE number for GRDF, your logins and passwords for Eau du Grand Lyon are stored."},"triggers":{"description":"Required for the correct functioning of the energy and water connectors."},"jobs":{"description":"Required for the correct functioning of the energy and water connectors."},"terms":{"description":"Required for the correct managment of CGU."},"apps":{"description":"Required to display the icons of installed applications in the Cozy bar."},"settings":{"description":"Required for the application's consents managment"},"ecolyo-dju":{"description":"Required to gather udd data (Unified Degree Days), a meteorological data allowing the app to adjust our energical consumption model. "},"dacc-dev":{"description":"Required for gathering and sending anonymous usage statistics for test environment."},"dacc":{"description":"Required for sending cozy anonymized stats."},"backoffice-rec":{"description":"Required for retrieving newsletter informations from backoffice rec."},"backoffice":{"description":"Required for retrieving newsletter informations from backoffice prod."},"backoffice-partners-info-rec":{"description":"Required for getting the status of partners' services in test environment."},"backoffice-partners-info":{"description":"Required for getting the status of partners' services"},"backoffice-prices-rec":{"description":"Required for getting fluid prices form backoffice rec."},"backoffice-prices":{"description":"Required for getting fluid prices form backoffice prod"}}}},"langs":["fr"],"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"routes":{"/":{"folder":"/","index":"index.html","public":false}},"services":{"enedisHalfHourMonthlyAnalysis":{"type":"node","file":"services/enedisHalfHourMonthlyAnalysis/ecolyo.js","trigger":"@cron 0 0 8 3 * *"},"monthlyReportNotification":{"type":"node","file":"services/monthlyReportNotification/ecolyo.js","trigger":"@cron 0 0 10 3 * *"},"consumptionAlert":{"type":"node","file":"services/consumptionAlert/ecolyo.js","trigger":"@cron 0 3 * * *"},"aggregatorUsageEvents":{"type":"node","file":"services/aggregatorUsageEvents/ecolyo.js","trigger":"@cron 0 1 * * *"},"fluidsPrices":{"type":"node","file":"services/fluidsPrices/ecolyo.js","trigger":"@cron 0 2 * * *"}},"permissions":{"ecolyo":{"type":"com.grandlyon.ecolyo.*"},"enedis":{"type":"com.grandlyon.enedis.*"},"grdf":{"type":"com.grandlyon.grdf.*"},"egl":{"type":"com.grandlyon.egl.*"},"konnectors":{"type":"io.cozy.konnectors"},"accounts":{"type":"io.cozy.accounts"},"triggers":{"type":"io.cozy.triggers"},"jobs":{"type":"io.cozy.jobs"},"terms":{"type":"io.cozy.terms"},"apps":{"type":"io.cozy.apps","verbs":["GET"]},"settings":{"type":"io.cozy.settings","verbs":["GET"]},"ecolyo-dju":{"type":"org.ecolyo.dju","verbs":["GET"]},"dacc":{"type":"cc.cozycloud.dacc_v2","verbs":["ALL"]},"dacc-dev":{"type":"cc.cozycloud.dacc.dev_v2","verbs":["ALL"]},"backoffice-rec":{"type":"org.ecolyo.backoffice.rec","verbs":["ALL"]},"backoffice-prod":{"type":"org.ecolyo.backoffice","verbs":["ALL"]},"backoffice-partners-info-rec":{"type":"org.ecolyo.backoffice.partners.info.rec","verbs":["ALL"]},"backoffice-partners-info":{"type":"org.ecolyo.backoffice.partners.info","verbs":["ALL"]},"backoffice-prices-rec":{"type":"org.ecolyo.backoffice.prices.rec","verbs":["ALL"]},"backoffice-prices":{"type":"org.ecolyo.backoffice.prices","verbs":["ALL"]}}}
+module.exports = {"name":"Ecolyo","slug":"ecolyo","icon":"icon.svg","categories":["energy"],"version":"1.11.0","licence":"AGPL-3.0","editor":"Métropole de Lyon","default_locale":"fr","locales":{"fr":{"short_description":"Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre les consommations d’énergie et d’eau de votre foyer.","long_description":"Ecolyo est le service proposé par la Métropole de Lyon pour suivre et comprendre les consommations d’énergie et d’eau de votre foyer afin de vous accompagner dans la gestion quotidienne de ces consommations et ce, de façon ludique en vous lançant des défis personnalisés.","permissions":{"ecolyo":{"description":"Requises pour le fonctionnement des différentes parties de l’application (Analyse, liste d’écogestes personnalisée, …)."},"enedis":{"description":"Requises pour l’affichage et l’analyse de vos consommations électriques dans Ecolyo. Issues du connecteur Enedis."},"grdf":{"description":"Requises pour l’affichage et l’analyse de vos consommations de gaz dans Ecolyo. Issues du connecteur GRDF."},"egl":{"description":"Requises pour l’affichage et l’analyse de vos consommations d’eau dans Ecolyo. Issues du connecteur Eau du Grand Lyon."},"konnectors":{"description":"Requis pour vérifier la présence des connecteurs Enedis, GRDF et Eau du Grand Lyon ainsi que pour pouvoir les configurer à partir de l’application Ecolyo."},"accounts":{"description":"Requis pour stocker des informations propres aux comptes énergie et eau (Enedis, GRDF, Eau du Grand Lyon). Sont stockés votre numéro de PDL pour Enedis, votre numéro de PCE pour GRDF, vos logins et mots de passe pour Eau du Grand Lyon."},"triggers":{"description":"Requis pour le bon fonctionnement des connecteurs énergie et eau."},"jobs":{"description":"Requis pour le bon fonctionnement des connecteurs énergie et eau."},"terms":{"description":"Nécessaire pour la gestion des consentements de l'application"},"apps":{"description":"Requis par Cozy pour afficher les icônes des applications installées dans la barre Cozy."},"settings":{"description":"Requis pour afficher les paramètres Cozy dans la barre Cozy."},"ecolyo-dju":{"description":"Requis pour la récupération des DJU (Degrés Jours Unifiés), informations météorologiques permettant d’ajuster le modèle de comparaison des consommations énergétiques."},"dacc-dev":{"description":"Requis pour la récupération et l’envoi de statistiques d’utilisation anonymisées dans un environnement de test."},"dacc":{"description":"Requis pour envoyer des statistiques d'utilisation anonymisées."},"backoffice-rec":{"description":"Requis pour la récupération des données de la newsletter dans un environment de test."},"backoffice":{"description":"Requis pour la récupération des données de la newsletter."},"backoffice-partners-info-rec":{"description":"Requis pour la récupération du status des services partenaires dans un environment de test."},"backoffice-partners-info":{"description":"Requis pour la récupération du status des services partenaires"},"backoffice-prices-rec":{"description":"Requis pour la récupération du prix des fluides dans un environnement de test."},"backoffice-prices":{"description":"Requis pour la récupération du prix des fluides."}}},"en":{"short_description":"Ecolyo a free service developed by Métropole de Lyon to help you to monitor and understand the energy and water consumption of your home.","long_description":"Ecolyo a free service developed by the Métropole de Lyon to help you to monitor and understand the energy and water consumption of your home. To help you in reducing your daily consumption it gives you best energy consumption practices, consumption analysis and challenges to take up. At least one Smartmeter is needed among Linky (for electricity), Gazpar (for gas) or Téléo (for water).","permissions":{"ecolyo":{"description":"Required for the operation of the different parts of the application (Analysis, customized eco-gesture lists, etc...)."},"enedis":{"description":"Required for the display and analysis of your electricity consumption in Ecolyo. Retrieved by the Enedis connector."},"grdf":{"description":"Required for the display and analysis of your gas consumption in Ecolyo. Retrieved by the GRDF connector."},"egl":{"description":"Required for the display and analysis of your water consumption in Ecolyo. Retrieved by the Eau du Grand Lyon connector."},"konnectors":{"description":"Required to verify the presence of the Enedis, GRDF and Eau du Grand Lyon connectors as well as to be able to configure them from the Ecolyo application."},"accounts":{"description":"Required to store information specific to energy and water accounts (Enedis, GRDF, Eau du Grand Lyon). Your PDL number for Enedis, your PCE number for GRDF, your logins and passwords for Eau du Grand Lyon are stored."},"triggers":{"description":"Required for the correct functioning of the energy and water connectors."},"jobs":{"description":"Required for the correct functioning of the energy and water connectors."},"terms":{"description":"Required for the correct managment of CGU."},"apps":{"description":"Required to display the icons of installed applications in the Cozy bar."},"settings":{"description":"Required for the application's consents managment"},"ecolyo-dju":{"description":"Required to gather udd data (Unified Degree Days), a meteorological data allowing the app to adjust our energical consumption model. "},"dacc-dev":{"description":"Required for gathering and sending anonymous usage statistics for test environment."},"dacc":{"description":"Required for sending cozy anonymized stats."},"backoffice-rec":{"description":"Required for retrieving newsletter informations from backoffice rec."},"backoffice":{"description":"Required for retrieving newsletter informations from backoffice prod."},"backoffice-partners-info-rec":{"description":"Required for getting the status of partners' services in test environment."},"backoffice-partners-info":{"description":"Required for getting the status of partners' services"},"backoffice-prices-rec":{"description":"Required for getting fluid prices form backoffice rec."},"backoffice-prices":{"description":"Required for getting fluid prices form backoffice prod"}}}},"langs":["fr"],"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"routes":{"/":{"folder":"/","index":"index.html","public":false}},"services":{"enedisHalfHourMonthlyAnalysis":{"type":"node","file":"services/enedisHalfHourMonthlyAnalysis/ecolyo.js","trigger":"@cron 0 0 8 3 * *"},"monthlyReportNotification":{"type":"node","file":"services/monthlyReportNotification/ecolyo.js","trigger":"@cron 0 0 10 3 * *"},"consumptionAlert":{"type":"node","file":"services/consumptionAlert/ecolyo.js","trigger":"@cron 0 3 * * *"},"aggregatorUsageEvents":{"type":"node","file":"services/aggregatorUsageEvents/ecolyo.js","trigger":"@cron 0 1 * * *"},"fluidsPrices":{"type":"node","file":"services/fluidsPrices/ecolyo.js","trigger":"@cron 0 2 * * *"}},"permissions":{"ecolyo":{"type":"com.grandlyon.ecolyo.*"},"enedis":{"type":"com.grandlyon.enedis.*"},"grdf":{"type":"com.grandlyon.grdf.*"},"egl":{"type":"com.grandlyon.egl.*"},"konnectors":{"type":"io.cozy.konnectors"},"accounts":{"type":"io.cozy.accounts"},"triggers":{"type":"io.cozy.triggers"},"jobs":{"type":"io.cozy.jobs"},"terms":{"type":"io.cozy.terms"},"apps":{"type":"io.cozy.apps","verbs":["GET"]},"settings":{"type":"io.cozy.settings","verbs":["GET"]},"ecolyo-dju":{"type":"org.ecolyo.dju","verbs":["GET"]},"dacc":{"type":"cc.cozycloud.dacc_v2","verbs":["ALL"]},"dacc-dev":{"type":"cc.cozycloud.dacc.dev_v2","verbs":["ALL"]},"backoffice-rec":{"type":"org.ecolyo.backoffice.rec","verbs":["ALL"]},"backoffice-prod":{"type":"org.ecolyo.backoffice","verbs":["ALL"]},"backoffice-partners-info-rec":{"type":"org.ecolyo.backoffice.partners.info.rec","verbs":["ALL"]},"backoffice-partners-info":{"type":"org.ecolyo.backoffice.partners.info","verbs":["ALL"]},"backoffice-prices-rec":{"type":"org.ecolyo.backoffice.prices.rec","verbs":["ALL"]},"backoffice-prices":{"type":"org.ecolyo.backoffice.prices","verbs":["ALL"]}}}
 
 /***/ }),
 
@@ -33738,6 +33736,8 @@ var _createClass2 = _interopRequireDefault(__webpack_require__("W8MJ"));
 
 var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA"));
 
+var _cozyClient = __webpack_require__("SH7X");
+
 var _migration = __webpack_require__("mfVY");
 
 var _migration2 = __webpack_require__("6QIQ");
@@ -33746,6 +33746,8 @@ var _logger = _interopRequireDefault(__webpack_require__("gjtA"));
 
 var _initialisationSteps = __webpack_require__("3HG6");
 
+var _comGrandlyonEcolyoSchemas = __webpack_require__("xbSX");
+
 function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
 function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -33760,16 +33762,53 @@ var MigrationService = /*#__PURE__*/function () {
     this._client = _client;
     this._setinitStepError = _setinitStepError;
   }
+  /**
+   * Return schema version
+   * @param _client cozyClient
+   * @returns Promise<number> Version number of schema
+   */
+
 
   (0, _createClass2.default)(MigrationService, [{
-    key: "runMigrations",
+    key: "currentSchemaVersion",
     value: function () {
-      var _runMigrations = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(migrations) {
-        var releaseStatus, releaseNotes, _iterator, _step, migration, migrationResult, result;
-
+      var _currentSchemaVersion = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_client) {
+        var query, data;
         return _regenerator.default.wrap(function _callee$(_context) {
           while (1) {
             switch (_context.prev = _context.next) {
+              case 0:
+                query = (0, _cozyClient.Q)(_comGrandlyonEcolyoSchemas.SCHEMAS_DOCTYPE);
+                _context.next = 3;
+                return _client.query(query.limitBy(1));
+
+              case 3:
+                data = _context.sent;
+                return _context.abrupt("return", data.data[0].version);
+
+              case 5:
+              case "end":
+                return _context.stop();
+            }
+          }
+        }, _callee);
+      }));
+
+      function currentSchemaVersion(_x) {
+        return _currentSchemaVersion.apply(this, arguments);
+      }
+
+      return currentSchemaVersion;
+    }()
+  }, {
+    key: "runMigrations",
+    value: function () {
+      var _runMigrations = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(migrations) {
+        var releaseStatus, releaseNotes, currentVersion, targetVersion, _iterator, _step, migration, migrationResult, result;
+
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
               case 0:
                 _logger.default.info('[Migration] Running migrations...');
 
@@ -33781,39 +33820,53 @@ var MigrationService = /*#__PURE__*/function () {
                     description: ''
                   }]
                 };
+                _context2.next = 5;
+                return this.currentSchemaVersion(this._client);
+
+              case 5:
+                currentVersion = _context2.sent;
+                targetVersion = migrations[migrations.length - 1].targetSchemaVersion;
+                console.log('CURRENT VERSION', currentVersion);
+                console.log('CURRENT targetVersion', targetVersion);
+
+                if (!(currentVersion != targetVersion)) {
+                  _context2.next = 46;
+                  break;
+                }
+
                 _iterator = _createForOfIteratorHelper(migrations);
-                _context.prev = 4;
+                _context2.prev = 11;
 
                 _iterator.s();
 
-              case 6:
+              case 13:
                 if ((_step = _iterator.n()).done) {
-                  _context.next = 26;
+                  _context2.next = 33;
                   break;
                 }
 
                 migration = _step.value;
-                _context.next = 10;
+                _context2.next = 17;
                 return (0, _migration.migrate)(migration, this._client);
 
-              case 10:
-                migrationResult = _context.sent;
+              case 17:
+                migrationResult = _context2.sent;
 
                 _logger.default.info((0, _migration.migrationLog)(migration, migrationResult));
 
                 if (!(migrationResult.type === _migration2.MIGRATION_RESULT_FAILED)) {
-                  _context.next = 23;
+                  _context2.next = 30;
                   break;
                 }
 
-                _context.next = 15;
+                _context2.next = 22;
                 return (0, _migration.migrate)(migration, this._client);
 
-              case 15:
-                result = _context.sent;
+              case 22:
+                result = _context2.sent;
 
                 if (!(result.type === _migration2.MIGRATION_RESULT_FAILED)) {
-                  _context.next = 22;
+                  _context2.next = 29;
                   break;
                 }
 
@@ -33824,52 +33877,57 @@ var MigrationService = /*#__PURE__*/function () {
 
                 throw new Error();
 
-              case 22:
+              case 29:
                 _logger.default.info((0, _migration.migrationLog)(migration, result));
 
-              case 23:
+              case 30:
                 if (migration.releaseNotes !== null && migrationResult.type === _migration2.MIGRATION_RESULT_COMPLETE) {
                   releaseNotes.notes.push(migration.releaseNotes);
                   releaseStatus = true;
                 }
 
-              case 24:
-                _context.next = 6;
+              case 31:
+                _context2.next = 13;
                 break;
 
-              case 26:
-                _context.next = 31;
+              case 33:
+                _context2.next = 38;
                 break;
 
-              case 28:
-                _context.prev = 28;
-                _context.t0 = _context["catch"](4);
+              case 35:
+                _context2.prev = 35;
+                _context2.t0 = _context2["catch"](11);
 
-                _iterator.e(_context.t0);
+                _iterator.e(_context2.t0);
 
-              case 31:
-                _context.prev = 31;
+              case 38:
+                _context2.prev = 38;
 
                 _iterator.f();
 
-                return _context.finish(31);
+                return _context2.finish(38);
 
-              case 34:
+              case 41:
                 releaseNotes.show = releaseStatus;
 
                 _logger.default.info('[Migration] Done');
 
-                return _context.abrupt("return", releaseNotes);
+                return _context2.abrupt("return", releaseNotes);
 
-              case 37:
+              case 46:
+                _logger.default.info('[Migration] Skipped Migration Process, already up-to-date');
+
+                return _context2.abrupt("return", releaseNotes);
+
+              case 48:
               case "end":
-                return _context.stop();
+                return _context2.stop();
             }
           }
-        }, _callee, this, [[4, 28, 31, 34]]);
+        }, _callee2, this, [[11, 35, 38, 41]]);
       }));
 
-      function runMigrations(_x) {
+      function runMigrations(_x2) {
         return _runMigrations.apply(this, arguments);
       }
 
@@ -36822,8 +36880,6 @@ var _createClass2 = _interopRequireDefault(__webpack_require__("W8MJ"));
 
 var _defineProperty2 = _interopRequireDefault(__webpack_require__("lSNA"));
 
-var _cozyClient = __webpack_require__("SH7X");
-
 var _challengeEntity2 = _interopRequireDefault(__webpack_require__("+LQo"));
 
 var _duelEntity2 = _interopRequireDefault(__webpack_require__("NErO"));
@@ -36840,14 +36896,10 @@ var _doctypes = __webpack_require__("D2hQ");
 
 var _fluid = __webpack_require__("5Wkc");
 
-var _timeStep = __webpack_require__("cKQ8");
-
 var _luxon = __webpack_require__("ExVU");
 
 var _initialisationSteps = __webpack_require__("3HG6");
 
-var _account = _interopRequireDefault(__webpack_require__("gucQ"));
-
 var _challenge = _interopRequireDefault(__webpack_require__("kdea"));
 
 var _duel = _interopRequireDefault(__webpack_require__("Vpb/"));
@@ -36858,8 +36910,6 @@ var _exploration = _interopRequireDefault(__webpack_require__("z8s1"));
 
 var _fluid2 = _interopRequireDefault(__webpack_require__("z34f"));
 
-var _konnector = _interopRequireDefault(__webpack_require__("kFhK"));
-
 var _konnectorStatus = _interopRequireDefault(__webpack_require__("TsVr"));
 
 var _profile = _interopRequireDefault(__webpack_require__("2l2O"));
@@ -36905,174 +36955,131 @@ var InitializationService = /*#__PURE__*/function () {
   /*
    * Call a query with where clause to create the index if not exist
    */
+  // private async createIndex(
+  //   doctype: string,
+  //   timestep: TimeStep
+  // ): Promise<object> {
+  //   const getMongoSelector = () => {
+  //     switch (timestep) {
+  //       case TimeStep.YEAR:
+  //         return {
+  //           year: {
+  //             $lte: 9999,
+  //           },
+  //         }
+  //       case TimeStep.MONTH:
+  //         return {
+  //           year: {
+  //             $lte: 9999,
+  //           },
+  //           month: {
+  //             $lte: 12,
+  //           },
+  //         }
+  //       case TimeStep.DAY:
+  //       case TimeStep.HALF_AN_HOUR:
+  //         return {
+  //           year: {
+  //             $lte: 9999,
+  //           },
+  //           month: {
+  //             $lte: 12,
+  //           },
+  //           day: {
+  //             $lte: 31,
+  //           },
+  //         }
+  //       default:
+  //         return {}
+  //     }
+  //   }
+  //   const query: QueryDefinition = Q(doctype)
+  //     .where(getMongoSelector())
+  //     .limitBy(1)
+  //   return await this._client.query(query)
+  // }
 
+  /*
+   * create index for each Doctype
+   * sucess return: true
+   * failure throw error
+   */
+  // public async initIndex(): Promise<boolean> {
+  //   try {
+  //     const accountService = new AccountService(this._client)
+  //     const konnectorService = new KonnectorService(this._client)
+  //     await Promise.all([
+  //       this.createIndex(EGL_YEAR_DOCTYPE, TimeStep.YEAR),
+  //       this.createIndex(EGL_MONTH_DOCTYPE, TimeStep.MONTH),
+  //       this.createIndex(EGL_DAY_DOCTYPE, TimeStep.DAY),
+  //       this.createIndex(ENEDIS_YEAR_DOCTYPE, TimeStep.YEAR),
+  //       this.createIndex(ENEDIS_MONTH_DOCTYPE, TimeStep.MONTH),
+  //       this.createIndex(ENEDIS_DAY_DOCTYPE, TimeStep.DAY),
+  //       this.createIndex(ENEDIS_MINUTE_DOCTYPE, TimeStep.HALF_AN_HOUR),
+  //       this.createIndex(GRDF_YEAR_DOCTYPE, TimeStep.YEAR),
+  //       this.createIndex(GRDF_MONTH_DOCTYPE, TimeStep.MONTH),
+  //       this.createIndex(GRDF_DAY_DOCTYPE, TimeStep.DAY),
+  //       konnectorService.createIndexKonnector(),
+  //       accountService.createIndexAccount(),
+  //     ])
+  //     log.info('[Initialization] Indexes created')
+  //     return true
+  //   } catch (error) {
+  //     this._setinitStepError(InitStepsErrors.INDEX_ERROR)
+  //     log.error('Initialization error - initIndex: ', error)
+  //     throw error
+  //   }
+  // }
 
-  (0, _createClass2.default)(InitializationService, [{
-    key: "createIndex",
-    value: function () {
-      var _createIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(doctype, timestep) {
-        var getMongoSelector, query;
-        return _regenerator.default.wrap(function _callee$(_context) {
-          while (1) {
-            switch (_context.prev = _context.next) {
-              case 0:
-                getMongoSelector = function getMongoSelector() {
-                  switch (timestep) {
-                    case _timeStep.TimeStep.YEAR:
-                      return {
-                        year: {
-                          $lte: 9999
-                        }
-                      };
-
-                    case _timeStep.TimeStep.MONTH:
-                      return {
-                        year: {
-                          $lte: 9999
-                        },
-                        month: {
-                          $lte: 12
-                        }
-                      };
-
-                    case _timeStep.TimeStep.DAY:
-                    case _timeStep.TimeStep.HALF_AN_HOUR:
-                      return {
-                        year: {
-                          $lte: 9999
-                        },
-                        month: {
-                          $lte: 12
-                        },
-                        day: {
-                          $lte: 31
-                        }
-                      };
-
-                    default:
-                      return {};
-                  }
-                };
-
-                query = (0, _cozyClient.Q)(doctype).where(getMongoSelector()).limitBy(1);
-                _context.next = 4;
-                return this._client.query(query);
-
-              case 4:
-                return _context.abrupt("return", _context.sent);
-
-              case 5:
-              case "end":
-                return _context.stop();
-            }
-          }
-        }, _callee, this);
-      }));
-
-      function createIndex(_x, _x2) {
-        return _createIndex.apply(this, arguments);
-      }
-
-      return createIndex;
-    }()
-    /*
-     * create index for each Doctype
-     * sucess return: true
-     * failure throw error
-     */
-
-  }, {
-    key: "initIndex",
-    value: function () {
-      var _initIndex = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
-        var accountService, konnectorService;
-        return _regenerator.default.wrap(function _callee2$(_context2) {
-          while (1) {
-            switch (_context2.prev = _context2.next) {
-              case 0:
-                _context2.prev = 0;
-                accountService = new _account.default(this._client);
-                konnectorService = new _konnector.default(this._client);
-                _context2.next = 5;
-                return Promise.all([this.createIndex(_doctypes.EGL_YEAR_DOCTYPE, _timeStep.TimeStep.YEAR), this.createIndex(_doctypes.EGL_MONTH_DOCTYPE, _timeStep.TimeStep.MONTH), this.createIndex(_doctypes.EGL_DAY_DOCTYPE, _timeStep.TimeStep.DAY), this.createIndex(_doctypes.ENEDIS_YEAR_DOCTYPE, _timeStep.TimeStep.YEAR), this.createIndex(_doctypes.ENEDIS_MONTH_DOCTYPE, _timeStep.TimeStep.MONTH), this.createIndex(_doctypes.ENEDIS_DAY_DOCTYPE, _timeStep.TimeStep.DAY), this.createIndex(_doctypes.ENEDIS_MINUTE_DOCTYPE, _timeStep.TimeStep.HALF_AN_HOUR), this.createIndex(_doctypes.GRDF_YEAR_DOCTYPE, _timeStep.TimeStep.YEAR), this.createIndex(_doctypes.GRDF_MONTH_DOCTYPE, _timeStep.TimeStep.MONTH), this.createIndex(_doctypes.GRDF_DAY_DOCTYPE, _timeStep.TimeStep.DAY), konnectorService.createIndexKonnector(), accountService.createIndexAccount()]);
-
-              case 5:
-                _logger.default.info('[Initialization] Indexes created');
-
-                return _context2.abrupt("return", true);
-
-              case 9:
-                _context2.prev = 9;
-                _context2.t0 = _context2["catch"](0);
-
-                this._setinitStepError(_initialisationSteps.InitStepsErrors.INDEX_ERROR);
-
-                _logger.default.error('Initialization error - initIndex: ', _context2.t0);
-
-                throw _context2.t0;
-
-              case 14:
-              case "end":
-                return _context2.stop();
-            }
-          }
-        }, _callee2, this, [[0, 9]]);
-      }));
-
-      function initIndex() {
-        return _initIndex.apply(this, arguments);
-      }
+  /*
+   * Check if profil exist
+   * If not, the profil is created
+   * sucess return: profil
+   * failure return: null
+   */
 
-      return initIndex;
-    }()
-    /*
-     * Check if profil exist
-     * If not, the profil is created
-     * sucess return: profil
-     * failure return: null
-     */
 
-  }, {
+  (0, _createClass2.default)(InitializationService, [{
     key: "initProfile",
     value: function () {
-      var _initProfile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
+      var _initProfile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
         var profileService, loadedProfile, _yield$this$_client$c, newProfile, updatedProfile;
 
-        return _regenerator.default.wrap(function _callee3$(_context3) {
+        return _regenerator.default.wrap(function _callee$(_context) {
           while (1) {
-            switch (_context3.prev = _context3.next) {
+            switch (_context.prev = _context.next) {
               case 0:
                 profileService = new _profile.default(this._client);
-                _context3.prev = 1;
+                _context.prev = 1;
 
                 this._setinitStep(_initialisationSteps.InitSteps.PROFILE);
 
-                _context3.next = 5;
+                _context.next = 5;
                 return profileService.getProfile();
 
               case 5:
-                loadedProfile = _context3.sent;
+                loadedProfile = _context.sent;
 
                 if (loadedProfile) {
-                  _context3.next = 19;
+                  _context.next = 19;
                   break;
                 }
 
-                _context3.next = 9;
+                _context.next = 9;
                 return this._client.create(_doctypes.PROFILE_DOCTYPE, _profileData.default[0]);
 
               case 9:
-                _yield$this$_client$c = _context3.sent;
+                _yield$this$_client$c = _context.sent;
                 newProfile = _yield$this$_client$c.data;
 
                 if (!newProfile) {
-                  _context3.next = 15;
+                  _context.next = 15;
                   break;
                 }
 
                 _logger.default.info('[Initialization] Profile created');
 
-                _context3.next = 17;
+                _context.next = 17;
                 break;
 
               case 15:
@@ -37081,14 +37088,14 @@ var InitializationService = /*#__PURE__*/function () {
                 throw new Error('initProfile: Profile not created');
 
               case 17:
-                _context3.next = 20;
+                _context.next = 20;
                 break;
 
               case 19:
                 _logger.default.info('[Initialization] Profile loaded');
 
               case 20:
-                _context3.next = 22;
+                _context.next = 22;
                 return profileService.updateProfile({
                   lastConnectionDate: _luxon.DateTime.local().setZone('utc', {
                     keepLocalTime: true
@@ -37096,25 +37103,25 @@ var InitializationService = /*#__PURE__*/function () {
                 });
 
               case 22:
-                updatedProfile = _context3.sent;
-                return _context3.abrupt("return", updatedProfile);
+                updatedProfile = _context.sent;
+                return _context.abrupt("return", updatedProfile);
 
               case 26:
-                _context3.prev = 26;
-                _context3.t0 = _context3["catch"](1);
+                _context.prev = 26;
+                _context.t0 = _context["catch"](1);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.PROFILE_ERROR);
 
-                _logger.default.error('Initialization error - initProfile: ', _context3.t0);
+                _logger.default.error('Initialization error - initProfile: ', _context.t0);
 
-                throw _context3.t0;
+                throw _context.t0;
 
               case 31:
               case "end":
-                return _context3.stop();
+                return _context.stop();
             }
           }
-        }, _callee3, this, [[1, 26]]);
+        }, _callee, this, [[1, 26]]);
       }));
 
       function initProfile() {
@@ -37133,40 +37140,40 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initProfileType",
     value: function () {
-      var _initProfileType = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
+      var _initProfileType = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
         var profileTypeEntityService, loadedProfileType;
-        return _regenerator.default.wrap(function _callee4$(_context4) {
+        return _regenerator.default.wrap(function _callee2$(_context2) {
           while (1) {
-            switch (_context4.prev = _context4.next) {
+            switch (_context2.prev = _context2.next) {
               case 0:
                 profileTypeEntityService = new _profileTypeEntity.default(this._client);
-                _context4.prev = 1;
-                _context4.next = 4;
+                _context2.prev = 1;
+                _context2.next = 4;
                 return profileTypeEntityService.getProfileType();
 
               case 4:
-                loadedProfileType = _context4.sent;
+                loadedProfileType = _context2.sent;
 
                 _logger.default.info('[Initialization] ProfileType loaded');
 
-                return _context4.abrupt("return", loadedProfileType);
+                return _context2.abrupt("return", loadedProfileType);
 
               case 9:
-                _context4.prev = 9;
-                _context4.t0 = _context4["catch"](1);
+                _context2.prev = 9;
+                _context2.t0 = _context2["catch"](1);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.PROFILETYPE_ERROR);
 
-                _logger.default.error('Initialization error - initProfileType: ', _context4.t0);
+                _logger.default.error('Initialization error - initProfileType: ', _context2.t0);
 
-                throw _context4.t0;
+                throw _context2.t0;
 
               case 14:
               case "end":
-                return _context4.stop();
+                return _context2.stop();
             }
           }
-        }, _callee4, this, [[1, 9]]);
+        }, _callee2, this, [[1, 9]]);
       }));
 
       function initProfileType() {
@@ -37178,40 +37185,40 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initProfileEcogesture",
     value: function () {
-      var _initProfileEcogesture = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
+      var _initProfileEcogesture = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
         var profileEcogestureService, loadedProfileEcogesture;
-        return _regenerator.default.wrap(function _callee5$(_context5) {
+        return _regenerator.default.wrap(function _callee3$(_context3) {
           while (1) {
-            switch (_context5.prev = _context5.next) {
+            switch (_context3.prev = _context3.next) {
               case 0:
                 profileEcogestureService = new _profileEcogesture.default(this._client);
-                _context5.prev = 1;
-                _context5.next = 4;
+                _context3.prev = 1;
+                _context3.next = 4;
                 return profileEcogestureService.getProfileEcogesture();
 
               case 4:
-                loadedProfileEcogesture = _context5.sent;
+                loadedProfileEcogesture = _context3.sent;
 
                 _logger.default.info('[Initialization] ProfileEcogesture loaded');
 
-                return _context5.abrupt("return", loadedProfileEcogesture);
+                return _context3.abrupt("return", loadedProfileEcogesture);
 
               case 9:
-                _context5.prev = 9;
-                _context5.t0 = _context5["catch"](1);
+                _context3.prev = 9;
+                _context3.t0 = _context3["catch"](1);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.PROFILETYPE_ERROR);
 
-                _logger.default.error('Initialization error - initProfileEcogesture: ', _context5.t0);
+                _logger.default.error('Initialization error - initProfileEcogesture: ', _context3.t0);
 
-                throw _context5.t0;
+                throw _context3.t0;
 
               case 14:
               case "end":
-                return _context5.stop();
+                return _context3.stop();
             }
           }
-        }, _callee5, this, [[1, 9]]);
+        }, _callee3, this, [[1, 9]]);
       }));
 
       function initProfileEcogesture() {
@@ -37223,75 +37230,75 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initEcogesture",
     value: function () {
-      var _initEcogesture = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(hash) {
+      var _initEcogesture = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(hash) {
         var hashEcogestureType, ecogestureService, loadedEcogestures, _iterator, _step, ecogesture, checkCount, _iterator2, _step2, _step2$value, index, _ecogesture, updateEcogesture, _checkCount;
 
-        return _regenerator.default.wrap(function _callee6$(_context6) {
+        return _regenerator.default.wrap(function _callee4$(_context4) {
           while (1) {
-            switch (_context6.prev = _context6.next) {
+            switch (_context4.prev = _context4.next) {
               case 0:
                 this._setinitStep(_initialisationSteps.InitSteps.ECOGESTURE);
 
                 hashEcogestureType = (0, _hash.hashFile)(_ecogestureData.default);
                 ecogestureService = new _ecogesture2.default(this._client); // Populate data if none ecogesture exists
 
-                _context6.next = 5;
+                _context4.next = 5;
                 return ecogestureService.getAllEcogestures(undefined, true);
 
               case 5:
-                loadedEcogestures = _context6.sent;
+                loadedEcogestures = _context4.sent;
 
                 if (!(!loadedEcogestures || (loadedEcogestures === null || loadedEcogestures === void 0 ? void 0 : loadedEcogestures.length) === 0)) {
-                  _context6.next = 40;
+                  _context4.next = 40;
                   break;
                 }
 
-                _context6.prev = 7;
+                _context4.prev = 7;
                 _iterator = _createForOfIteratorHelper(_ecogestureData.default);
-                _context6.prev = 9;
+                _context4.prev = 9;
 
                 _iterator.s();
 
               case 11:
                 if ((_step = _iterator.n()).done) {
-                  _context6.next = 17;
+                  _context4.next = 17;
                   break;
                 }
 
                 ecogesture = _step.value;
-                _context6.next = 15;
+                _context4.next = 15;
                 return this._client.create(_doctypes.ECOGESTURE_DOCTYPE, ecogesture);
 
               case 15:
-                _context6.next = 11;
+                _context4.next = 11;
                 break;
 
               case 17:
-                _context6.next = 22;
+                _context4.next = 22;
                 break;
 
               case 19:
-                _context6.prev = 19;
-                _context6.t0 = _context6["catch"](9);
+                _context4.prev = 19;
+                _context4.t0 = _context4["catch"](9);
 
-                _iterator.e(_context6.t0);
+                _iterator.e(_context4.t0);
 
               case 22:
-                _context6.prev = 22;
+                _context4.prev = 22;
 
                 _iterator.f();
 
-                return _context6.finish(22);
+                return _context4.finish(22);
 
               case 25:
-                _context6.next = 27;
+                _context4.next = 27;
                 return ecogestureService.getAllEcogestures();
 
               case 27:
-                checkCount = _context6.sent;
+                checkCount = _context4.sent;
 
                 if (!(!checkCount || (checkCount === null || checkCount === void 0 ? void 0 : checkCount.length) !== _ecogestureData.default.length)) {
-                  _context6.next = 31;
+                  _context4.next = 31;
                   break;
                 }
 
@@ -37302,38 +37309,38 @@ var InitializationService = /*#__PURE__*/function () {
               case 31:
                 _logger.default.info('[Initialization] Ecogesture list created');
 
-                return _context6.abrupt("return", hashEcogestureType);
+                return _context4.abrupt("return", hashEcogestureType);
 
               case 35:
-                _context6.prev = 35;
-                _context6.t1 = _context6["catch"](7);
+                _context4.prev = 35;
+                _context4.t1 = _context4["catch"](7);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.ECOGESTURE_ERROR);
 
-                _logger.default.error('Initialization error - initEcogesture: ', _context6.t1);
+                _logger.default.error('Initialization error - initEcogesture: ', _context4.t1);
 
-                throw _context6.t1;
+                throw _context4.t1;
 
               case 40:
                 if (!(hash !== hashEcogestureType)) {
-                  _context6.next = 79;
+                  _context4.next = 79;
                   break;
                 }
 
-                _context6.prev = 41;
-                _context6.next = 44;
+                _context4.prev = 41;
+                _context4.next = 44;
                 return ecogestureService.deleteAllEcogestures();
 
               case 44:
                 // Population with the data
                 _iterator2 = _createForOfIteratorHelper(_ecogestureData.default.entries());
-                _context6.prev = 45;
+                _context4.prev = 45;
 
                 _iterator2.s();
 
               case 47:
                 if ((_step2 = _iterator2.n()).done) {
-                  _context6.next = 54;
+                  _context4.next = 54;
                   break;
                 }
 
@@ -37343,39 +37350,39 @@ var InitializationService = /*#__PURE__*/function () {
                   doing: loadedEcogestures[index].doing ? true : false,
                   viewedInSelection: loadedEcogestures[index].viewedInSelection ? true : false
                 }) : _ecogesture;
-                _context6.next = 52;
+                _context4.next = 52;
                 return this._client.create(_doctypes.ECOGESTURE_DOCTYPE, updateEcogesture);
 
               case 52:
-                _context6.next = 47;
+                _context4.next = 47;
                 break;
 
               case 54:
-                _context6.next = 59;
+                _context4.next = 59;
                 break;
 
               case 56:
-                _context6.prev = 56;
-                _context6.t2 = _context6["catch"](45);
+                _context4.prev = 56;
+                _context4.t2 = _context4["catch"](45);
 
-                _iterator2.e(_context6.t2);
+                _iterator2.e(_context4.t2);
 
               case 59:
-                _context6.prev = 59;
+                _context4.prev = 59;
 
                 _iterator2.f();
 
-                return _context6.finish(59);
+                return _context4.finish(59);
 
               case 62:
-                _context6.next = 64;
+                _context4.next = 64;
                 return ecogestureService.getAllEcogestures();
 
               case 64:
-                _checkCount = _context6.sent;
+                _checkCount = _context4.sent;
 
                 if (!(!_checkCount || (_checkCount === null || _checkCount === void 0 ? void 0 : _checkCount.length) !== _ecogestureData.default.length)) {
-                  _context6.next = 68;
+                  _context4.next = 68;
                   break;
                 }
 
@@ -37386,37 +37393,37 @@ var InitializationService = /*#__PURE__*/function () {
               case 68:
                 _logger.default.info('[Initialization] Ecogesture updated');
 
-                return _context6.abrupt("return", hashEcogestureType);
+                return _context4.abrupt("return", hashEcogestureType);
 
               case 72:
-                _context6.prev = 72;
-                _context6.t3 = _context6["catch"](41);
+                _context4.prev = 72;
+                _context4.t3 = _context4["catch"](41);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.ECOGESTURE_ERROR);
 
-                _logger.default.error('Initialization error - initEcogesture: ', _context6.t3);
+                _logger.default.error('Initialization error - initEcogesture: ', _context4.t3);
 
-                throw _context6.t3;
+                throw _context4.t3;
 
               case 77:
-                _context6.next = 81;
+                _context4.next = 81;
                 break;
 
               case 79:
                 // Doctype already up to date
                 _logger.default.info('[Initialization]  Ecogesture already up-to-date');
 
-                return _context6.abrupt("return", hashEcogestureType);
+                return _context4.abrupt("return", hashEcogestureType);
 
               case 81:
               case "end":
-                return _context6.stop();
+                return _context4.stop();
             }
           }
-        }, _callee6, this, [[7, 35], [9, 19, 22, 25], [41, 72], [45, 56, 59, 62]]);
+        }, _callee4, this, [[7, 35], [9, 19, 22, 25], [41, 72], [45, 56, 59, 62]]);
       }));
 
-      function initEcogesture(_x3) {
+      function initEcogesture(_x) {
         return _initEcogesture.apply(this, arguments);
       }
 
@@ -37425,32 +37432,32 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initFluidPrices",
     value: function () {
-      var _initFluidPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
+      var _initFluidPrices = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
         var fpService, loadedPrices, fluidTypes, allPrices, env, remoteUrl, _i, _fluidTypes, fluid, prices, _i2, _allPrices, price;
 
-        return _regenerator.default.wrap(function _callee7$(_context7) {
+        return _regenerator.default.wrap(function _callee5$(_context5) {
           while (1) {
-            switch (_context7.prev = _context7.next) {
+            switch (_context5.prev = _context5.next) {
               case 0:
                 fpService = new _fluidsPrices.default(this._client); // Populate data if none ecogesture exists
 
-                _context7.next = 3;
+                _context5.next = 3;
                 return fpService.getAllPrices();
 
               case 3:
-                loadedPrices = _context7.sent;
+                loadedPrices = _context5.sent;
 
                 if (!(loadedPrices !== null && loadedPrices !== void 0 && loadedPrices.length)) {
-                  _context7.next = 9;
+                  _context5.next = 9;
                   break;
                 }
 
                 _logger.default.info('[Initialization] FluidPrices db already created');
 
-                return _context7.abrupt("return", true);
+                return _context5.abrupt("return", true);
 
               case 9:
-                _context7.prev = 9;
+                _context5.prev = 9;
                 fluidTypes = [_fluid.FluidType.ELECTRICITY, _fluid.FluidType.WATER, _fluid.FluidType.GAS];
                 allPrices = [];
                 env = new _environment.default();
@@ -37459,21 +37466,21 @@ var InitializationService = /*#__PURE__*/function () {
 
               case 15:
                 if (!(_i < _fluidTypes.length)) {
-                  _context7.next = 24;
+                  _context5.next = 24;
                   break;
                 }
 
                 fluid = _fluidTypes[_i];
-                _context7.next = 19;
+                _context5.next = 19;
                 return this._client.getStackClient().fetchJSON('GET', "".concat(remoteUrl, "?fluidtype=").concat(fluid));
 
               case 19:
-                prices = _context7.sent;
+                prices = _context5.sent;
                 allPrices.push.apply(allPrices, (0, _toConsumableArray2.default)(prices));
 
               case 21:
                 _i++;
-                _context7.next = 15;
+                _context5.next = 15;
                 break;
 
               case 24:
@@ -37481,40 +37488,40 @@ var InitializationService = /*#__PURE__*/function () {
 
               case 25:
                 if (!(_i2 < _allPrices.length)) {
-                  _context7.next = 32;
+                  _context5.next = 32;
                   break;
                 }
 
                 price = _allPrices[_i2];
-                _context7.next = 29;
+                _context5.next = 29;
                 return fpService.createPrice(price);
 
               case 29:
                 _i2++;
-                _context7.next = 25;
+                _context5.next = 25;
                 break;
 
               case 32:
                 _logger.default.info('[Initialization] FluidPrices db created successfully');
 
-                return _context7.abrupt("return", true);
+                return _context5.abrupt("return", true);
 
               case 36:
-                _context7.prev = 36;
-                _context7.t0 = _context7["catch"](9);
+                _context5.prev = 36;
+                _context5.t0 = _context5["catch"](9);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.PRICES_ERROR);
 
-                _logger.default.error('Initialization error - initFluidPrices: ', _context7.t0);
+                _logger.default.error('Initialization error - initFluidPrices: ', _context5.t0);
 
-                return _context7.abrupt("return", false);
+                return _context5.abrupt("return", false);
 
               case 41:
               case "end":
-                return _context7.stop();
+                return _context5.stop();
             }
           }
-        }, _callee7, this, [[9, 36]]);
+        }, _callee5, this, [[9, 36]]);
       }));
 
       function initFluidPrices() {
@@ -37526,75 +37533,75 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initChallengeEntity",
     value: function () {
-      var _initChallengeEntity = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(hash) {
+      var _initChallengeEntity = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(hash) {
         var challengeHash, challengeService, loadedChallengeEntity, _iterator3, _step3, challengeEntity, checkCount, _iterator4, _step4, _challengeEntity, _checkCount2;
 
-        return _regenerator.default.wrap(function _callee8$(_context8) {
+        return _regenerator.default.wrap(function _callee6$(_context6) {
           while (1) {
-            switch (_context8.prev = _context8.next) {
+            switch (_context6.prev = _context6.next) {
               case 0:
                 this._setinitStep(_initialisationSteps.InitSteps.CHALLENGES);
 
                 challengeHash = (0, _hash.hashFile)(_challengeEntity2.default);
                 challengeService = new _challenge.default(this._client); // Populate data if none challengeEntity exists
 
-                _context8.next = 5;
+                _context6.next = 5;
                 return challengeService.getAllChallengeEntities();
 
               case 5:
-                loadedChallengeEntity = _context8.sent;
+                loadedChallengeEntity = _context6.sent;
 
                 if (!(!loadedChallengeEntity || (loadedChallengeEntity === null || loadedChallengeEntity === void 0 ? void 0 : loadedChallengeEntity.length) === 0)) {
-                  _context8.next = 40;
+                  _context6.next = 40;
                   break;
                 }
 
-                _context8.prev = 7;
+                _context6.prev = 7;
                 _iterator3 = _createForOfIteratorHelper(_challengeEntity2.default);
-                _context8.prev = 9;
+                _context6.prev = 9;
 
                 _iterator3.s();
 
               case 11:
                 if ((_step3 = _iterator3.n()).done) {
-                  _context8.next = 17;
+                  _context6.next = 17;
                   break;
                 }
 
                 challengeEntity = _step3.value;
-                _context8.next = 15;
+                _context6.next = 15;
                 return this._client.create(_doctypes.CHALLENGE_DOCTYPE, challengeEntity);
 
               case 15:
-                _context8.next = 11;
+                _context6.next = 11;
                 break;
 
               case 17:
-                _context8.next = 22;
+                _context6.next = 22;
                 break;
 
               case 19:
-                _context8.prev = 19;
-                _context8.t0 = _context8["catch"](9);
+                _context6.prev = 19;
+                _context6.t0 = _context6["catch"](9);
 
-                _iterator3.e(_context8.t0);
+                _iterator3.e(_context6.t0);
 
               case 22:
-                _context8.prev = 22;
+                _context6.prev = 22;
 
                 _iterator3.f();
 
-                return _context8.finish(22);
+                return _context6.finish(22);
 
               case 25:
-                _context8.next = 27;
+                _context6.next = 27;
                 return challengeService.getAllChallengeEntities();
 
               case 27:
-                checkCount = _context8.sent;
+                checkCount = _context6.sent;
 
                 if (!(!checkCount || (checkCount === null || checkCount === void 0 ? void 0 : checkCount.length) !== _challengeEntity2.default.length)) {
-                  _context8.next = 31;
+                  _context6.next = 31;
                   break;
                 }
 
@@ -37605,75 +37612,75 @@ var InitializationService = /*#__PURE__*/function () {
               case 31:
                 _logger.default.info('[Initialization] Challenge entities created');
 
-                return _context8.abrupt("return", challengeHash);
+                return _context6.abrupt("return", challengeHash);
 
               case 35:
-                _context8.prev = 35;
-                _context8.t1 = _context8["catch"](7);
+                _context6.prev = 35;
+                _context6.t1 = _context6["catch"](7);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
 
-                _logger.default.error('Initialization error - initChallengeEntity: ', _context8.t1);
+                _logger.default.error('Initialization error - initChallengeEntity: ', _context6.t1);
 
-                throw _context8.t1;
+                throw _context6.t1;
 
               case 40:
                 if (!(hash !== challengeHash)) {
-                  _context8.next = 78;
+                  _context6.next = 78;
                   break;
                 }
 
-                _context8.prev = 41;
-                _context8.next = 44;
+                _context6.prev = 41;
+                _context6.next = 44;
                 return challengeService.deleteAllChallengeEntities();
 
               case 44:
                 // Population with the data
                 _iterator4 = _createForOfIteratorHelper(_challengeEntity2.default);
-                _context8.prev = 45;
+                _context6.prev = 45;
 
                 _iterator4.s();
 
               case 47:
                 if ((_step4 = _iterator4.n()).done) {
-                  _context8.next = 53;
+                  _context6.next = 53;
                   break;
                 }
 
                 _challengeEntity = _step4.value;
-                _context8.next = 51;
+                _context6.next = 51;
                 return this._client.create(_doctypes.CHALLENGE_DOCTYPE, _challengeEntity);
 
               case 51:
-                _context8.next = 47;
+                _context6.next = 47;
                 break;
 
               case 53:
-                _context8.next = 58;
+                _context6.next = 58;
                 break;
 
               case 55:
-                _context8.prev = 55;
-                _context8.t2 = _context8["catch"](45);
+                _context6.prev = 55;
+                _context6.t2 = _context6["catch"](45);
 
-                _iterator4.e(_context8.t2);
+                _iterator4.e(_context6.t2);
 
               case 58:
-                _context8.prev = 58;
+                _context6.prev = 58;
 
                 _iterator4.f();
 
-                return _context8.finish(58);
+                return _context6.finish(58);
 
               case 61:
-                _context8.next = 63;
+                _context6.next = 63;
                 return challengeService.getAllChallengeEntities();
 
               case 63:
-                _checkCount2 = _context8.sent;
+                _checkCount2 = _context6.sent;
 
                 if (!(!_checkCount2 || (_checkCount2 === null || _checkCount2 === void 0 ? void 0 : _checkCount2.length) !== _challengeEntity2.default.length)) {
-                  _context8.next = 67;
+                  _context6.next = 67;
                   break;
                 }
 
@@ -37684,37 +37691,37 @@ var InitializationService = /*#__PURE__*/function () {
               case 67:
                 _logger.default.info('[Initialization] Challenge entities updated');
 
-                return _context8.abrupt("return", challengeHash);
+                return _context6.abrupt("return", challengeHash);
 
               case 71:
-                _context8.prev = 71;
-                _context8.t3 = _context8["catch"](41);
+                _context6.prev = 71;
+                _context6.t3 = _context6["catch"](41);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
 
-                _logger.default.error('Initialization error - initChallengeEntity: ', _context8.t3);
+                _logger.default.error('Initialization error - initChallengeEntity: ', _context6.t3);
 
-                throw _context8.t3;
+                throw _context6.t3;
 
               case 76:
-                _context8.next = 80;
+                _context6.next = 80;
                 break;
 
               case 78:
                 // Doctype already up to date
                 _logger.default.info('[Initialization] Challenge Entity loaded');
 
-                return _context8.abrupt("return", challengeHash);
+                return _context6.abrupt("return", challengeHash);
 
               case 80:
               case "end":
-                return _context8.stop();
+                return _context6.stop();
             }
           }
-        }, _callee8, this, [[7, 35], [9, 19, 22, 25], [41, 71], [45, 55, 58, 61]]);
+        }, _callee6, this, [[7, 35], [9, 19, 22, 25], [41, 71], [45, 55, 58, 61]]);
       }));
 
-      function initChallengeEntity(_x4) {
+      function initChallengeEntity(_x2) {
         return _initChallengeEntity.apply(this, arguments);
       }
 
@@ -37723,73 +37730,73 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initDuelEntity",
     value: function () {
-      var _initDuelEntity = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(hash) {
+      var _initDuelEntity = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(hash) {
         var hashDuelEntity, duelService, loadedDuelTypes, _iterator5, _step5, duelEntity, checkCount, _iterator6, _step6, _duelEntity, _checkCount3;
 
-        return _regenerator.default.wrap(function _callee9$(_context9) {
+        return _regenerator.default.wrap(function _callee7$(_context7) {
           while (1) {
-            switch (_context9.prev = _context9.next) {
+            switch (_context7.prev = _context7.next) {
               case 0:
                 hashDuelEntity = (0, _hash.hashFile)(_duelEntity2.default);
                 duelService = new _duel.default(this._client); // Populate data if none DuelEntity exists
 
-                _context9.next = 4;
+                _context7.next = 4;
                 return duelService.getAllDuelEntities();
 
               case 4:
-                loadedDuelTypes = _context9.sent;
+                loadedDuelTypes = _context7.sent;
 
                 if (!(!loadedDuelTypes || (loadedDuelTypes === null || loadedDuelTypes === void 0 ? void 0 : loadedDuelTypes.length) === 0)) {
-                  _context9.next = 39;
+                  _context7.next = 39;
                   break;
                 }
 
-                _context9.prev = 6;
+                _context7.prev = 6;
                 _iterator5 = _createForOfIteratorHelper(_duelEntity2.default);
-                _context9.prev = 8;
+                _context7.prev = 8;
 
                 _iterator5.s();
 
               case 10:
                 if ((_step5 = _iterator5.n()).done) {
-                  _context9.next = 16;
+                  _context7.next = 16;
                   break;
                 }
 
                 duelEntity = _step5.value;
-                _context9.next = 14;
+                _context7.next = 14;
                 return this._client.create(_doctypes.DUEL_DOCTYPE, duelEntity);
 
               case 14:
-                _context9.next = 10;
+                _context7.next = 10;
                 break;
 
               case 16:
-                _context9.next = 21;
+                _context7.next = 21;
                 break;
 
               case 18:
-                _context9.prev = 18;
-                _context9.t0 = _context9["catch"](8);
+                _context7.prev = 18;
+                _context7.t0 = _context7["catch"](8);
 
-                _iterator5.e(_context9.t0);
+                _iterator5.e(_context7.t0);
 
               case 21:
-                _context9.prev = 21;
+                _context7.prev = 21;
 
                 _iterator5.f();
 
-                return _context9.finish(21);
+                return _context7.finish(21);
 
               case 24:
-                _context9.next = 26;
+                _context7.next = 26;
                 return duelService.getAllDuelEntities();
 
               case 26:
-                checkCount = _context9.sent;
+                checkCount = _context7.sent;
 
                 if (!(!checkCount || (checkCount === null || checkCount === void 0 ? void 0 : checkCount.length) !== _duelEntity2.default.length)) {
-                  _context9.next = 30;
+                  _context7.next = 30;
                   break;
                 }
 
@@ -37800,75 +37807,75 @@ var InitializationService = /*#__PURE__*/function () {
               case 30:
                 _logger.default.info('[Initialization] UserDuel entities created');
 
-                return _context9.abrupt("return", hashDuelEntity);
+                return _context7.abrupt("return", hashDuelEntity);
 
               case 34:
-                _context9.prev = 34;
-                _context9.t1 = _context9["catch"](6);
+                _context7.prev = 34;
+                _context7.t1 = _context7["catch"](6);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
 
-                _logger.default.error('Initialization error - initDuelEntity: ', _context9.t1);
+                _logger.default.error('Initialization error - initDuelEntity: ', _context7.t1);
 
-                throw _context9.t1;
+                throw _context7.t1;
 
               case 39:
                 if (!(hash !== hashDuelEntity)) {
-                  _context9.next = 77;
+                  _context7.next = 77;
                   break;
                 }
 
-                _context9.prev = 40;
-                _context9.next = 43;
+                _context7.prev = 40;
+                _context7.next = 43;
                 return duelService.deleteAllDuelEntities();
 
               case 43:
                 // Population with the data
                 _iterator6 = _createForOfIteratorHelper(_duelEntity2.default);
-                _context9.prev = 44;
+                _context7.prev = 44;
 
                 _iterator6.s();
 
               case 46:
                 if ((_step6 = _iterator6.n()).done) {
-                  _context9.next = 52;
+                  _context7.next = 52;
                   break;
                 }
 
                 _duelEntity = _step6.value;
-                _context9.next = 50;
+                _context7.next = 50;
                 return this._client.create(_doctypes.DUEL_DOCTYPE, _duelEntity);
 
               case 50:
-                _context9.next = 46;
+                _context7.next = 46;
                 break;
 
               case 52:
-                _context9.next = 57;
+                _context7.next = 57;
                 break;
 
               case 54:
-                _context9.prev = 54;
-                _context9.t2 = _context9["catch"](44);
+                _context7.prev = 54;
+                _context7.t2 = _context7["catch"](44);
 
-                _iterator6.e(_context9.t2);
+                _iterator6.e(_context7.t2);
 
               case 57:
-                _context9.prev = 57;
+                _context7.prev = 57;
 
                 _iterator6.f();
 
-                return _context9.finish(57);
+                return _context7.finish(57);
 
               case 60:
-                _context9.next = 62;
+                _context7.next = 62;
                 return duelService.getAllDuelEntities();
 
               case 62:
-                _checkCount3 = _context9.sent;
+                _checkCount3 = _context7.sent;
 
                 if (!(!_checkCount3 || (_checkCount3 === null || _checkCount3 === void 0 ? void 0 : _checkCount3.length) !== _duelEntity2.default.length)) {
-                  _context9.next = 66;
+                  _context7.next = 66;
                   break;
                 }
 
@@ -37879,37 +37886,37 @@ var InitializationService = /*#__PURE__*/function () {
               case 66:
                 _logger.default.info('[Initialization] UserDuel entities updated');
 
-                return _context9.abrupt("return", hashDuelEntity);
+                return _context7.abrupt("return", hashDuelEntity);
 
               case 70:
-                _context9.prev = 70;
-                _context9.t3 = _context9["catch"](40);
+                _context7.prev = 70;
+                _context7.t3 = _context7["catch"](40);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
 
-                _logger.default.error('Initialization error - initDuelEntity: ', _context9.t3);
+                _logger.default.error('Initialization error - initDuelEntity: ', _context7.t3);
 
-                throw _context9.t3;
+                throw _context7.t3;
 
               case 75:
-                _context9.next = 79;
+                _context7.next = 79;
                 break;
 
               case 77:
                 // Doctype already up to date
                 _logger.default.info('[Initialization] Duel Entity loaded');
 
-                return _context9.abrupt("return", hashDuelEntity);
+                return _context7.abrupt("return", hashDuelEntity);
 
               case 79:
               case "end":
-                return _context9.stop();
+                return _context7.stop();
             }
           }
-        }, _callee9, this, [[6, 34], [8, 18, 21, 24], [40, 70], [44, 54, 57, 60]]);
+        }, _callee7, this, [[6, 34], [8, 18, 21, 24], [40, 70], [44, 54, 57, 60]]);
       }));
 
-      function initDuelEntity(_x5) {
+      function initDuelEntity(_x3) {
         return _initDuelEntity.apply(this, arguments);
       }
 
@@ -37918,73 +37925,73 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initQuizEntity",
     value: function () {
-      var _initQuizEntity = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(hash) {
+      var _initQuizEntity = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(hash) {
         var quizHash, quizService, loadedQuizEntity, _iterator7, _step7, quizEntity, checkCount, _iterator8, _step8, _quizEntity, _checkCount4;
 
-        return _regenerator.default.wrap(function _callee10$(_context10) {
+        return _regenerator.default.wrap(function _callee8$(_context8) {
           while (1) {
-            switch (_context10.prev = _context10.next) {
+            switch (_context8.prev = _context8.next) {
               case 0:
                 quizHash = (0, _hash.hashFile)(_quizEntity2.default);
                 quizService = new _quiz.default(this._client); // Populate data if none quizEntity exists
 
-                _context10.next = 4;
+                _context8.next = 4;
                 return quizService.getAllQuizEntities();
 
               case 4:
-                loadedQuizEntity = _context10.sent;
+                loadedQuizEntity = _context8.sent;
 
                 if (!(!loadedQuizEntity || (loadedQuizEntity === null || loadedQuizEntity === void 0 ? void 0 : loadedQuizEntity.length) === 0)) {
-                  _context10.next = 39;
+                  _context8.next = 39;
                   break;
                 }
 
-                _context10.prev = 6;
+                _context8.prev = 6;
                 _iterator7 = _createForOfIteratorHelper(_quizEntity2.default);
-                _context10.prev = 8;
+                _context8.prev = 8;
 
                 _iterator7.s();
 
               case 10:
                 if ((_step7 = _iterator7.n()).done) {
-                  _context10.next = 16;
+                  _context8.next = 16;
                   break;
                 }
 
                 quizEntity = _step7.value;
-                _context10.next = 14;
+                _context8.next = 14;
                 return this._client.create(_doctypes.QUIZ_DOCTYPE, quizEntity);
 
               case 14:
-                _context10.next = 10;
+                _context8.next = 10;
                 break;
 
               case 16:
-                _context10.next = 21;
+                _context8.next = 21;
                 break;
 
               case 18:
-                _context10.prev = 18;
-                _context10.t0 = _context10["catch"](8);
+                _context8.prev = 18;
+                _context8.t0 = _context8["catch"](8);
 
-                _iterator7.e(_context10.t0);
+                _iterator7.e(_context8.t0);
 
               case 21:
-                _context10.prev = 21;
+                _context8.prev = 21;
 
                 _iterator7.f();
 
-                return _context10.finish(21);
+                return _context8.finish(21);
 
               case 24:
-                _context10.next = 26;
+                _context8.next = 26;
                 return quizService.getAllQuizEntities();
 
               case 26:
-                checkCount = _context10.sent;
+                checkCount = _context8.sent;
 
                 if (!(!checkCount || (checkCount === null || checkCount === void 0 ? void 0 : checkCount.length) !== _quizEntity2.default.length)) {
-                  _context10.next = 30;
+                  _context8.next = 30;
                   break;
                 }
 
@@ -37995,75 +38002,75 @@ var InitializationService = /*#__PURE__*/function () {
               case 30:
                 _logger.default.info('[Initialization] Quiz entities created');
 
-                return _context10.abrupt("return", quizHash);
+                return _context8.abrupt("return", quizHash);
 
               case 34:
-                _context10.prev = 34;
-                _context10.t1 = _context10["catch"](6);
+                _context8.prev = 34;
+                _context8.t1 = _context8["catch"](6);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
 
-                _logger.default.error('Initialization error - initQuizEntity: ', _context10.t1);
+                _logger.default.error('Initialization error - initQuizEntity: ', _context8.t1);
 
-                throw _context10.t1;
+                throw _context8.t1;
 
               case 39:
                 if (!(hash !== quizHash)) {
-                  _context10.next = 77;
+                  _context8.next = 77;
                   break;
                 }
 
-                _context10.prev = 40;
-                _context10.next = 43;
+                _context8.prev = 40;
+                _context8.next = 43;
                 return quizService.deleteAllQuizEntities();
 
               case 43:
                 // Population with the data
                 _iterator8 = _createForOfIteratorHelper(_quizEntity2.default);
-                _context10.prev = 44;
+                _context8.prev = 44;
 
                 _iterator8.s();
 
               case 46:
                 if ((_step8 = _iterator8.n()).done) {
-                  _context10.next = 52;
+                  _context8.next = 52;
                   break;
                 }
 
                 _quizEntity = _step8.value;
-                _context10.next = 50;
+                _context8.next = 50;
                 return this._client.create(_doctypes.QUIZ_DOCTYPE, _quizEntity);
 
               case 50:
-                _context10.next = 46;
+                _context8.next = 46;
                 break;
 
               case 52:
-                _context10.next = 57;
+                _context8.next = 57;
                 break;
 
               case 54:
-                _context10.prev = 54;
-                _context10.t2 = _context10["catch"](44);
+                _context8.prev = 54;
+                _context8.t2 = _context8["catch"](44);
 
-                _iterator8.e(_context10.t2);
+                _iterator8.e(_context8.t2);
 
               case 57:
-                _context10.prev = 57;
+                _context8.prev = 57;
 
                 _iterator8.f();
 
-                return _context10.finish(57);
+                return _context8.finish(57);
 
               case 60:
-                _context10.next = 62;
+                _context8.next = 62;
                 return quizService.getAllQuizEntities();
 
               case 62:
-                _checkCount4 = _context10.sent;
+                _checkCount4 = _context8.sent;
 
                 if (!(!_checkCount4 || (_checkCount4 === null || _checkCount4 === void 0 ? void 0 : _checkCount4.length) !== _quizEntity2.default.length)) {
-                  _context10.next = 66;
+                  _context8.next = 66;
                   break;
                 }
 
@@ -38074,37 +38081,37 @@ var InitializationService = /*#__PURE__*/function () {
               case 66:
                 _logger.default.info('[Initialization] Quiz entities updated');
 
-                return _context10.abrupt("return", quizHash);
+                return _context8.abrupt("return", quizHash);
 
               case 70:
-                _context10.prev = 70;
-                _context10.t3 = _context10["catch"](40);
+                _context8.prev = 70;
+                _context8.t3 = _context8["catch"](40);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
 
-                _logger.default.error('Initialization error - initQuizEntity: ', _context10.t3);
+                _logger.default.error('Initialization error - initQuizEntity: ', _context8.t3);
 
-                throw _context10.t3;
+                throw _context8.t3;
 
               case 75:
-                _context10.next = 79;
+                _context8.next = 79;
                 break;
 
               case 77:
                 // Doctype already up to date
                 _logger.default.info('[Initialization] Quiz Entity loaded');
 
-                return _context10.abrupt("return", quizHash);
+                return _context8.abrupt("return", quizHash);
 
               case 79:
               case "end":
-                return _context10.stop();
+                return _context8.stop();
             }
           }
-        }, _callee10, this, [[6, 34], [8, 18, 21, 24], [40, 70], [44, 54, 57, 60]]);
+        }, _callee8, this, [[6, 34], [8, 18, 21, 24], [40, 70], [44, 54, 57, 60]]);
       }));
 
-      function initQuizEntity(_x6) {
+      function initQuizEntity(_x4) {
         return _initQuizEntity.apply(this, arguments);
       }
 
@@ -38113,73 +38120,73 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initExplorationEntity",
     value: function () {
-      var _initExplorationEntity = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(hash) {
+      var _initExplorationEntity = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(hash) {
         var explorationHash, explorationService, loadedExplorationEntity, _iterator9, _step9, explorationEntity, checkCount, _iterator10, _step10, _explorationEntity, _checkCount5;
 
-        return _regenerator.default.wrap(function _callee11$(_context11) {
+        return _regenerator.default.wrap(function _callee9$(_context9) {
           while (1) {
-            switch (_context11.prev = _context11.next) {
+            switch (_context9.prev = _context9.next) {
               case 0:
                 explorationHash = (0, _hash.hashFile)(_explorationEntity2.default);
                 explorationService = new _exploration.default(this._client); // Populate data if none explorationEntity exists
 
-                _context11.next = 4;
+                _context9.next = 4;
                 return explorationService.getAllExplorationEntities();
 
               case 4:
-                loadedExplorationEntity = _context11.sent;
+                loadedExplorationEntity = _context9.sent;
 
                 if (!(!loadedExplorationEntity || (loadedExplorationEntity === null || loadedExplorationEntity === void 0 ? void 0 : loadedExplorationEntity.length) === 0)) {
-                  _context11.next = 39;
+                  _context9.next = 39;
                   break;
                 }
 
-                _context11.prev = 6;
+                _context9.prev = 6;
                 _iterator9 = _createForOfIteratorHelper(_explorationEntity2.default);
-                _context11.prev = 8;
+                _context9.prev = 8;
 
                 _iterator9.s();
 
               case 10:
                 if ((_step9 = _iterator9.n()).done) {
-                  _context11.next = 16;
+                  _context9.next = 16;
                   break;
                 }
 
                 explorationEntity = _step9.value;
-                _context11.next = 14;
+                _context9.next = 14;
                 return this._client.create(_doctypes.EXPLORATION_DOCTYPE, explorationEntity);
 
               case 14:
-                _context11.next = 10;
+                _context9.next = 10;
                 break;
 
               case 16:
-                _context11.next = 21;
+                _context9.next = 21;
                 break;
 
               case 18:
-                _context11.prev = 18;
-                _context11.t0 = _context11["catch"](8);
+                _context9.prev = 18;
+                _context9.t0 = _context9["catch"](8);
 
-                _iterator9.e(_context11.t0);
+                _iterator9.e(_context9.t0);
 
               case 21:
-                _context11.prev = 21;
+                _context9.prev = 21;
 
                 _iterator9.f();
 
-                return _context11.finish(21);
+                return _context9.finish(21);
 
               case 24:
-                _context11.next = 26;
+                _context9.next = 26;
                 return explorationService.getAllExplorationEntities();
 
               case 26:
-                checkCount = _context11.sent;
+                checkCount = _context9.sent;
 
                 if (!(!checkCount || (checkCount === null || checkCount === void 0 ? void 0 : checkCount.length) !== _explorationEntity2.default.length)) {
-                  _context11.next = 30;
+                  _context9.next = 30;
                   break;
                 }
 
@@ -38190,75 +38197,75 @@ var InitializationService = /*#__PURE__*/function () {
               case 30:
                 _logger.default.info('[Initialization] Exploration entities created');
 
-                return _context11.abrupt("return", explorationHash);
+                return _context9.abrupt("return", explorationHash);
 
               case 34:
-                _context11.prev = 34;
-                _context11.t1 = _context11["catch"](6);
+                _context9.prev = 34;
+                _context9.t1 = _context9["catch"](6);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
 
-                _logger.default.error('Initialization error - initExplorationEntity: ', _context11.t1);
+                _logger.default.error('Initialization error - initExplorationEntity: ', _context9.t1);
 
-                throw _context11.t1;
+                throw _context9.t1;
 
               case 39:
                 if (!(hash !== explorationHash)) {
-                  _context11.next = 77;
+                  _context9.next = 77;
                   break;
                 }
 
-                _context11.prev = 40;
-                _context11.next = 43;
+                _context9.prev = 40;
+                _context9.next = 43;
                 return explorationService.deleteAllExplorationEntities();
 
               case 43:
                 // Population with the data
                 _iterator10 = _createForOfIteratorHelper(_explorationEntity2.default);
-                _context11.prev = 44;
+                _context9.prev = 44;
 
                 _iterator10.s();
 
               case 46:
                 if ((_step10 = _iterator10.n()).done) {
-                  _context11.next = 52;
+                  _context9.next = 52;
                   break;
                 }
 
                 _explorationEntity = _step10.value;
-                _context11.next = 50;
+                _context9.next = 50;
                 return this._client.create(_doctypes.EXPLORATION_DOCTYPE, _explorationEntity);
 
               case 50:
-                _context11.next = 46;
+                _context9.next = 46;
                 break;
 
               case 52:
-                _context11.next = 57;
+                _context9.next = 57;
                 break;
 
               case 54:
-                _context11.prev = 54;
-                _context11.t2 = _context11["catch"](44);
+                _context9.prev = 54;
+                _context9.t2 = _context9["catch"](44);
 
-                _iterator10.e(_context11.t2);
+                _iterator10.e(_context9.t2);
 
               case 57:
-                _context11.prev = 57;
+                _context9.prev = 57;
 
                 _iterator10.f();
 
-                return _context11.finish(57);
+                return _context9.finish(57);
 
               case 60:
-                _context11.next = 62;
+                _context9.next = 62;
                 return explorationService.getAllExplorationEntities();
 
               case 62:
-                _checkCount5 = _context11.sent;
+                _checkCount5 = _context9.sent;
 
                 if (!(!_checkCount5 || (_checkCount5 === null || _checkCount5 === void 0 ? void 0 : _checkCount5.length) !== _explorationEntity2.default.length)) {
-                  _context11.next = 66;
+                  _context9.next = 66;
                   break;
                 }
 
@@ -38269,37 +38276,37 @@ var InitializationService = /*#__PURE__*/function () {
               case 66:
                 _logger.default.info('[Initialization] Exploration entities updated');
 
-                return _context11.abrupt("return", explorationHash);
+                return _context9.abrupt("return", explorationHash);
 
               case 70:
-                _context11.prev = 70;
-                _context11.t3 = _context11["catch"](40);
+                _context9.prev = 70;
+                _context9.t3 = _context9["catch"](40);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
 
-                _logger.default.error('Initialization error - initExplorationEntity: ', _context11.t3);
+                _logger.default.error('Initialization error - initExplorationEntity: ', _context9.t3);
 
-                throw _context11.t3;
+                throw _context9.t3;
 
               case 75:
-                _context11.next = 79;
+                _context9.next = 79;
                 break;
 
               case 77:
                 // Doctype already up to date
                 _logger.default.info('[Initialization] Exploration Entity loaded');
 
-                return _context11.abrupt("return", explorationHash);
+                return _context9.abrupt("return", explorationHash);
 
               case 79:
               case "end":
-                return _context11.stop();
+                return _context9.stop();
             }
           }
-        }, _callee11, this, [[6, 34], [8, 18, 21, 24], [40, 70], [44, 54, 57, 60]]);
+        }, _callee9, this, [[6, 34], [8, 18, 21, 24], [40, 70], [44, 54, 57, 60]]);
       }));
 
-      function initExplorationEntity(_x7) {
+      function initExplorationEntity(_x5) {
         return _initExplorationEntity.apply(this, arguments);
       }
 
@@ -38308,21 +38315,21 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initAnalysis",
     value: function () {
-      var _initAnalysis = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(profile) {
+      var _initAnalysis = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(profile) {
         var actualAnalysisDate;
-        return _regenerator.default.wrap(function _callee12$(_context12) {
+        return _regenerator.default.wrap(function _callee10$(_context10) {
           while (1) {
-            switch (_context12.prev = _context12.next) {
+            switch (_context10.prev = _context10.next) {
               case 0:
-                _context12.prev = 0;
+                _context10.prev = 0;
                 actualAnalysisDate = (0, _date.getActualAnalysisDate)();
 
                 if (!(profile.monthlyAnalysisDate && actualAnalysisDate <= profile.monthlyAnalysisDate)) {
-                  _context12.next = 6;
+                  _context10.next = 6;
                   break;
                 }
 
-                return _context12.abrupt("return", {
+                return _context10.abrupt("return", {
                   monthlyAnalysisDate: profile.monthlyAnalysisDate,
                   haveSeenLastAnalysis: profile.haveSeenLastAnalysis
                 });
@@ -38330,34 +38337,34 @@ var InitializationService = /*#__PURE__*/function () {
               case 6:
                 _logger.default.info('[Initialization] Analysis information from profile updated');
 
-                return _context12.abrupt("return", {
+                return _context10.abrupt("return", {
                   monthlyAnalysisDate: actualAnalysisDate,
                   haveSeenLastAnalysis: profile.isFirstConnection ? true : false
                 });
 
               case 8:
-                _context12.next = 15;
+                _context10.next = 15;
                 break;
 
               case 10:
-                _context12.prev = 10;
-                _context12.t0 = _context12["catch"](0);
+                _context10.prev = 10;
+                _context10.t0 = _context10["catch"](0);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.ANALYSIS_ERROR);
 
-                _logger.default.error('Initialization error - initAnalysis: ', _context12.t0);
+                _logger.default.error('Initialization error - initAnalysis: ', _context10.t0);
 
-                throw _context12.t0;
+                throw _context10.t0;
 
               case 15:
               case "end":
-                return _context12.stop();
+                return _context10.stop();
             }
           }
-        }, _callee12, this, [[0, 10]]);
+        }, _callee10, this, [[0, 10]]);
       }));
 
-      function initAnalysis(_x8) {
+      function initAnalysis(_x6) {
         return _initAnalysis.apply(this, arguments);
       }
 
@@ -38372,28 +38379,28 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initFluidTypes",
     value: function () {
-      var _initFluidTypes = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {
+      var _initFluidTypes = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {
         var kss, fluidtypes;
-        return _regenerator.default.wrap(function _callee13$(_context13) {
+        return _regenerator.default.wrap(function _callee11$(_context11) {
           while (1) {
-            switch (_context13.prev = _context13.next) {
+            switch (_context11.prev = _context11.next) {
               case 0:
                 kss = new _konnectorStatus.default(this._client);
-                _context13.prev = 1;
-                _context13.next = 4;
+                _context11.prev = 1;
+                _context11.next = 4;
                 return kss.getKonnectorAccountStatus();
 
               case 4:
-                fluidtypes = _context13.sent;
+                fluidtypes = _context11.sent;
 
                 if (!fluidtypes) {
-                  _context13.next = 10;
+                  _context11.next = 10;
                   break;
                 }
 
                 _logger.default.info('[Initialization] Fluid Types loaded');
 
-                return _context13.abrupt("return", fluidtypes);
+                return _context11.abrupt("return", fluidtypes);
 
               case 10:
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CONSOS_ERROR);
@@ -38401,25 +38408,25 @@ var InitializationService = /*#__PURE__*/function () {
                 throw new Error('initFluidTypes: FluidTypes not found');
 
               case 12:
-                _context13.next = 19;
+                _context11.next = 19;
                 break;
 
               case 14:
-                _context13.prev = 14;
-                _context13.t0 = _context13["catch"](1);
+                _context11.prev = 14;
+                _context11.t0 = _context11["catch"](1);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CONSOS_ERROR);
 
-                _logger.default.error('Initialization error - initFluidTypes: ', _context13.t0);
+                _logger.default.error('Initialization error - initFluidTypes: ', _context11.t0);
 
-                throw _context13.t0;
+                throw _context11.t0;
 
               case 19:
               case "end":
-                return _context13.stop();
+                return _context11.stop();
             }
           }
-        }, _callee13, this, [[1, 14]]);
+        }, _callee11, this, [[1, 14]]);
       }));
 
       function initFluidTypes() {
@@ -38437,31 +38444,31 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initFluidStatus",
     value: function () {
-      var _initFluidStatus = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14() {
+      var _initFluidStatus = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {
         var fs, fluidStatus;
-        return _regenerator.default.wrap(function _callee14$(_context14) {
+        return _regenerator.default.wrap(function _callee12$(_context12) {
           while (1) {
-            switch (_context14.prev = _context14.next) {
+            switch (_context12.prev = _context12.next) {
               case 0:
                 fs = new _fluid2.default(this._client);
-                _context14.prev = 1;
+                _context12.prev = 1;
 
                 this._setinitStep(_initialisationSteps.InitSteps.CONSOS);
 
-                _context14.next = 5;
+                _context12.next = 5;
                 return fs.getFluidStatus();
 
               case 5:
-                fluidStatus = _context14.sent;
+                fluidStatus = _context12.sent;
 
                 if (!fluidStatus) {
-                  _context14.next = 11;
+                  _context12.next = 11;
                   break;
                 }
 
                 _logger.default.info('[Initialization] Fluid Status loaded');
 
-                return _context14.abrupt("return", fluidStatus);
+                return _context12.abrupt("return", fluidStatus);
 
               case 11:
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CONSOS_ERROR);
@@ -38469,25 +38476,25 @@ var InitializationService = /*#__PURE__*/function () {
                 throw new Error('initFluidStatus: fluidStatus not found');
 
               case 13:
-                _context14.next = 20;
+                _context12.next = 20;
                 break;
 
               case 15:
-                _context14.prev = 15;
-                _context14.t0 = _context14["catch"](1);
+                _context12.prev = 15;
+                _context12.t0 = _context12["catch"](1);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CONSOS_ERROR);
 
-                _logger.default.error('Initialization error - initFluidStatus: ', _context14.t0);
+                _logger.default.error('Initialization error - initFluidStatus: ', _context12.t0);
 
-                throw _context14.t0;
+                throw _context12.t0;
 
               case 20:
               case "end":
-                return _context14.stop();
+                return _context12.stop();
             }
           }
-        }, _callee14, this, [[1, 15]]);
+        }, _callee12, this, [[1, 15]]);
       }));
 
       function initFluidStatus() {
@@ -38505,28 +38512,28 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initUserChallenges",
     value: function () {
-      var _initUserChallenges = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(fluidStatus) {
+      var _initUserChallenges = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(fluidStatus) {
         var challengeService, userChallengeList;
-        return _regenerator.default.wrap(function _callee15$(_context15) {
+        return _regenerator.default.wrap(function _callee13$(_context13) {
           while (1) {
-            switch (_context15.prev = _context15.next) {
+            switch (_context13.prev = _context13.next) {
               case 0:
                 challengeService = new _challenge.default(this._client);
-                _context15.prev = 1;
-                _context15.next = 4;
+                _context13.prev = 1;
+                _context13.next = 4;
                 return challengeService.buildUserChallengeList(fluidStatus);
 
               case 4:
-                userChallengeList = _context15.sent;
+                userChallengeList = _context13.sent;
 
                 if (!userChallengeList) {
-                  _context15.next = 10;
+                  _context13.next = 10;
                   break;
                 }
 
                 _logger.default.info('[Initialization] Challenges loaded');
 
-                return _context15.abrupt("return", userChallengeList);
+                return _context13.abrupt("return", userChallengeList);
 
               case 10:
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
@@ -38534,28 +38541,28 @@ var InitializationService = /*#__PURE__*/function () {
                 throw new Error('initUserChallenges: userChallengeList not found');
 
               case 12:
-                _context15.next = 19;
+                _context13.next = 19;
                 break;
 
               case 14:
-                _context15.prev = 14;
-                _context15.t0 = _context15["catch"](1);
+                _context13.prev = 14;
+                _context13.t0 = _context13["catch"](1);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
 
-                _logger.default.error('Initialization error - initUserChallenges: ', _context15.t0);
+                _logger.default.error('Initialization error - initUserChallenges: ', _context13.t0);
 
-                throw _context15.t0;
+                throw _context13.t0;
 
               case 19:
               case "end":
-                return _context15.stop();
+                return _context13.stop();
             }
           }
-        }, _callee15, this, [[1, 14]]);
+        }, _callee13, this, [[1, 14]]);
       }));
 
-      function initUserChallenges(_x9) {
+      function initUserChallenges(_x7) {
         return _initUserChallenges.apply(this, arguments);
       }
 
@@ -38570,46 +38577,46 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initDuelProgress",
     value: function () {
-      var _initDuelProgress = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16(userChallenge) {
+      var _initDuelProgress = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(userChallenge) {
         var challengeService, _yield$challengeServi, updatedUserChallenge, dataloads;
 
-        return _regenerator.default.wrap(function _callee16$(_context16) {
+        return _regenerator.default.wrap(function _callee14$(_context14) {
           while (1) {
-            switch (_context16.prev = _context16.next) {
+            switch (_context14.prev = _context14.next) {
               case 0:
                 challengeService = new _challenge.default(this._client);
-                _context16.prev = 1;
-                _context16.next = 4;
+                _context14.prev = 1;
+                _context14.next = 4;
                 return challengeService.initChallengeDuelProgress(userChallenge);
 
               case 4:
-                _yield$challengeServi = _context16.sent;
+                _yield$challengeServi = _context14.sent;
                 updatedUserChallenge = _yield$challengeServi.updatedUserChallenge;
                 dataloads = _yield$challengeServi.dataloads;
-                return _context16.abrupt("return", {
+                return _context14.abrupt("return", {
                   updatedUserChallenge: updatedUserChallenge,
                   dataloads: dataloads
                 });
 
               case 10:
-                _context16.prev = 10;
-                _context16.t0 = _context16["catch"](1);
+                _context14.prev = 10;
+                _context14.t0 = _context14["catch"](1);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CHALLENGES_ERROR);
 
-                _logger.default.error('Initialization error: ', _context16.t0);
+                _logger.default.error('Initialization error: ', _context14.t0);
 
-                throw _context16.t0;
+                throw _context14.t0;
 
               case 15:
               case "end":
-                return _context16.stop();
+                return _context14.stop();
             }
           }
-        }, _callee16, this, [[1, 10]]);
+        }, _callee14, this, [[1, 10]]);
       }));
 
-      function initDuelProgress(_x10) {
+      function initDuelProgress(_x8) {
         return _initDuelProgress.apply(this, arguments);
       }
 
@@ -38618,47 +38625,47 @@ var InitializationService = /*#__PURE__*/function () {
   }, {
     key: "initConsent",
     value: function () {
-      var _initConsent = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {
+      var _initConsent = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
         var termsStatus, termService, isUpToDate, lastTerm, isLastConsentValidated, versionType;
-        return _regenerator.default.wrap(function _callee17$(_context17) {
+        return _regenerator.default.wrap(function _callee15$(_context15) {
           while (1) {
-            switch (_context17.prev = _context17.next) {
+            switch (_context15.prev = _context15.next) {
               case 0:
                 termsStatus = {
                   accepted: false,
                   versionType: 'init'
                 };
-                _context17.prev = 1;
+                _context15.prev = 1;
 
                 this._setinitStep(_initialisationSteps.InitSteps.CONSENT);
 
                 termService = new _terms.default(this._client);
-                _context17.next = 6;
+                _context15.next = 6;
                 return termService.isConsentVersionUpToDate();
 
               case 6:
-                isUpToDate = _context17.sent;
-                _context17.next = 9;
+                isUpToDate = _context15.sent;
+                _context15.next = 9;
                 return termService.getLastTerm();
 
               case 9:
-                lastTerm = _context17.sent;
+                lastTerm = _context15.sent;
 
                 if (!lastTerm) {
-                  _context17.next = 24;
+                  _context15.next = 24;
                   break;
                 }
 
                 if (!isUpToDate) {
-                  _context17.next = 18;
+                  _context15.next = 18;
                   break;
                 }
 
-                _context17.next = 14;
+                _context15.next = 14;
                 return termService.isLastTermValidated();
 
               case 14:
-                isLastConsentValidated = _context17.sent;
+                isLastConsentValidated = _context15.sent;
 
                 if (isLastConsentValidated) {
                   termsStatus.accepted = true;
@@ -38672,15 +38679,15 @@ var InitializationService = /*#__PURE__*/function () {
                   _logger.default.info('[Initialization] Consent not up-to-date');
                 }
 
-                _context17.next = 22;
+                _context15.next = 22;
                 break;
 
               case 18:
-                _context17.next = 20;
+                _context15.next = 20;
                 return termService.getTermsVersionType();
 
               case 20:
-                versionType = _context17.sent;
+                versionType = _context15.sent;
 
                 if (versionType === 'minor') {
                   termsStatus.accepted = false;
@@ -38695,7 +38702,7 @@ var InitializationService = /*#__PURE__*/function () {
                 }
 
               case 22:
-                _context17.next = 27;
+                _context15.next = 27;
                 break;
 
               case 24:
@@ -38705,24 +38712,24 @@ var InitializationService = /*#__PURE__*/function () {
                 _logger.default.info('[Initialization] Init first terms');
 
               case 27:
-                return _context17.abrupt("return", termsStatus);
+                return _context15.abrupt("return", termsStatus);
 
               case 30:
-                _context17.prev = 30;
-                _context17.t0 = _context17["catch"](1);
+                _context15.prev = 30;
+                _context15.t0 = _context15["catch"](1);
 
                 this._setinitStepError(_initialisationSteps.InitStepsErrors.CONSENT_ERROR);
 
-                _logger.default.error('Initialization error - initConsent: ', _context17.t0);
+                _logger.default.error('Initialization error - initConsent: ', _context15.t0);
 
-                throw _context17.t0;
+                throw _context15.t0;
 
               case 35:
               case "end":
-                return _context17.stop();
+                return _context15.stop();
             }
           }
-        }, _callee17, this, [[1, 30]]);
+        }, _callee15, this, [[1, 30]]);
       }));
 
       function initConsent() {
diff --git a/index.html b/index.html
index 5497a240388a87b642f755af928d2c8d9a4f8850..f43b7de293babfc35dff1f754b5bfc23c2c73b34 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,user-scalable=0,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.c1180bc5cd66dfd3234e.js"></script><script src="app/ecolyo.661ca74a9860cde92f98.js"></script></div></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,user-scalable=0,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.c1180bc5cd66dfd3234e.js"></script><script src="app/ecolyo.21539ddc43e88794cf62.js"></script></div></body></html>
\ No newline at end of file
diff --git a/manifest.webapp b/manifest.webapp
index 440b229cea46161b3a64034bf086ef623b631862..1e28781a82fca0475616c565e8cb92e10d37aa4b 100644
--- a/manifest.webapp
+++ b/manifest.webapp
@@ -5,7 +5,7 @@
   "categories": [
     "energy"
   ],
-  "version": "1.10.2",
+  "version": "1.11.0",
   "licence": "AGPL-3.0",
   "editor": "Métropole de Lyon",
   "default_locale": "fr",
diff --git a/services/consumptionAlert/ecolyo.js b/services/consumptionAlert/ecolyo.js
index a632ef4582f0515183e9f2b5b852915c9c5156c7..b396d7f8650a5d8ab6f526cfa73810124208dcb1 100644
--- a/services/consumptionAlert/ecolyo.js
+++ b/services/consumptionAlert/ecolyo.js
@@ -80927,7 +80927,7 @@ const consumptionAlert = async ({
 
   if (fetchedData && fetchedData.length > 0) {
     fetchedData.forEach(element => {
-      if (element.value && element.value > lastDayValue) {
+      if (element.value) {
         lastDayValue = element.value;
       }
 
@@ -80981,6 +80981,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
+/* eslint-disable @typescript-eslint/no-explicit-any */
 class MailService {
   async SendMail(client, mailInfo) {
     try {
diff --git a/services/monthlyReportNotification/ecolyo.js b/services/monthlyReportNotification/ecolyo.js
index 2d7ae76e5d348f281a6a49b35825a07eec4cbf42..e6fe0ee8510f14669ef356835cfa666958c398ce 100644
--- a/services/monthlyReportNotification/ecolyo.js
+++ b/services/monthlyReportNotification/ecolyo.js
@@ -80868,6 +80868,7 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = void 0;
 
+/* eslint-disable @typescript-eslint/no-explicit-any */
 class MailService {
   async SendMail(client, mailInfo) {
     try {