diff --git a/manifest.webapp b/manifest.webapp
index d009c17c1a810d0577442bb82438906582e13076..cd41c91e7791b705a999b6a6b6536377a0cf30d6 100644
--- a/manifest.webapp
+++ b/manifest.webapp
@@ -3,7 +3,7 @@
   "slug": "ecolyo",
   "icon": "icon.svg",
   "categories": ["energy"],
-  "version": "0.1.8",
+  "version": "0.1.9",
   "licence": "AGPL-3.0",
   "editor": "Métropole de Lyon",
   "default_locale": "fr",
diff --git a/package.json b/package.json
index a1083c9e883c6cb23973e4d7aefd07a64bc55d2b..a4d66dd927d311ba5ea12794536e7177fa66ad1c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "ecolyo",
-  "version": "0.1.8",
+  "version": "0.1.9",
   "scripts": {
     "tx": "tx pull --all || true",
     "lint": "yarn lint:js && yarn lint:styles",
@@ -85,7 +85,7 @@
     "cozy-bar": "^7.7.10",
     "cozy-client": "13.18.0",
     "cozy-harvest-lib": "^1.15.3",
-    "cozy-scripts": "4.2.1",
+    "cozy-scripts": "4.3.0",
     "cozy-ui": "35.31.0",
     "d3": "^5.15.0",
     "detect-browser": "^5.1.1",
diff --git a/src/components/CommonKit/Card/StyledEcogestureCard.tsx b/src/components/CommonKit/Card/StyledEcogestureCard.tsx
index 8ab7cf1c72d81616a768e07e45851768aa3dd045..774b5d472ea22fe78adda3773a71608f825e07e5 100644
--- a/src/components/CommonKit/Card/StyledEcogestureCard.tsx
+++ b/src/components/CommonKit/Card/StyledEcogestureCard.tsx
@@ -27,6 +27,21 @@ const CardUnlocked = withStyles({
   },
 })(CardBase)
 
+const CardNew = withStyles({
+  '@keyframes glowAnimation': {
+    '0%': { boxShadow: '0px 0px 4px var(--blue)' },
+    '50%': { boxShadow: '0px 0px 16px var(--blue)' },
+    '100%': { boxShadow: '0px 0px 4px var(--blue)' },
+  },
+  root: {
+    border: '1px solid var(--blue)',
+    animation: '2s glowAnimation linear infinite',
+    color: 'white',
+    height: '100%',
+    padding: 0,
+  },
+})(CardBase)
+
 const CardBlueBorderContentBase = withStyles({
   root: {
     border: '1px solid var(--blue)',
@@ -55,6 +70,7 @@ const CardContentBase = withStyles({
 interface StyledEcogestureCardProps extends CardActionAreaProps {
   unlocked?: boolean
   border?: boolean
+  newEcogesture?: boolean | null
 }
 
 const GenerateContentCard = (children: ReactNode): React.ReactFragment => {
@@ -64,9 +80,12 @@ const GenerateContentCard = (children: ReactNode): React.ReactFragment => {
 const StyledEcogestureCard: React.ComponentType<StyledEcogestureCardProps> = ({
   unlocked,
   border,
+  newEcogesture,
   ...props
 }: StyledEcogestureCardProps) => {
-  if (unlocked) {
+  if (newEcogesture) {
+    return <CardNew {...props}>{GenerateContentCard(props.children)}</CardNew>
+  } else if (unlocked) {
     return (
       <CardUnlocked {...props}>
         {GenerateContentCard(props.children)}
diff --git a/src/components/CommonKit/Icon/StyledIcon.tsx b/src/components/CommonKit/Icon/StyledIcon.tsx
index 2b6dd0e7dbb6c0f5b44577d53977fe06ed3c6de6..73f0ae1672e4fe6345ca398d8ac1f04c553db1a1 100644
--- a/src/components/CommonKit/Icon/StyledIcon.tsx
+++ b/src/components/CommonKit/Icon/StyledIcon.tsx
@@ -1,5 +1,4 @@
 import React from 'react'
-import Icon from 'cozy-ui/transpiled/react/Icon'
 import { createAlt } from 'utils/utils'
 
 interface StyledIconProps {
diff --git a/src/components/ContainerComponents/ViewContainer/AvailableChallengeDetailsViewContainer.tsx b/src/components/ContainerComponents/ViewContainer/AvailableChallengeDetailsViewContainer.tsx
index 91c1dea63fab190ff3359f4a75e3eaae6a5bb2d8..d1e5c7e13d12868de19faf1f98e0c8ea4d9c0434 100644
--- a/src/components/ContainerComponents/ViewContainer/AvailableChallengeDetailsViewContainer.tsx
+++ b/src/components/ContainerComponents/ViewContainer/AvailableChallengeDetailsViewContainer.tsx
@@ -29,9 +29,13 @@ const AvailableChallengeDetailsViewContainer: React.FC<AvailableChallengeDetails
   const t = props.t
   const client = props.client
   const challengeManager = new ChallengeManager(client)
-  const { refreshCurrentChallenge, screenType, fluidTypes } = useContext(
-    AppContext
-  )
+  const {
+    refreshCurrentChallenge,
+    screenType,
+    fluidTypes,
+    userProfile,
+    setNotificationEcogesture,
+  } = useContext(AppContext)
   const [redirect, setRedirect] = useState(false)
   const [challenge, setChallenge] = useState<ChallengeType | null>(null)
   const [userChallenge, setUserChallenge] = useState<UserChallenge | null>(null)
@@ -54,6 +58,16 @@ const AvailableChallengeDetailsViewContainer: React.FC<AvailableChallengeDetails
       )
       const chal = await challengeManager.getCurrentChallenge()
       await setUserChallenge(chal)
+      const updatedNotificationEcogestureList: string[] =
+        userProfile && userProfile.notificationEcogesture
+          ? userProfile.notificationEcogesture
+          : []
+      if (chal && updatedNotificationEcogestureList) {
+        updatedNotificationEcogestureList.push(chal.selectedEcogestures[0].id)
+        updatedNotificationEcogestureList.push(chal.selectedEcogestures[1].id)
+        await setNotificationEcogesture(updatedNotificationEcogestureList)
+      }
+
       await refreshCurrentChallenge()
     }
   }
diff --git a/src/components/ContainerComponents/ViewContainer/FinishedChallengeDetailsViewContainer.tsx b/src/components/ContainerComponents/ViewContainer/FinishedChallengeDetailsViewContainer.tsx
index 7f01171dd4d9cc477a0ee612e133e5939a90d017..d1fb4bfaf27eedfa34acad3a8c6aec18c84546fb 100644
--- a/src/components/ContainerComponents/ViewContainer/FinishedChallengeDetailsViewContainer.tsx
+++ b/src/components/ContainerComponents/ViewContainer/FinishedChallengeDetailsViewContainer.tsx
@@ -160,12 +160,14 @@ const FinishedChallengeDetailsViewContainer: React.FC<FinishedChallengeDetailsVi
                 </div>
               </div>
             </div>
-            <EcogestureModal
-              opened={openEcogestureModal}
-              ecogesture={challenge.selectedEcogestures[challengeEcogesture]}
-              handleCloseClick={handleCloseClick}
-              unlockedEcogesture={true}
-            />
+            {openEcogestureModal && (
+              <EcogestureModal
+                opened={openEcogestureModal}
+                ecogesture={challenge.selectedEcogestures[challengeEcogesture]}
+                handleCloseClick={handleCloseClick}
+                unlockedEcogesture={true}
+              />
+            )}
           </>
         )}
       </Content>
diff --git a/src/components/ContainerComponents/ViewContainer/OngoingChallengeDetailsViewContainer.tsx b/src/components/ContainerComponents/ViewContainer/OngoingChallengeDetailsViewContainer.tsx
index e46cad6dc82d386367116f39b52cb3ea5d977ac3..ff39bebd96360d30d8eccd0fceb6e05d2a4f15b3 100644
--- a/src/components/ContainerComponents/ViewContainer/OngoingChallengeDetailsViewContainer.tsx
+++ b/src/components/ContainerComponents/ViewContainer/OngoingChallengeDetailsViewContainer.tsx
@@ -38,7 +38,12 @@ const OngoingChallengeDetailsViewContainer: React.FC<OngoingChallengeDetailsView
   const client = props.client
   const challengeManager = new ChallengeManager(client)
 
-  const { refreshCurrentChallenge, screenType } = useContext(AppContext)
+  const {
+    refreshCurrentChallenge,
+    screenType,
+    userProfile,
+    setNotificationEcogesture,
+  } = useContext(AppContext)
   const [challengeEcogesture, setChallengeEcogesture] = useState<number>(0)
   const [openEcogestureModal, setOpenEcogestureModal] = useState(false)
   const [challenge, setChallenge] = useState<UserChallenge | null>(null)
@@ -55,6 +60,18 @@ const OngoingChallengeDetailsViewContainer: React.FC<OngoingChallengeDetailsView
         challenge.id,
         ChallengeState.ABANDONED
       )
+
+      userProfile.notificationEcogesture =
+        userProfile &&
+        userProfile.notificationEcogesture.filter(
+          x =>
+            x !== challenge.selectedEcogestures[0].id &&
+            x !== challenge.selectedEcogestures[1].id
+        )
+      await setNotificationEcogesture(
+        userProfile && userProfile.notificationEcogesture
+      )
+
       await refreshCurrentChallenge()
       history.goBack()
     }
diff --git a/src/components/ContentComponents/EcogestureCard/EcogestureCard.tsx b/src/components/ContentComponents/EcogestureCard/EcogestureCard.tsx
index 4fd87da17d4460b7fba83a4bcd3a4d62ab838cef..3c96f307c1efd6e6b8f6135f036e9148a6780fee 100644
--- a/src/components/ContentComponents/EcogestureCard/EcogestureCard.tsx
+++ b/src/components/ContentComponents/EcogestureCard/EcogestureCard.tsx
@@ -1,8 +1,9 @@
-import React, { useState, useEffect } from 'react'
+import React, { useState, useEffect, useContext } from 'react'
 import { EcogestureType } from 'services/dataChallengeContracts'
 import StyledEcogestureCard from 'components/CommonKit/Card/StyledEcogestureCard'
 import def from 'assets/icons/visu/ecogesture/default.svg'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
+import { AppContext } from 'components/Contexts/AppContextProvider'
 
 interface EcogestureCardProps {
   ecogesture: EcogestureType
@@ -19,7 +20,9 @@ const EcogestureCard: React.FC<EcogestureCardProps> = ({
     handleClick && ecogesture ? handleClick(ecogesture) : null
   }
   const [ecogestureIcon, setEcogestureIcon] = useState(def)
-
+  const { userProfile } = useContext(AppContext)
+  const newEcogestures: string[] | null =
+    userProfile && userProfile.notificationEcogesture
   async function importEcogestureIcon(id: string) {
     // Les svg doivent être au format id.svg
     let importedEcogesture
@@ -43,8 +46,17 @@ const EcogestureCard: React.FC<EcogestureCardProps> = ({
     <>
       {challengeEcogesture ? (
         <div className={`cp-eg-${challengeEcogesture}`}>
-          <StyledEcogestureCard border={true} onClick={handleCardclick}>
+          <StyledEcogestureCard
+            border={true}
+            onClick={handleCardclick}
+            newEcogesture={
+              newEcogestures && newEcogestures.includes(ecogesture.id)
+            }
+          >
             <div className="ec">
+              {newEcogestures && newEcogestures.includes(ecogesture.id) && (
+                <div className="ecogesture-card-notif">1</div>
+              )}
               <div className="ec-content ec-content-challenge">
                 <div>
                   <StyledIcon
@@ -64,8 +76,14 @@ const EcogestureCard: React.FC<EcogestureCardProps> = ({
         <StyledEcogestureCard
           unlocked={ecogesture.unlocked ? ecogesture.unlocked : false}
           onClick={handleCardclick}
+          newEcogesture={
+            newEcogestures && newEcogestures.includes(ecogesture.id)
+          }
         >
           <div className="ec">
+            {newEcogestures && newEcogestures.includes(ecogesture.id) && (
+              <div className="ecogesture-card-notif">1</div>
+            )}
             <div
               className={`ec-content ${
                 ecogesture.unlocked ? 'ec-content-unlocked' : ''
diff --git a/src/components/ContentComponents/EcogestureModal/EcogestureModal.tsx b/src/components/ContentComponents/EcogestureModal/EcogestureModal.tsx
index a80f42e5ebf424bea1cb4c1b42ed243f473696f6..577ce741ebcb1d4f39a44850e39f50dc1cf21883 100644
--- a/src/components/ContentComponents/EcogestureModal/EcogestureModal.tsx
+++ b/src/components/ContentComponents/EcogestureModal/EcogestureModal.tsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from 'react'
+import React, { useState, useEffect, useContext } from 'react'
 import { translate } from 'cozy-ui/react/I18n'
 import Modal from 'components/CommonKit/Modal/Modal'
 import { getPicto } from 'utils/utils'
@@ -6,6 +6,7 @@ import { EcogestureType } from 'services/dataChallengeContracts'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import Icon from 'cozy-ui/transpiled/react/Icon'
 import def from 'assets/icons/visu/ecogesture/default.svg'
+import { AppContext } from 'components/Contexts/AppContextProvider'
 
 interface EcogestureModalProps {
   opened: boolean
@@ -24,6 +25,7 @@ const EcogestureModal: React.FC<EcogestureModalProps> = ({
   handleCloseClick,
 }: EcogestureModalProps) => {
   const [ecogestureIcon, setEcogestureIcon] = useState(def)
+  const { userProfile, setNotificationEcogesture } = useContext(AppContext)
 
   async function importEcogestureIcon(id: string) {
     // Les svg doivent être au format id.svg
@@ -38,6 +40,19 @@ const EcogestureModal: React.FC<EcogestureModalProps> = ({
     }
   }
 
+  useEffect(() => {
+    let index = -1
+    if (userProfile && userProfile.notificationEcogesture != undefined) {
+      index = userProfile.notificationEcogesture.indexOf(ecogesture.id)
+    }
+    if (index > -1) {
+      const updatedNotificationEcogestureList =
+        userProfile && userProfile.notificationEcogesture
+      updatedNotificationEcogestureList.splice(index, 1)
+      setNotificationEcogesture(updatedNotificationEcogestureList)
+    }
+  }, [])
+
   useEffect(() => {
     if (ecogesture) {
       importEcogestureIcon(ecogesture.id)
diff --git a/src/components/ContentComponents/Navbar/Navbar.tsx b/src/components/ContentComponents/Navbar/Navbar.tsx
index 6214e1f1c2fb73c0fcb748ba0976b05b1e38cec1..0f2e7b7bdfb93f68ed7c2b4068d823ca5c47fab2 100644
--- a/src/components/ContentComponents/Navbar/Navbar.tsx
+++ b/src/components/ContentComponents/Navbar/Navbar.tsx
@@ -21,7 +21,11 @@ interface NavbarProps {
 }
 
 export const Navbar = ({ t }: NavbarProps) => {
-  const { challengeNotification } = useContext(AppContext)
+  const { challengeNotification, userProfile } = useContext(AppContext)
+  let nbNotifEcogest = 0
+  if (userProfile != null && userProfile.notificationEcogesture != null) {
+    nbNotifEcogest = userProfile.notificationEcogesture.length
+  }
   return (
     <aside className="o-sidebar">
       <nav>
@@ -57,6 +61,9 @@ export const Navbar = ({ t }: NavbarProps) => {
               className="c-nav-link"
               activeClassName="is-active"
             >
+              {nbNotifEcogest > 0 && (
+                <div className="nb-challenge-notif">{nbNotifEcogest}</div>
+              )}
               <StyledIcon className="c-nav-icon off" icon={EcogestesIconOff} />
               <StyledIcon className="c-nav-icon on" icon={EcogestesIconOn} />
               {t('Nav.ECOGESTURES')}
diff --git a/src/components/Contexts/AppContextProvider.tsx b/src/components/Contexts/AppContextProvider.tsx
index 095a772b2866de01ccc9ecedf85e8c27f915dcf0..71064d8d548f23de52c97177acea8e4de736ac7b 100644
--- a/src/components/Contexts/AppContextProvider.tsx
+++ b/src/components/Contexts/AppContextProvider.tsx
@@ -21,6 +21,7 @@ interface AppContextProps {
   isCurrentChallengeUpdateLoadingSuccess: boolean | null
   currentChallenge: UserChallenge | null
   challengeNotification: boolean
+  setNotificationEcogesture: Function
   refreshCurrentChallenge: Function
   isContextLoaded: boolean
   isError: boolean
@@ -50,6 +51,7 @@ export const AppContext = React.createContext<AppContextProps>({
   isCurrentChallengeUpdateLoadingSuccess: null,
   currentChallenge: null,
   challengeNotification: false,
+  setNotificationEcogesture: () => null,
   refreshCurrentChallenge: () => Promise,
   isContextLoaded: false,
   isError: false,
@@ -199,6 +201,16 @@ const AppContextProvider: React.FC<AppContextProviderProps> = ({
     }
   }
 
+  const setNotificationEcogesture = async (ecogestureList: string[]) => {
+    const updm = new UserProfileDataManager(client)
+    const updatedUserProfile = await updm.updateUserProfile({
+      notificationEcogesture: ecogestureList,
+    })
+    if (updatedUserProfile) {
+      setUserProfile(updatedUserProfile)
+    }
+  }
+
   useEffect(() => {
     let subscribed = true
     function handleResize() {
@@ -225,7 +237,7 @@ const AppContextProvider: React.FC<AppContextProviderProps> = ({
       }
       setIndexesLoading(false)
 
-      // Load challenges, ecogestures and user profile data
+      // Load challenges, ecogesture and user profile data
       setDataLoading(true)
       const resultInitData = await im.initData()
       if (subscribed && !resultInitData) {
@@ -352,6 +364,7 @@ const AppContextProvider: React.FC<AppContextProviderProps> = ({
         disableBackgroundScroll,
         maxLoads,
         setMaxLoads,
+        setNotificationEcogesture,
       }}
     >
       {children}
diff --git a/src/db/ecogestureData.json b/src/db/ecogestureData.json
index 6f83c968c470aebb14b839548e1b830ec41b7d7b..1f136460777061a3595bf19c5ecd700d7a52a8e7 100644
--- a/src/db/ecogestureData.json
+++ b/src/db/ecogestureData.json
@@ -4,7 +4,7 @@
     "shortName": "Contrôle du nuage",
     "longName": "Je règle la température de mon eau chaude entre 55 et 60 °C.",
     "shortDescription": "",
-    "longDescription": "Bien souvent les chauffe-eau sont réglés pour une température de 70 °C dans le ballon, ce qui n’est pas économique et peut même être dangereux ! Au-dessus de 60 °C vous augmentez aussi l’entartrage. L’eau ne doit pas être trop froide non plus pour éviter le risque de prolifération de micro-organismes comme les légionelles. Parfois l’accès au réglage n’est pas directement visible… il faut alors retirer le capot en plastique situé sous le chauffe-eau pour y accéder.",
+    "longDescription": "Bien souvent les chauffe-eau sont réglés pour une température de 70 °C dans le ballon, ce qui n’est pas économique et peut même être dangereux ! Au-dessus de 60 °C vous augmentez aussi l’entartrage. L’eau ne doit pas être trop froide non plus pour éviter le risque de prolifération de micro-organismes comme les légionelles. A noter : parfois l’accès au réglage n’est pas directement visible… il faut alors retirer le capot en plastique situé sous le chauffe-eau pour y accéder.",
     "usage": "Eau chaude sanitaire",
     "fluidTypes": [0],
     "pack": 8,
@@ -13,9 +13,9 @@
   {
     "_id": "0034",
     "shortName": "Vague de sécheresse",
-    "longName": "Je décide de supprimer une douche ou 1 bain par semaine.",
+    "longName": "Je décide de supprimer une douche par semaine.",
     "shortDescription": "",
-    "longDescription": "Si on n'a pas transpiré la journée et qu'on ne sent pas sale, aucune obligation de se laver tous les jours. Il est même conseillé pour la flore de l'épiderme (la fameuse barrière contre certains pathogènes) de ne pas se laver tous les jours. Vous économiserez ainsi une quantité d'eau non négligeable.",
+    "longDescription": "Si on n'a pas transpiré la journée et qu'on ne sent pas mauvais, aucune obligation de se laver tous les jours. Il est même conseillé pour la flore de l'épiderme (la fameuse barrière contre certains pathogènes) de ne pas se laver tous les jours. Vous économiserez ainsi une quantité d'eau non négligeable.",
     "usage": "Eau chaude sanitaire",
     "fluidTypes": [1],
     "pack": 6,
@@ -37,7 +37,7 @@
     "shortName": "Ère glacière",
     "longName": "Je remets systématiquement mes mitigeurs sur la position la plus froide.",
     "shortDescription": "",
-    "longDescription": "Laissez de préférence les robinets mitigeurs en position 'froid' pour éviter de demander de l'eau chaude ou tiède alors qu'on a besoin, la plupart du temps, d'eau froide. Et si vous pouvez remplacer votre robinet 'mélangeur' par une robinetterie dite mitigeur, c'est 10 % de gagné : cela prendra moins de temps pour avoir la température d’eau désirée.",
+    "longDescription": "Laissez de préférence les robinets mitigeurs en position 'froid' pour éviter de demander de l'eau chaude ou tiède alors qu'on a besoin, la plupart du temps, d'eau froide. Et si vous pouvez remplacer votre robinet 'mélangeur' par une robinetterie dite mitigeur, c'est des économies également à la clé : cela prendra moins de temps pour avoir la température d’eau désirée.",
     "usage": "Eau chaude sanitaire",
     "fluidTypes": [0, 2],
     "pack": 0,
@@ -48,7 +48,7 @@
     "shortName": "Maitre du feu",
     "longName": "Je coupe mon chauffe-eau dès que je pars plus de 4 jours.",
     "shortDescription": "",
-    "longDescription": "Pourquoi continuer à chauffer de l’eau lorsqu’on n’est pas là pour l’utiliser ? Si vous possédez un chauffe-eau à accumulation et que vous partez plusieurs jours, il peut être utile de le couper car il continuera de consommer pour maintenir l’eau à température. Attention cependant à la douche froide du retour, n'oubliez de le remettre en marche en rentrant ! De plus, pour des raisons de confort comme d’hygiène (risque de légionellose), le ballon devra remonter en température (au moins à 60°C pendant 1h). Si vous disposez d’un chauffe-eau instantané, la consommation de sa veille est de l'ordre de 0,3 kWh/jour : à vous de voir si, en cas d’absence, vous la supprimez comme toutes les autres !",
+    "longDescription": "Pourquoi continuer à chauffer de l’eau lorsqu’on n’est pas là pour l’utiliser ? Si vous possédez un chauffe-eau à accumulation et que vous partez plusieurs jours, il peut être utile de le couper car il continuera de consommer pour maintenir l’eau à température. Attention cependant à la douche froide du retour, n'oubliez de le remettre en marche en rentrant !",
     "usage": "Eau chaude sanitaire",
     "fluidTypes": [0],
     "pack": 0,
@@ -59,7 +59,7 @@
     "shortName": "Hypervitesse",
     "longName": "Je prends des douches de moins de 5 minutes.",
     "shortDescription": "",
-    "longDescription": "Quand vous prenez une douche, vous consommez 2 à 4 fois moins d’eau qu’en prenant un bain. Cependant cela est vrai pour une douche de 5 minutes. Sachant que le débit d’une pomme de douche classique est de 15 à 20 litres et qu’un bain nécessite 150 à 200 litres d’eau, une douche de 10 minutes revient au même qu’un bain ! Raison de plus pour choisir une pomme de douche à débit réduit qui fractionne les gouttes d’eau et permet de faire jusqu’à 50 % d’économies d’eau en maintenant le confort. Et pour se tester, il y a les sabliers de douche !",
+    "longDescription": "Quand vous prenez une douche, vous consommez 2 à 4 fois moins d’eau qu’en prenant un bain. Cependant cela est vrai pour une douche de 5 minutes. Sachant que le débit d’une pomme de douche classique est de 15 à 20 litres et qu’un bain nécessite 150 à 200 litres d’eau, une douche de 10 minutes revient au même qu’un bain ! Alors, à vos chronomètres, on essaie de tenir moins de 5 minutes !",
     "usage": "Eau chaude sanitaire",
     "fluidTypes": [1],
     "pack": 7,
@@ -68,9 +68,9 @@
   {
     "_id": "0042",
     "shortName": "Maitre des eaux",
-    "longName": "Encore plus fort : je coupe l'eau de la douche pendant que je me savonne.",
+    "longName": "Je coupe l'eau de la douche pendant que je me savonne.",
     "shortDescription": "",
-    "longDescription": "Si vous n’êtes pas frileux, coupez l'eau pendant que vous vous savonnez : c'est encore une économie de 50 % !",
+    "longDescription": "Si vous n’êtes pas frileux, coupez l'eau pendant que vous vous savonnez : c'est une économie de 50 % d'eau !",
     "usage": "Eau chaude sanitaire",
     "fluidTypes": [1],
     "pack": 5,
@@ -103,7 +103,7 @@
     "shortName": "Vaisselle givrée",
     "longName": "Je rince ma vaisselle à l'eau froide.",
     "shortDescription": "",
-    "longDescription": "Pendant la vaisselle, l’eau chaude n’est utile que pour faciliter le dégraissage au moment du nettoyage… Donc après, pour le rinçage, on peut utiliser de l’eau froide. Veillez bien cependant à utiliser de l’eau chaude de temps en temps pour éviter la formation de bouchons de graisse dans les canalisations.",
+    "longDescription": "Pendant la vaisselle, l’eau chaude n’est utile que pour faciliter le dégraissage au moment du nettoyage. Après,  pour le rinçage, on peut donc utiliser de l’eau froide. Veillez bien cependant à utiliser de l’eau chaude de temps en temps pour éviter la formation de bouchons de graisse dans les canalisations.",
     "usage": "Eau chaude sanitaire",
     "fluidTypes": [0, 2],
     "pack": 2,
@@ -114,7 +114,7 @@
     "shortName": "Œil de lynx",
     "longName": "Je repère les fuites.",
     "shortDescription": "",
-    "longDescription": "Il est important de vérifier régulièrement l’état de vos tuyauteries mais aussi des robinets et de la chasse d’eau. Une fuite peut vite coûter très cher : (VOIR TABLEAU A INTEGRER page 15 du guide écogestes) Les fuites ne sont pas toujours visibles : pour détecter une fuite de chasse d’eau, mettez un peu de colorant alimentaire dans le réservoir. Vaquez à d'autres occupations en donnant la consigne à votre entourage de ne pas utiliser les toilettes ... puis revenez : si l'eau dans la cuvette est colorée, c'est qu'il y a une fuite ! Si vous soupçonnez une fuite, relevez le compteur d’eau le matin avant de partir ou le soir avant de vous coucher. Si lorsque vous relevez à nouveau le compteur, il y a une différence, c’est qu’il y a une fuite. Enfin, changez les joints défectueux ou faites-le faire par un plombier, cela vous coûtera toujours moins cher que la fuite ellemême ! Et pensez à couper votre compteur d’eau avant de partir en vacances, certains assureurs l’exigent. En rentrant, pensez à laisser couler l’eau quelques minutes avant de la boire afin de ne pas consommer une eau qui a stagné dans les conduites.",
+    "longDescription": "Il est important de vérifier régulièrement l’état de vos tuyauteries mais aussi des robinets et de la chasse d’eau. Une fuite peut vite coûter très cher.  Les fuites ne sont pas toujours visibles. Si vous soupçonnez une fuite, relevez le compteur d’eau le matin avant de partir ou le soir avant de vous coucher. Si lorsque vous relevez à nouveau le compteur, il y a une différence, c’est qu’il y a une fuite. Autre méthode pour détecter une fuite de chasse d’eau : mettez un peu de colorant alimentaire dans le réservoir. Vaquez à d'autres occupations en donnant la consigne à votre entourage de ne pas utiliser les toilettes ... puis revenez : si l'eau dans la cuvette est colorée, c'est qu'il y a une fuite !",
     "usage": "Eau froide",
     "fluidTypes": [1],
     "pack": 0,
@@ -136,7 +136,7 @@
     "shortName": "Hibernation",
     "longName": "Je remplis mon congélateur, je ne surcharge pas mon réfrigérateur !",
     "shortDescription": "",
-    "longDescription": "Remplissez au maximum votre congélateur, qui consomme d’autant moins qu’il n’y a pas d’espace vide. Si votre congélateur n’est pas plein, remplissez les espaces vides avec des bouteilles d’eau en plastique pleines aux 3/4. Une fois congelées, elles aident le congélateur à abaisser la température après une ouverture de porte. De plus, en cas de coupure de courant ou de panne, elles aident à maintenir les denrées au froid plus longtemps. Par contre, éviter de surcharger le réfrigérateur, cela augmente sa consommation d'énergie et diminue la durée de conservation des aliments. Laissez de la place entre les aliments pour que l’air circule car c’est lui qui refroidit les aliments. Si vous manquez de place, l’appareil peut être trop petit (la famille s’est agrandie par exemple). Vérifiez que tout ce qu’il y a dedans nécessite d'être conservé au frais. Ne confondez pas votre réfrigérateur avec votre placard : il est inutile d’y stocker des bouteilles, des pots ou des conserves non entamées (cornichons, moutarde, confiture...).",
+    "longDescription": "Remplissez au maximum votre congélateur, qui consomme d’autant moins qu’il n’y a pas d’espace vide. Si votre congélateur n’est pas plein, remplissez les espaces vides avec des bouteilles d’eau en plastique pleines aux 3/4. Une fois congelées, elles aident le congélateur à abaisser la température après une ouverture de porte. De plus, en cas de coupure de courant ou de panne, elles aident à maintenir les denrées au froid plus longtemps. Par contre, évitez de surcharger le réfrigérateur, cela augmente sa consommation d'énergie et diminue la durée de conservation des aliments. Laissez de la place entre les aliments pour que l’air circule car c’est lui qui refroidit les aliments.",
     "usage": "Froid",
     "fluidTypes": [0],
     "pack": 4,
@@ -147,7 +147,7 @@
     "shortName": "Architecte d'intérieur",
     "longName": "Je positione mon réfrigérateur loin d’une source de chaleur (four, cuisinière, fenêtre…).",
     "shortDescription": "",
-    "longDescription": "Il vaut mieux éviter de placer le réfrigérateur ou le congélateur près d’un four, d’une cuisinière ou près de l’éclairage direct d’une fenêtre. Ces derniers réchauffent les appareils de froid qui vont donc consommer plus pour rester à la bonne température. S’il n’est pas possible de faire autrement, prévoyez une plaque très isolante entre les appareils électroménagers. De même, ne chauffez pas trop la cuisine : installé dans une pièce à 23 °C, le réfrigérateur consomme 38 % de plus que dans une pièce à 18 °C ! Enfin, si vous placez votre congélateur dans un local non chauffé (garage, cave, etc.), il ne doit pas faire trop froid non plus sinon l’appareil va surchauffer à l’intérieur. En effet, vous connaissez sans doute la classe énergétique d’un appareil de froid (de A à G) mais il existe aussi une autre référence, la classe climatique : SN (tempérée élargie) de +10 °C à + 32 °C ; N (tempérée) de +16 °C à + 32 °C ; ST (subtropicale) de +18 °C à + 38 °C ; T (tropicale) de +18 °C à + 43 °C. Nos appareils correspondent souvent aux classes SN ou N alors attention à ne pas les placer en dessous de la température indiquée. Dans une cave, un appareil de classe N posera problème en dessous de 16 °C…",
+    "longDescription": "Il vaut mieux éviter de placer le réfrigérateur ou le congélateur près d’un four, d’une cuisinière ou près de l’éclairage direct d’une fenêtre. Ces derniers réchauffent les appareils de froid qui vont donc consommer plus pour rester à la bonne température. S’il n’est pas possible de faire autrement, prévoyez une plaque très isolante entre les appareils électroménagers. De même, ne chauffez pas trop la cuisine : installé dans une pièce à 23 °C, le réfrigérateur consomme 38 % de plus que dans une pièce à 18 °C ! Enfin, si vous placez votre congélateur dans un local non chauffé (garage, cave, etc.), il ne doit pas faire trop froid non plus sinon l’appareil va surchauffer à l’intérieur.",
     "usage": "Froid",
     "fluidTypes": [0],
     "pack": 0,
@@ -158,7 +158,7 @@
     "shortName": "Roi du Tetris",
     "longName": "J’optimise le rangement dans mon réfrigérateur/congélateur.",
     "shortDescription": "",
-    "longDescription": "La partie la plus froide ne se situe pas toujours au même endroit selon l’appareil : dans le haut des réfrigérateurs traditionnels, dans le bas des combinés 2 portes. Dans les réfrigérateurs à froid ventilé, les températures sont plus homogènes. Regardez la notice de votre réfrigérateur pour identifier les différentes zones de température et ainsi ranger chaque aliment à sa place. Enlevez les produits de leur emballage d'origine (film plastique, carton, etc.) qui filtrent le froid, mais veillez à garder les dates de péremption. Rangez les denrées de façon rationnelle pour y accéder plus rapidement et aussi pour pouvoir refermer plus rapidement la porte. Mettez des étiquettes indiquant le contenu de chaque paquet dans le congélateur afin de limiter le temps pendant lequel le congélateur reste ouvert. Évitez de mettre trop de poids dans les portes. Une porte qui fonctionne mal provoque des pertes d'énergie. Surtout, n’obstruez pas le thermostat car s’il est recouvert de givre ou de produits, il ne détectera pas la température correctement et l’abaissera plus que nécessaire.",
+    "longDescription": "La partie la plus froide ne se situe pas toujours au même endroit selon l’appareil : dans le haut des réfrigérateurs traditionnels, dans le bas des combinés 2 portes. Dans les réfrigérateurs à froid ventilé, les températures sont plus homogènes. Regardez la notice de votre réfrigérateur pour identifier les différentes zones de température et ainsi ranger chaque aliment à sa place. Enlevez les produits de leur emballage d'origine (film plastique, carton, etc.) qui filtrent le froid, mais veillez à garder les dates de péremption. Rangez les denrées de façon rationnelle pour y accéder plus rapidement et aussi pour pouvoir refermer plus rapidement la porte. Surtout, n’obstruez pas le thermostat car s’il est recouvert de givre ou de produits, il ne détectera pas la température correctement et l’abaissera plus que nécessaire.",
     "usage": "Froid",
     "fluidTypes": [0],
     "pack": 0,
@@ -169,7 +169,7 @@
     "shortName": "Maitre des calories",
     "longName": "Je vérifie régulièrement la température de mon réfrigérateur/congélateur",
     "shortDescription": "",
-    "longDescription": "Une température de +5 °C est suffisante pour un réfrigérateur, -18 °C pour un congélateur. Chaque degré en moins par rapport à ces températures conseillées consomme 5 % d’énergie en plus. Pour vérifier la température de votre réfrigérateur, mettez un thermomètre dans un verre d'eau, laissez-le en place au moins une nuit, et faites la mesure aux différents étages du réfrigérateur ainsi que dans la porte. Quoiqu’il en soit, le froid conserve mais n’assainit pas. Il n’améliore pas les aliments de qualité médiocre et les aliments sains ne le restent que s’ils sont conservés correctement de la production à l’assiette du consommateur.",
+    "longDescription": "Une température de +5 °C est suffisante pour un réfrigérateur, -18 °C pour un congélateur. Chaque degré en moins par rapport à ces températures conseillées consomme 5 % d’énergie en plus. Pour vérifier la température de votre réfrigérateur, mettez un thermomètre dans un verre d'eau, laissez-le en place au moins une nuit, et faites la mesure aux différents étages du réfrigérateur ainsi que dans la porte.",
     "usage": "Froid",
     "fluidTypes": [0],
     "pack": 0,
@@ -211,7 +211,7 @@
   {
     "_id": "0058",
     "shortName": "Chat échaudé",
-    "longName": "J’attends que les plats chauds aient refroidi avant de les mettre au réfrigérateur et je les couvre. Je décongèle les produits dans le frigo.",
+    "longName": "J’attends que les plats chauds aient refroidi avant de les mettre au réfrigérateur et je les couvre.",
     "shortDescription": "",
     "longDescription": "En plaçant des plats chauds au réfrigérateur, vous réchauffez l’enceinte de l’appareil, ce qui entraîne une surconsommation. De plus, si les plats ne sont pas couverts, de la vapeur d’eau va se former et provoquer l’apparition du givre. Et couvrir les plats, c’est aussi éviter que les bactéries et les odeurs ne se répandent.",
     "usage": "Froid",
@@ -246,7 +246,7 @@
     "shortName": "Electro",
     "longName": "J’utilise systématiquement des multiprises pour couper les veilles de mes appareils.",
     "shortDescription": "",
-    "longDescription": "Quand les appareils ne fonctionnent pas, ils peuvent tout de même continuer à consommer de l’énergie : (VOIR TABLEAU page 23 à intégrer) Par exemple, un téléviseur qui fonctionne 4 heures par jour reste en veille les 20 heures restantes. Pendant ce temps, il peut donc consommer 20x20x365 = 146 kWh/an soit 20 € (0,14 € le kWh électrique). Votre téléviseur vous coûte donc 20 €/an… quand il ne fonctionne pas, soit autant voire plus que quand il fonctionne ! Il est difficile d'agir pour réduire la consommation de certains appareils en veille (système d’alarme, radio-réveil, table à induction...). Pour tous les autres, il est toujours possible d'éteindre les appareils non pas avec la seule télécommande, mais à l'aide du bouton 'marche/arrêt', ou encore de les relier à une multiprise avec interrupteur. Il est même possible de prévoir des interrupteurs radio dédiés à certaines prises électriques : un simple interrupteur mural permet de couper tous les appareils multimédia par exemple (télé, magnétoscope, lecteur DVD, Hi-Fi, décodeur…) en sortant de la pièce. De plus, couper complètement l’alimentation permettra de mettre vos appareils totalement hors tension, ce qui allongera leur durée de vie.",
+    "longDescription": "Quand les appareils ne fonctionnent pas, ils peuvent tout de même continuer à consommer de l’énergie. Par exemple, un téléviseur qui fonctionne 4 heures par jour reste en veille les 20 heures restantes et consomme donc pendant ce temps. Pour vous faciliter la vie et faire des économies, reliez ces appareils (télé, lecteur DVD-BlueRay, HiFi, décodeur…) à une multiprise à interrupteur et pensez à éteindre la multi-prise en temps voulu.",
     "usage": "Audiovisuel, Petit électroménager, Hi-Fi, Informatique",
     "fluidTypes": [0],
     "pack": 2,
@@ -257,7 +257,7 @@
     "shortName": "Marionnetiste",
     "longName": "Je débranche mes chargeurs quand ils ne sont pas en fonctionnement.",
     "shortDescription": "",
-    "longDescription": "Certains chargeurs continuent de consommer de l’énergie même quand ils restent branchés, même si l’appareil n’est pas connecté. C’est quelque chose que vous pouvez vérifier facilement avec un bon wattmètre, pour limiter ces petites consommations et éviter la surchauffe. De plus, certaines technologies de batteries supportent mal de rester branchées une fois la charge terminée. Les débrancher dès que l’appareil est chargé permet des économies d’énergie et prolonge la durée de vie de votre appareil.",
+    "longDescription": "Certains chargeurs continuent de consommer de l’énergie quand ils restent branchés, même si l’appareil n’est pas connecté. De plus, certaines technologies de batteries supportent mal de rester branchées une fois la charge terminée. Les débrancher dès que l’appareil est chargé permet des économies d’énergie et prolonge la durée de vie de votre appareil.",
     "usage": "Audiovisuel, Petit électroménager, Hi-Fi, Informatique",
     "fluidTypes": [0],
     "pack": 0,
@@ -266,9 +266,9 @@
   {
     "_id": "0066",
     "shortName": "Cape d'invisibilité",
-    "longName": "Ma 'box' est branchée sur une multi-prise ou sur une minuterie pour s'éteindre automatiquement quand je n'en n'ai pas besoin (nuit).",
+    "longName": "Ma 'box' est branchée sur une multi-prise ou sur une minuterie lui permettant de s'éteindre automatiquement quand je n'en n'ai pas besoin.",
     "shortDescription": "",
-    "longDescription": "La consommation des box internet est loin d’être négligeable : autour de 200 kWh par an pour un usage moyen et avec des variations du simple au double selon votre fournisseur et votre équipement (étude de 60 millions de consommateurs – 2007). Face à cela, une solution s’impose : la débrancher tout simplement ! Pour faciliter les bonnes habitudes nous vous conseillons de la brancher sur une minuterie qui s’éteindra toute seule pendant la nuit par exemple selon les réglages que vous aurez prévus. Sinon, une simple muli-prise fait l'affaire si vous pensez à l'éteindre !",
+    "longDescription": "La consommation des box internet est loin d’être négligeable : autour de 200 kWh par an pour un usage moyen et avec des variations du simple au double selon votre fournisseur et votre équipement. Face à cela, une solution s’impose : la débrancher tout simplement ! Pour faciliter les bonnes habitudes nous vous conseillons de la brancher sur une minuterie qui s’éteindra toute seule pendant la nuit par exemple selon les réglages que vous aurez prévus. Sinon, une simple muli-prise fait l'affaire si vous pensez à l'éteindre !",
     "usage": "Audiovisuel, Petit électroménager, Hi-Fi, Informatique",
     "fluidTypes": [0],
     "pack": 6,
@@ -279,7 +279,7 @@
     "shortName": "Chronokinésie",
     "longName": "Je paramètre mon ordinateur pour qu'il consomme moins d’énergie.",
     "shortDescription": "",
-    "longDescription": "Si vous ne regardez pas la télé, éteignez-la complètement, en appuyant sur son interrupteur. La veille d’un téléviseur que l’on n’éteint qu’avec la télécommande représente entre 10 et 175 kWh/an. Elle représente également un risque de surchauffe voire d’implosion du matériel si celui-ci n’est jamais éteint.",
+    "longDescription": "Réglez votre ordinateur afin qu’il se mette en veille le plus rapidement possible quand vous ne l’utilisez pas. Choisissez un fond noir pour votre écran de veille. Si vous quittez votre poste de travail pour quelques minutes, éteignez l’écran. Eteignez votre ordinateur dès que vous ne l’utilisez plus. Vous allongerez par la même occasion la durée de vie de votre disque dur (il ne se détériorera pas si vous le rallumez plusieurs fois par jour, sauf s’il a plus de 10 ans !). S’il n’y a pas d’interrupteur, il ne reste plus qu’à la débrancher ou à éteindre la multiprise !",
     "usage": "Audiovisuel, Petit électroménager, Hi-Fi, Informatique",
     "fluidTypes": [0],
     "pack": 0,
@@ -310,9 +310,9 @@
   {
     "_id": "0074",
     "shortName": "Barrage",
-    "longName": "J'évite de prélaver mon linge/ma vaisselle.",
+    "longName": "J'évite de pré-laver mon linge/ma vaisselle.",
     "shortDescription": "",
-    "longDescription": "Les machines modernes n’ont plus besoin de prélavage. Si un élément est particulièrement sale, évitez les cycles de prélavage 'linge très sale' ou 'spécial casseroles'. Nettoyez-le à la main avec du savon de Marseille ou du liquide vaisselle, ou faites le tremper 10 minutes dans l’eau chaude. Cela économise en eau et en électricité l'équivalent d'un demi-cycle complet.",
+    "longDescription": "Les machines modernes n’ont plus besoin de pré-lavage. Si un élément est particulièrement sale, évitez les cycles de prélavage 'linge très sale' ou 'spécial casseroles'. Nettoyez-le à la main avec du savon de Marseille ou du liquide vaisselle, ou faites le tremper 10 minutes dans l’eau chaude. Cela économise en eau et en électricité l'équivalent d'un demi-cycle complet.",
     "usage": "Lavage",
     "fluidTypes": [0, 1],
     "pack": 0,
@@ -345,7 +345,7 @@
     "shortName": "Le génie de la lampe",
     "longName": "J’utilise uniquement des ampoules basse consommation dans toutes les pièces de vie.",
     "shortDescription": "",
-    "longDescription": "Remplacez par des ampoules basse consommation, les ampoules qui restent en général allumées plus d’une demi-heure. Vous pouvez ainsi remplacer une ampoule à incandescence de 60 W par une ampoule basse consommation de 15 W. Elle émettra autant de lumière mais pour une consommation d’électricité 4 à 5 fois moins importante. En outre, elle chauffe beaucoup moins et peut durer jusqu’à 15 fois plus longtemps. Le surcoût d’une ampoule basse consommation de 20 W achetée à 12 € à la place d’une ampoule classique de 100 W achetée à 60 centimes est amorti en un an environ. Pour choisir les ampoules les plus économes, consultez le site www.guide-topten.com.",
+    "longDescription": "Remplacez  par des ampoules basse consommation les ampoules qui restent en général allumées plus d’une demi-heure. Vous pouvez ainsi remplacer une ampoule à incandescence de 60 W par une ampoule basse consommation de 15 W. Elle émettra autant de lumière mais pour une consommation d’électricité 4 à 5 fois moins importante. En outre, elle chauffe beaucoup moins et peut durer jusqu’à 15 fois plus longtemps.",
     "usage": "Eclairage",
     "fluidTypes": [0],
     "pack": 7,
@@ -356,7 +356,7 @@
     "shortName": "Frères Lumières",
     "longName": "J’éteins systématiquement les lumières quand je sors d’une pièce.",
     "shortDescription": "",
-    "longDescription": "Pourquoi laisser allumée une pièce vide ? Sachez que 3 ampoules de 75 W qui restent allumées une soirée consomment autant qu’une lessive à 60 °C ! Et la surconsommation des ampoules fluorescentes quand on les éteint et rallume trop souvent est exagérée : il y a un pic de surconsommation, certes, mais d’une fraction de secondes seulement, cela ne justifie sûrement pas qu’on les laisse allumées ! Voilà un gaspillage d’énergie qui peut être évité facilement. Rappelez ce conseil à vos enfants si besoin, plus tôt on acquiert un réflexe, plus il est durable. Le seul cas où vous pouvez laisser allumé est quand l’éclairage provient d’une lampe économique ou d’un tube fluorescent à ballast standard (l’ampoule clignote quand vous l’allumez), et que l’absence ne dépasse pas 15-20 minutes. Dans tous les autres cas, il vaut mieux éteindre.",
+    "longDescription": "Pourquoi laisser allumée une pièce vide ? Sachez que 3 ampoules de 75 W qui restent allumées une soirée consomment autant qu’une lessive à 60 °C.",
     "usage": "Eclairage",
     "fluidTypes": [0],
     "pack": 1,
@@ -376,7 +376,7 @@
   {
     "_id": "0087",
     "shortName": "Lumos Maxima",
-    "longName": "J’ouvre mes rideaux et mes volets dès qu’il fait jour ou dès que je me lève.",
+    "longName": "J’ouvre mes rideaux et mes volets dès qu’il fait jour.",
     "shortDescription": "",
     "longDescription": "Privilégiez toujours les apports de l’éclairage naturel. La lumière du jour est la meilleure pour l’œil humain. Ouvrez volets et rideaux dès vos premières activités et agencez votre espace intérieur pour profiter au mieux de cet éclairage naturel. Évitez, par exemple, de placer des éléments qui font obstacle à la lumière au centre de la pièce. Ne laissez pas les arbres de votre jardin masquer vos fenêtres (même en partie) et choisissez des voilages clairs.",
     "usage": "Eclairage",
diff --git a/src/db/userProfileData.json b/src/db/userProfileData.json
index 82ef873e213761b098e807d3439c90a8937be89f..917109f746e491f236e2f6b69f6206f09fae274e 100644
--- a/src/db/userProfileData.json
+++ b/src/db/userProfileData.json
@@ -4,6 +4,7 @@
     "challengeTypeHash": "",
     "ecogestureHash": "",
     "haveSeenWelcomeModal": false,
+    "notificationEcogesture": ["0085", "0092"],
     "report": true
   }
 ]
diff --git a/src/services/dataChallengeContracts.ts b/src/services/dataChallengeContracts.ts
index 49c0a0f9221ff9e80e654c46047403d74ae5ff94..be2f1ceef68d17cf46b19dc46411f96fc2ce720b 100644
--- a/src/services/dataChallengeContracts.ts
+++ b/src/services/dataChallengeContracts.ts
@@ -141,7 +141,8 @@ export class UserProfile {
   challengeTypeHash: string
   ecogestureHash: string
   haveSeenWelcomeModal: boolean
-  report: boolean
+  notificationEcogesture: string[]
+  report: string
 
   constructor(
     id: string,
@@ -149,13 +150,15 @@ export class UserProfile {
     challengeTypeHash: string,
     ecogestureHash: string,
     haveSeenWelcomeModal: boolean,
-    report: boolean
+    notificationEcogesture: string[],
+    report: string
   ) {
     this.id = id
     this.level = level
     this.challengeTypeHash = challengeTypeHash
     this.ecogestureHash = ecogestureHash
     this.haveSeenWelcomeModal = haveSeenWelcomeModal
+    this.notificationEcogesture = notificationEcogesture
     this.report = report
   }
 }
diff --git a/src/services/queryRunnerService.ts b/src/services/queryRunnerService.ts
index a788e6d6c53959cf36b6c306343daaa6b938c513..1d2f16e6ca4fd4b039acba31791ebd4c4b77f4e8 100644
--- a/src/services/queryRunnerService.ts
+++ b/src/services/queryRunnerService.ts
@@ -211,8 +211,6 @@ export class QueryRunner {
   ) {
     const doctype = this.getRelevantDoctype(fluidType, timeStep)
     if (timeStep === TimeStep.HALF_AN_HOUR) {
-      const lastDayOfPreviousMonth = maxTimePeriod.startDate.plus({ day: -1 })
-
       return this._client
         .find(doctype)
         .where(this.getPredicate(maxTimePeriod, 20))
diff --git a/src/services/userProfileDataManagerService.ts b/src/services/userProfileDataManagerService.ts
index 8364ec1becd93319a0a2e02c0f899c8903c366f5..36ae18ad1f5260e5347256d06fab81665ce3166b 100644
--- a/src/services/userProfileDataManagerService.ts
+++ b/src/services/userProfileDataManagerService.ts
@@ -21,7 +21,7 @@ export default class UserProfileManager implements IUserProfileManager {
   }
 
   public async updateUserProfile(attributes: {
-    [key: string]: string | boolean
+    [key: string]: string | string[] | boolean
   }): Promise<UserProfile | null> {
     const { data: userProfile } = await this._client
       .query(this._client.find(USERPROFILE_DOCTYPE).limitBy(1))
diff --git a/src/styles/components/_ecogesture.scss b/src/styles/components/_ecogesture.scss
index d94171fac8524d03c5880d0c8e638c7cb9ae7276..99dbc784d18b53f5bdc552c70c51406723e73587 100644
--- a/src/styles/components/_ecogesture.scss
+++ b/src/styles/components/_ecogesture.scss
@@ -47,6 +47,23 @@
   justify-content: center;
   width: 100%;
   height: 100%;
+  .ecogesture-card-notif {
+    position: absolute;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    right: 8px;
+    top: 8px;
+    width: 1.25rem;
+    height: 1.25rem;
+    color: $dark-light;
+    border-radius: 50%;
+    border: 1px solid $dark-light;
+    z-index: 1;
+    background: $blue-radial-gradient;
+    font-size: 12px;
+  }
+
   .ec-content {
     display: flex;
     flex-direction: column;