diff --git a/.gitlab/merge_request_templates/default.md b/.gitlab/merge_request_templates/default.md
index 8b164c75d09c71ee45fb7e18edcc3d268c717c7f..9ea6fd832bd528c65ba05fa76b4673afc119b3b5 100644
--- a/.gitlab/merge_request_templates/default.md
+++ b/.gitlab/merge_request_templates/default.md
@@ -1,9 +1,9 @@
 # Related to #000
 
 | :triangular_flag_on_post: Give your MR title the same name that the desired squash commit. In doubt, check the conventional commit [doc][conventional-commits]. examples |
-| --- |
-| **feat(profile)**: add... |
-| **fix(annuaire)**: remove... |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| **feat(profile)**: add...                                                                                                                                                |
+| **fix(annuaire)**: remove...                                                                                                                                             |
 
 ## What does this MR do and why?
 
@@ -28,7 +28,18 @@ More reading on checklists can be found in the "Checklist Manifesto": http://atu
 "It is common to misconceive how checklists function in complex lines of work. They are not comprehensive how-to guides, whether for building a skyscraper or getting a plane out of trouble. They are quick and simple tools aimed to buttress the skills of expert professionals." - Gawande, Atul. The Checklist Manifesto
 --->
 
-### Quality [![Bugs](https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=ecolyo-mr&metric=bugs&token=3d678f5d0b1736ae2a81986f8bf3bcb32672231c)](https://sonarqube.forge.grandlyon.com/dashboard?id=ecolyo-mr) - [![Code Smells](https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=ecolyo-mr&metric=code_smells&token=3d678f5d0b1736ae2a81986f8bf3bcb32672231c)](https://sonarqube.forge.grandlyon.com/dashboard?id=ecolyo-mr)
+### Quality
+
+#### Bugs & smells summary
+
+_🔁 Re-run Quality job to update_
+
+| Current MR                                | Dev                                         |
+| ----------------------------------------- | ------------------------------------------- |
+| [![Bugs][bugs_mr]][dashboard_mr]          | [![Bugs][bugs_dev]][dashboard_dev]          |
+| [![Code Smells][smells_mr]][dashboard_mr] | [![Code Smells][smells_dev]][dashboard_dev] |
+
+#### Quality checklist
 
 - For the code that this change impacts, I believe that the **automated tests validate functionality** that is **highly important to users**. If the existing automated tests do not cover this functionality, I have **added the necessary additional tests** or I have added an issue to describe the automation testing gap and linked it to this MR.
 - I have made sure that the **sonar quality coverage is up to standards**.
@@ -55,4 +66,9 @@ More reading on checklists can be found in the "Checklist Manifesto": http://atu
 - When featured on a self-data project release, I have made sure my **app version** in the manifest and package.json is **incremented** and any relative **changes to the permissions are clearly written and transmitted to Cozy**.
 
 [conventional-commits]: https://www.conventionalcommits.org/en/v1.0.0/
-
+[bugs_mr]: https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=ecolyo-mr&metric=bugs&token=3d678f5d0b1736ae2a81986f8bf3bcb32672231c
+[bugs_dev]: https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=ecolyo&metric=bugs&token=95187318baacb2c9aeab7c8f3046b4b66f08e9b1
+[smells_mr]: https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=ecolyo-mr&metric=code_smells&token=3d678f5d0b1736ae2a81986f8bf3bcb32672231c
+[smells_dev]: https://sonarqube.forge.grandlyon.com/api/project_badges/measure?project=ecolyo&metric=code_smells&token=95187318baacb2c9aeab7c8f3046b4b66f08e9b1
+[dashboard_mr]: https://sonarqube.forge.grandlyon.com/dashboard?id=ecolyo-mr
+[dashboard_dev]: https://sonarqube.forge.grandlyon.com/dashboard?id=ecolyo
diff --git a/src/components/Analysis/Comparison/Comparison.tsx b/src/components/Analysis/Comparison/Comparison.tsx
index 1e2a29a532da7792671ffcc0d5044d9ac173b108..c14165379767884b8c104677e279665d5320708b 100644
--- a/src/components/Analysis/Comparison/Comparison.tsx
+++ b/src/components/Analysis/Comparison/Comparison.tsx
@@ -26,7 +26,6 @@ const Comparison = ({
   const {
     global: { fluidTypes },
     analysis: { period, analysisMonth },
-    chart: { showCompare },
   } = useAppSelector(state => state.ecolyo)
   const dispatch = useAppDispatch()
   const [yearPerformanceIndicators, setYearPerformanceIndicators] = useState<
diff --git a/src/components/Analysis/ProfileComparator/ProfileComparator.spec.tsx b/src/components/Analysis/ProfileComparator/ProfileComparator.spec.tsx
index 20b645a30b567aa285443488c39d063fcc157972..b18f888595a552c694c5afab6c02ad1a82919eea 100644
--- a/src/components/Analysis/ProfileComparator/ProfileComparator.spec.tsx
+++ b/src/components/Analysis/ProfileComparator/ProfileComparator.spec.tsx
@@ -2,7 +2,6 @@ import { render, screen, waitFor } from '@testing-library/react'
 import { userEvent } from '@testing-library/user-event'
 import React from 'react'
 import { Provider } from 'react-redux'
-import { profileData } from 'tests/__mocks__/profileData.mock'
 import {
   createMockEcolyoStore,
   mockAnalysisState,
@@ -34,7 +33,7 @@ jest.mock(
   () => 'mock-profileComparatorRow'
 )
 
-const profileCompleted = { ...profileData, isProfileTypeCompleted: true }
+const profileCompleted = { ...mockProfileState, isProfileTypeCompleted: true }
 const storeProfileCompleted = createMockEcolyoStore({
   profile: profileCompleted,
   analysis: mockAnalysisState,
diff --git a/src/components/Analysis/ProfileComparator/ProfileComparatorRow.tsx b/src/components/Analysis/ProfileComparator/ProfileComparatorRow.tsx
index 6ca531524e14aee6a0b38d27aa3d933997f86beb..5d9fcb185d1862c01d949ba40d0ef8cf7ac7f7df 100644
--- a/src/components/Analysis/ProfileComparator/ProfileComparatorRow.tsx
+++ b/src/components/Analysis/ProfileComparator/ProfileComparatorRow.tsx
@@ -71,7 +71,7 @@ const ProfileComparatorRow = ({
     } else {
       // keeps unit in kWh for electricity and gas
       if (isElecOrGas) {
-        return `${Math.round(fluidLoad)} ${t(`FLUID.${FLUIDNAME}.UNIT`)}`
+        return `${Math.round(fluidLoad)} ${t('FLUID.' + FLUIDNAME + '.UNIT')}`
       }
       return (performanceValue && performanceValue >= 1000) || fluidLoad >= 1000
         ? formatNumberValues(fluidLoad / 1000).toString() +
diff --git a/src/components/Connection/EPGLConnect/EpglForm.tsx b/src/components/Connection/EPGLConnect/EpglForm.tsx
index 0ae8fc6a35f01ddadba355bd9d378ed27f144112..14ba3dd2c8b8fb66ccac624b268666b7f2acacc4 100644
--- a/src/components/Connection/EPGLConnect/EpglForm.tsx
+++ b/src/components/Connection/EPGLConnect/EpglForm.tsx
@@ -34,10 +34,9 @@ const EpglForm = ({ hasCreatedAccount }: { hasCreatedAccount: boolean }) => {
   })
 
   const changeLogin = (value: string) => {
-    if ((/\d/.test(value) && value.length <= 7) || value === '') {
-      setError('')
-      setLogin(value)
-    }
+    if (value.toString().length > 7) return
+    setError('')
+    setLogin(value)
   }
 
   const changePassword = (value: string) => {
diff --git a/src/components/Connection/SGEConnect/SgeConnectView.tsx b/src/components/Connection/SGEConnect/SgeConnectView.tsx
index 6c82063d9e801f488c20453b7e92842440afabd2..2b8a84e087e34da4a116f7981ef9e70ee1360518 100644
--- a/src/components/Connection/SGEConnect/SgeConnectView.tsx
+++ b/src/components/Connection/SGEConnect/SgeConnectView.tsx
@@ -124,18 +124,13 @@ const SgeConnectView = () => {
       value: string | boolean | number,
       maxLength?: number
     ) => {
-      // TODO duplicate with Form login input
-      if (
-        !maxLength ||
-        value === '' ||
-        (/\d/.test(value.toString()) && value.toString().length <= maxLength)
-      ) {
-        const updatedState = {
-          ...currentSgeState,
-          [key]: value,
-        }
-        setCurrentSgeState(updatedState)
+      if (maxLength && value.toString().length > maxLength) return
+
+      const updatedState = {
+        ...currentSgeState,
+        [key]: value,
       }
+      setCurrentSgeState(updatedState)
     },
     [currentSgeState]
   )
diff --git a/src/components/Consumption/ConsumptionView.spec.tsx b/src/components/Consumption/ConsumptionView.spec.tsx
index 722bc1e095e35f5a3b34289362af37c8ec2cc89f..96f96183d9ec8a16a75e399a85cdcbc450744fc4 100644
--- a/src/components/Consumption/ConsumptionView.spec.tsx
+++ b/src/components/Consumption/ConsumptionView.spec.tsx
@@ -168,28 +168,62 @@ describe('ConsumptionView component', () => {
     ).toBeInTheDocument()
   })
 
-  // todo describe and add multiple fluids ?
-  it('should render partner issue Modal', async () => {
-    const updatedStatus = mockInitialEcolyoState.global.fluidStatus
-    updatedStatus[0] = mockExpiredElec
-    const store = createMockEcolyoStore({
-      chart: mockChartStateShowOffline,
-      global: {
-        fluidStatus: updatedStatus,
-        releaseNotes: mockInitialEcolyoState.global.releaseNotes,
-      },
-      modal: {
-        ...mockModalState,
-        partnersIssueModal: { enedis: false, grdf: false, egl: true },
-      },
+  describe('Partner Issue Modal', () => {
+    it('should render partner issue Modal for electricity', async () => {
+      const updatedStatus = mockInitialEcolyoState.global.fluidStatus
+      updatedStatus[0] = { ...updatedStatus[0], maintenance: true }
+      const store = createMockEcolyoStore({
+        chart: mockChartStateShowOffline,
+        global: {
+          fluidStatus: updatedStatus,
+          releaseNotes: mockInitialEcolyoState.global.releaseNotes,
+        },
+        modal: {
+          ...mockModalState,
+          partnersIssueModal: { enedis: true, grdf: false, egl: false },
+        },
+      })
+      mockUpdateProfile.mockResolvedValue(mockTestProfile1)
+      const { container } = render(
+        <Provider store={store}>
+          <ConsumptionView fluidType={FluidType.ELECTRICITY} />
+        </Provider>
+      )
+      await waitFor(() => null, { container })
+      expect(
+        screen.getByRole('presentation', {
+          name: 'consumption.partner_issue_modal.accessibility_title',
+        })
+      ).toBeInTheDocument()
+    })
+
+    it('should render partner issue Modal for water', async () => {
+      const updatedStatus = mockInitialEcolyoState.global.fluidStatus
+      updatedStatus[1] = { ...updatedStatus[1], maintenance: true }
+      const store = createMockEcolyoStore({
+        chart: mockChartStateShowOffline,
+        global: {
+          fluidStatus: updatedStatus,
+          releaseNotes: mockInitialEcolyoState.global.releaseNotes,
+        },
+        modal: {
+          ...mockModalState,
+          partnersIssueModal: { enedis: false, grdf: false, egl: true },
+        },
+      })
+      mockUpdateProfile.mockResolvedValue(mockTestProfile1)
+      const { container } = render(
+        <Provider store={store}>
+          <ConsumptionView fluidType={FluidType.WATER} />
+        </Provider>
+      )
+      await waitFor(() => null, { container })
+      expect(
+        screen.getByRole('presentation', {
+          name: 'consumption.partner_issue_modal.accessibility_title',
+        })
+      ).toBeInTheDocument()
     })
-    mockUpdateProfile.mockResolvedValue(mockTestProfile1)
-    render(
-      <Provider store={store}>
-        <ConsumptionView fluidType={FluidType.ELECTRICITY} />
-      </Provider>
-    )
-    expect(screen.getByRole('dialog')).toBeInTheDocument()
   })
   it('should show expired modal when a GRDF consent is expired', () => {
     const updatedStatus = mockInitialEcolyoState.global.fluidStatus
diff --git a/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.tsx b/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.tsx
index f88a939c5fd228261016f74c02f0c3a674a14e70..2c0381eb6f25890ee3a081d8f4d7801222095876 100644
--- a/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.tsx
+++ b/src/components/ConsumptionVisualizer/InfoDataConsumptionVisualizer.tsx
@@ -1,12 +1,10 @@
 import { Button } from '@material-ui/core'
+import { useMoveToLatestDate } from 'components/Hooks/useMoveToDate'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { DataloadState, FluidType } from 'enums'
 import { DateTime } from 'luxon'
 import { Dataload } from 'models'
 import React, { useCallback, useState } from 'react'
-import DateChartService from 'services/dateChart.service'
-import { setCurrentIndex, setSelectedDate } from 'store/chart/chart.slice'
-import { useAppDispatch, useAppSelector } from 'store/hooks'
 import NoDataModal from './NoDataModal'
 import './infoDataConsumptionVisualizer.scss'
 
@@ -22,26 +20,13 @@ const InfoDataConsumptionVisualizer = ({
   lastDataDate,
 }: InfoDataConsumptionVisualizerProps) => {
   const { t } = useI18n()
-  const dispatch = useAppDispatch()
-  const { currentTimeStep } = useAppSelector(state => state.ecolyo.chart)
   const [openNoDataModal, setOpenNoDataModal] = useState<boolean>(false)
+  const { moveToLatestDate } = useMoveToLatestDate(lastDataDate)
 
   const toggleNoDataModal = useCallback(() => {
     setOpenNoDataModal(prev => !prev)
   }, [])
 
-  const moveToDate = () => {
-    if (lastDataDate) {
-      const dateChartService = new DateChartService()
-      const updatedIndex = dateChartService.defineDateIndex(
-        currentTimeStep,
-        lastDataDate
-      )
-      dispatch(setSelectedDate(lastDataDate))
-      dispatch(setCurrentIndex(updatedIndex))
-    }
-  }
-
   if (!dataload) {
     return <></>
   }
@@ -60,7 +45,7 @@ const InfoDataConsumptionVisualizer = ({
         ? 'last_valid_data_multi'
         : 'last_available_data'
     return (
-      <Button className="btnText" onClick={moveToDate}>
+      <Button className="btnText" onClick={moveToLatestDate}>
         {t(`consumption_visualizer.${key}`, {
           date: lastDate,
         })}
diff --git a/src/components/FluidChart/FluidChart.tsx b/src/components/FluidChart/FluidChart.tsx
index 2e87f46b2f5fa66dcc83c481adddcf7666f82acd..c03ea3ad25e1174fc717a7193223ccb7a4289fc5 100644
--- a/src/components/FluidChart/FluidChart.tsx
+++ b/src/components/FluidChart/FluidChart.tsx
@@ -3,6 +3,7 @@ import LegendComparisonIcon from 'assets/icons/ico/legendComparison.svg'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import StyledSwitch from 'components/CommonKit/Switch/StyledSwitch'
 import useExploration from 'components/Hooks/useExploration'
+import { useMoveToLatestDate } from 'components/Hooks/useMoveToDate'
 import { useClient } from 'cozy-client'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { FluidType, TimeStep, UserExplorationID } from 'enums'
@@ -10,13 +11,7 @@ import { DateTime } from 'luxon'
 import React, { useCallback, useEffect, useState } from 'react'
 import { useNavigate } from 'react-router-dom'
 import ConsumptionService from 'services/consumption.service'
-import DateChartService from 'services/dateChart.service'
-import {
-  setCurrentIndex,
-  setSelectedDate,
-  setShowCompare,
-  setShowOfflineData,
-} from 'store/chart/chart.slice'
+import { setShowCompare, setShowOfflineData } from 'store/chart/chart.slice'
 import { useAppDispatch, useAppSelector } from 'store/hooks'
 import { getFluidName, getKonnectorSlug, isKonnectorActive } from 'utils/utils'
 import FluidChartSwipe from './FluidChartSwipe'
@@ -37,6 +32,9 @@ const FluidChart = ({ fluidType }: { fluidType: FluidType }) => {
 
   const currentFluidStatus = fluidStatus[fluidType]
   const isFluidConnected = isKonnectorActive(fluidStatus, fluidType)
+  const { moveToLatestDate } = useMoveToLatestDate(
+    currentFluidStatus?.lastDataDate
+  )
   const [, setValidExploration] = useExploration()
   const [containsHalfHourData, setContainsHalfHourData] =
     useState<boolean>(false)
@@ -103,19 +101,6 @@ const FluidChart = ({ fluidType }: { fluidType: FluidType }) => {
     [lowercaseFluidType, lowercaseTimeStep, t]
   )
 
-  // TODO if we keep this, use the same existing function
-  const moveToDate = () => {
-    if (currentFluidStatus?.lastDataDate) {
-      const dateChartService = new DateChartService()
-      const updatedIndex = dateChartService.defineDateIndex(
-        currentTimeStep,
-        currentFluidStatus.lastDataDate
-      )
-      dispatch(setSelectedDate(currentFluidStatus.lastDataDate))
-      dispatch(setCurrentIndex(updatedIndex))
-    }
-  }
-
   const toggleModalConnection = () => {
     switch (fluidType) {
       case FluidType.ELECTRICITY:
@@ -132,7 +117,7 @@ const FluidChart = ({ fluidType }: { fluidType: FluidType }) => {
 
   const LastDataValid = fluidType !== FluidType.MULTIFLUID && (
     <div className="lastValidData">
-      <Button className="btnText" onClick={moveToDate}>
+      <Button className="btnText" onClick={moveToLatestDate}>
         {t('consumption_visualizer.last_valid_data', {
           date: currentFluidStatus?.lastDataDate?.toFormat('dd/MM/yy') ?? '-',
         })}
diff --git a/src/components/Hooks/useMoveToDate.tsx b/src/components/Hooks/useMoveToDate.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..d0a432540b4c12746a40043a270207fe8b38f2f0
--- /dev/null
+++ b/src/components/Hooks/useMoveToDate.tsx
@@ -0,0 +1,22 @@
+import { DateTime } from 'luxon'
+import DateChartService from 'services/dateChart.service'
+import { setCurrentIndex, setSelectedDate } from 'store/chart/chart.slice'
+import { useAppDispatch, useAppSelector } from 'store/hooks'
+
+export const useMoveToLatestDate = (lastDataDate: DateTime | null) => {
+  const dispatch = useAppDispatch()
+  const { currentTimeStep } = useAppSelector(state => state.ecolyo.chart)
+
+  const moveToLatestDate = () => {
+    if (!lastDataDate) return
+    const dateChartService = new DateChartService()
+    const updatedIndex = dateChartService.defineDateIndex(
+      currentTimeStep,
+      lastDataDate
+    )
+    dispatch(setSelectedDate(lastDataDate))
+    dispatch(setCurrentIndex(updatedIndex))
+  }
+
+  return { moveToLatestDate }
+}
diff --git a/src/components/Options/ExportData/Modals/exportLoadingModal.tsx b/src/components/Options/ExportData/Modals/exportLoadingModal.tsx
index 151eb496891745a81bf0736db48775fe320b7e74..f25b2e28cd389aa8e53eca6aa830f70f4979bf73 100644
--- a/src/components/Options/ExportData/Modals/exportLoadingModal.tsx
+++ b/src/components/Options/ExportData/Modals/exportLoadingModal.tsx
@@ -68,8 +68,9 @@ const ExportLoadingModal = ({
       const fluidName = getFluidName(fluidType)
       dataRow[t('export.month')] = formatTwoDigits(dataload.date.month)
       dataRow[t('export.year')] = dataload.date.year
-      dataRow[`${t('export.consumption')} (${t(`FLUID.${fluidName}.UNIT`)})`] =
-        dataload.value
+      dataRow[
+        `${t('export.consumption')} (${t('FLUID.' + fluidName + '.UNIT')})`
+      ] = dataload.value
       if (fluidType === FluidType.ELECTRICITY) {
         const emas = new EnedisMonthlyAnalysisDataService(client)
         const maxPowerEntities = await emas.getMaxPowerByDate(
diff --git a/src/components/PartnerIssue/PartnerIssueModal.tsx b/src/components/PartnerIssue/PartnerIssueModal.tsx
index 14549c0270cc6531bc3ad17783ccd3e39eeedb0a..d6158bd696ecd68900096f8994e68a8d3f8532e3 100644
--- a/src/components/PartnerIssue/PartnerIssueModal.tsx
+++ b/src/components/PartnerIssue/PartnerIssueModal.tsx
@@ -41,7 +41,7 @@ const PartnerIssueModal = ({
       onClose={(event, reason): void => {
         event && reason !== 'backdropClick' && handleCloseClick(issuedFluid)
       }}
-      aria-labelledby="accessibility-title"
+      aria-label={t('consumption.partner_issue_modal.accessibility_title')}
       classes={{
         root: 'modal-root',
         paper: 'modal-paper',
diff --git a/src/components/PartnerIssue/__snapshots__/PartnerIssueModal.spec.tsx.snap b/src/components/PartnerIssue/__snapshots__/PartnerIssueModal.spec.tsx.snap
index c133766cab34b402c000f5244f9c4ec9c6aed62f..a0196786c26b18a6c58302c49e56c65b3c1a024b 100644
--- a/src/components/PartnerIssue/__snapshots__/PartnerIssueModal.spec.tsx.snap
+++ b/src/components/PartnerIssue/__snapshots__/PartnerIssueModal.spec.tsx.snap
@@ -8,6 +8,7 @@ exports[`PartnerIssueModal component should render correctly 1`] = `
     aria-hidden="true"
   />
   <div
+    aria-label="consumption.partner_issue_modal.accessibility_title"
     class="MuiDialog-root modal-root"
     role="presentation"
     style="position: fixed; z-index: 1500; right: 0px; bottom: 0px; top: 0px; left: 0px;"
@@ -28,7 +29,6 @@ exports[`PartnerIssueModal component should render correctly 1`] = `
       tabindex="-1"
     >
       <div
-        aria-labelledby="accessibility-title"
         class="MuiPaper-root MuiDialog-paper modal-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiPaper-elevation24 MuiPaper-rounded"
         role="dialog"
       >
diff --git a/src/components/ProfileType/ProfileTypeFormNumber/ProfileTypeFormNumber.tsx b/src/components/ProfileType/ProfileTypeFormNumber/ProfileTypeFormNumber.tsx
index ded85add46f1431517a14bbe7fbbf1f454691f5c..61d317064e8565d87c1793b4d5d15b0b7c11cb89 100644
--- a/src/components/ProfileType/ProfileTypeFormNumber/ProfileTypeFormNumber.tsx
+++ b/src/components/ProfileType/ProfileTypeFormNumber/ProfileTypeFormNumber.tsx
@@ -1,4 +1,5 @@
 /* eslint-disable jsx-a11y/no-autofocus */
+import { InputAdornment, OutlinedInput } from '@material-ui/core'
 import FormNavigation from 'components/CommonKit/FormNavigation/FormNavigation'
 import 'components/ProfileType/profileTypeForm.scss'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
@@ -6,7 +7,6 @@ import { ProfileTypeStepForm } from 'enums'
 import { ProfileType, ProfileTypeAnswer, ProfileTypeValues } from 'models'
 import React, { useCallback, useEffect, useState } from 'react'
 import { useAppSelector } from 'store/hooks'
-import { OutlinedInput, TextField, InputAdornment } from '@material-ui/core'
 
 interface ProfileTypeFormNumberProps {
   step: ProfileTypeStepForm
diff --git a/src/locales/fr.json b/src/locales/fr.json
index 3736e487c75c74a5d117b2409c9b1a6b39c38838..f784635fc5c5e585cd463d23ae7f0ed0c13b60a2 100644
--- a/src/locales/fr.json
+++ b/src/locales/fr.json
@@ -326,6 +326,7 @@
     },
     "partner_issue_modal": {
       "title": "Attention\u00a0!",
+      "accessibility_title": "Modale de maintenance partenaire",
       "error_connect_gaz": "La connexion à vos données de <span class='gaz'>gaz</span> est actuellement dysfonctionnelle (Maintenance chez notre partenaire <span class='gaz'>GRDF</span> ou dans notre service)",
       "error_connect_elec": "La connexion à vos données d'<span class='elec'>électricité</span> est actuellement dysfonctionnelle (Maintenance chez notre partenaire <span class='elec'>Enedis</span> ou dans notre service)",
       "error_connect_water": "La connexion à vos données d'<span class='water'>eau</span> est actuellement dysfonctionnelle (Maintenance chez notre partenaire <span class='water'>Eau Publique du Grand Lyon</span> ou dans notre service)",
diff --git a/src/services/account.service.ts b/src/services/account.service.ts
index 5692a60656eb186725d3d77575ef4c77890b349b..3f3c782df013c3a84d670bb751526369e09dd119 100644
--- a/src/services/account.service.ts
+++ b/src/services/account.service.ts
@@ -32,22 +32,11 @@ export default class AccountService {
     this._client = _client
   }
 
-  // TODO no need for this method
-  private buildAccountAttributes(
-    konnector: Konnector,
-    authData: AccountEGLData | AccountSgeData | AccountGRDFData
-  ): AccountAttributes {
-    return build(konnector, authData)
-  }
-
   public async createAccount(
     konnector: Konnector,
-    accountAuthData: AccountEGLData | AccountSgeData | AccountGRDFData
+    authData: AccountEGLData | AccountSgeData | AccountGRDFData
   ): Promise<Account> {
-    const accountAttributes = this.buildAccountAttributes(
-      konnector,
-      accountAuthData
-    )
+    const accountAttributes: AccountAttributes = build(konnector, authData)
     return createAccount(this._client, konnector, accountAttributes)
   }
 
diff --git a/src/services/queryRunner.service.spec.ts b/src/services/queryRunner.service.spec.ts
index 656180de012107559449b5f0b7a78ed61419aa5a..bf9dc310c125935eb9266ce5bdd1094edff7414a 100644
--- a/src/services/queryRunner.service.spec.ts
+++ b/src/services/queryRunner.service.spec.ts
@@ -1132,12 +1132,11 @@ describe('queryRunner service', () => {
         skip: 0,
       }
       mockClient.query.mockResolvedValue(mockQueryResult)
-      const result: number | Dataload | null =
-        await queryRunner.fetchFluidMaxData(
-          mockTimePeriod,
-          TimeStep.DAY,
-          FluidType.ELECTRICITY
-        )
+      const result = await queryRunner.fetchFluidMaxData(
+        mockTimePeriod,
+        TimeStep.DAY,
+        FluidType.ELECTRICITY
+      )
       expect(result).toBe(30.33)
     })
 
@@ -1165,12 +1164,11 @@ describe('queryRunner service', () => {
       mockClient.query
         .mockResolvedValueOnce(mockQueryResult)
         .mockResolvedValueOnce(mockQueryResult2)
-      const result: number | Dataload | null =
-        await queryRunner.fetchFluidMaxData(
-          mockTimePeriod,
-          TimeStep.HALF_AN_HOUR,
-          FluidType.ELECTRICITY
-        )
+      const result = await queryRunner.fetchFluidMaxData(
+        mockTimePeriod,
+        TimeStep.HALF_AN_HOUR,
+        FluidType.ELECTRICITY
+      )
       expect(result).toBe(7.82)
     })
 
@@ -1198,12 +1196,11 @@ describe('queryRunner service', () => {
       mockClient.query
         .mockResolvedValueOnce(mockQueryResult)
         .mockResolvedValueOnce(mockQueryResult2)
-      const result: number | Dataload | null =
-        await queryRunner.fetchFluidMaxData(
-          mockTimePeriod,
-          TimeStep.HALF_AN_HOUR,
-          FluidType.ELECTRICITY
-        )
+      const result = await queryRunner.fetchFluidMaxData(
+        mockTimePeriod,
+        TimeStep.HALF_AN_HOUR,
+        FluidType.ELECTRICITY
+      )
       expect(result).toBe(0)
     })
 
@@ -1217,12 +1214,11 @@ describe('queryRunner service', () => {
         }),
       }
       mockClient.query.mockRejectedValue(new Error())
-      const result: number | Dataload | null =
-        await queryRunner.fetchFluidMaxData(
-          mockTimePeriod,
-          TimeStep.DAY,
-          FluidType.ELECTRICITY
-        )
+      const result = await queryRunner.fetchFluidMaxData(
+        mockTimePeriod,
+        TimeStep.DAY,
+        FluidType.ELECTRICITY
+      )
       expect(result).toBeNull()
     })
 
@@ -1235,12 +1231,11 @@ describe('queryRunner service', () => {
           zone: 'utc',
         }),
       }
-      const result: number | Dataload | null =
-        await queryRunner.fetchFluidMaxData(
-          mockTimePeriod,
-          TimeStep.DAY,
-          unknownFluidType
-        )
+      const result = await queryRunner.fetchFluidMaxData(
+        mockTimePeriod,
+        TimeStep.DAY,
+        unknownFluidType
+      )
       expect(result).toBeNull()
     })
 
@@ -1253,12 +1248,11 @@ describe('queryRunner service', () => {
           zone: 'utc',
         }),
       }
-      const result: number | Dataload | null =
-        await queryRunner.fetchFluidMaxData(
-          mockTimePeriod,
-          unknownTimeStep,
-          FluidType.ELECTRICITY
-        )
+      const result = await queryRunner.fetchFluidMaxData(
+        mockTimePeriod,
+        unknownTimeStep,
+        FluidType.ELECTRICITY
+      )
       expect(result).toBeNull()
     })
   })
diff --git a/tests/__mocks__/fluidStatusData.mock.ts b/tests/__mocks__/fluidStatusData.mock.ts
index 2943514e3b8487518d8a48a4f1625269c9fdf8ec..ddb5ab5f4303299e070f6fbfed2a789b937c0115 100644
--- a/tests/__mocks__/fluidStatusData.mock.ts
+++ b/tests/__mocks__/fluidStatusData.mock.ts
@@ -215,7 +215,7 @@ export const SgeStatusWithAccount: FluidStatus = {
 export const mockExpiredElec: FluidStatus = {
   fluidType: FluidType.ELECTRICITY,
   status: FluidState.KONNECTOR_NOT_FOUND,
-  maintenance: true,
+  maintenance: false,
   firstDataDate: null,
   lastDataDate: null,
   connection: {
diff --git a/tests/__mocks__/profileData.mock.ts b/tests/__mocks__/profileData.mock.ts
deleted file mode 100644
index 82a92073ab89b9f5aed02680d149d039b8d5bdb3..0000000000000000000000000000000000000000
--- a/tests/__mocks__/profileData.mock.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { DateTime } from 'luxon'
-import { Profile } from 'models'
-
-// TODO to remove ?
-export const profileData: Profile = {
-  _id: '4d9403218ef13e65b2e3a8ad1700bc41',
-  _rev: '16-57473da4fc26315247c217083175dfa0',
-  id: '4d9403218ef13e65b2e3a8ad1700bc41',
-  ecogestureHash: '9798a0aaccb47cff906fc4931a2eff5f9371dd8b',
-  challengeHash: '1136feb6185c7643e071d14180c0e95782aa4ba3',
-  duelHash: '1136feb6185c7643e071d14180c0e95782aa4ba3',
-  quizHash: '1136feb6185c7643e071d14180c0e95782aa4ba3',
-  explorationHash: '1136feb6185c7643e071d14180c0e95782aa4ba3',
-  isFirstConnection: true,
-  sendConsumptionAlert: false,
-  waterDailyConsumptionLimit: 0,
-  mailToken: '',
-  lastConnectionDate: DateTime.fromISO('2020-11-03T00:00:00.000Z', {
-    zone: 'utc',
-  }),
-  haveSeenLastAnalysis: true,
-  monthlyAnalysisDate: DateTime.fromISO('2020-11-03T00:00:00.000Z', {
-    zone: 'utc',
-  }),
-  sendAnalysisNotification: false,
-  isProfileTypeCompleted: false,
-  onboarding: {
-    isWelcomeSeen: false,
-  },
-  haveSeenEcogestureModal: false,
-  isProfileEcogestureCompleted: false,
-  activateHalfHourDate: DateTime.fromISO('2020-11-03T00:00:00.000Z', {
-    zone: 'utc',
-  }),
-  customPopupDate: DateTime.fromISO('2020-11-03T00:00:00.000Z', {
-    zone: 'utc',
-  }),
-  partnersIssueSeenDate: {
-    enedis: DateTime.fromISO('2020-11-03T00:00:00.000Z', {
-      zone: 'utc',
-    }),
-    egl: DateTime.fromISO('2020-11-03T00:00:00.000Z', {
-      zone: 'utc',
-    }),
-    grdf: DateTime.fromISO('2020-11-03T00:00:00.000Z', {
-      zone: 'utc',
-    }),
-  },
-}