diff --git a/index.js b/index.js
index 7577d839f764b48a5abc568bc6a3c376c3c6072a..118d98e83f8d82ae28265f3ccd8ee31bce8c0967 100644
--- a/index.js
+++ b/index.js
@@ -32,13 +32,15 @@ const {
   getBoConsent,
   deleteBoConsent,
 } = __webpack_require__(1557)
-const { verifyUserIdentity } = __webpack_require__(1595)
-const { activateContract } = __webpack_require__(1598)
-const { verifyContract } = __webpack_require__(1599)
-const { terminateContract } = __webpack_require__(1601)
-const { getContractStartDate } = __webpack_require__(1602)
-const { getAccount, saveAccountData } = __webpack_require__(1603)
-const { iSLocal } = __webpack_require__(1604)
+const {
+  verifyUserIdentity,
+  activateContract,
+  verifyContract,
+  terminateContract,
+  getContractStartDate,
+} = __webpack_require__(1595)
+const { getAccount, saveAccountData } = __webpack_require__(1604)
+const { isLocal } = __webpack_require__(1605)
 
 moment.locale('fr') // set the language
 moment.tz.setDefault('Europe/Paris') // set the timezone
@@ -53,7 +55,7 @@ let startDailyDateString = startDailyDate.format('YYYY-MM-DD')
 const startLoadDate = moment().subtract(7, 'day')
 const endDate = moment()
 const endDateString = endDate.format('YYYY-MM-DD')
-const ACCOUNT_ID = iSLocal() ? 'default_account_id' : 'enedis-sge-grandlyon'
+const ACCOUNT_ID = isLocal() ? 'default_account_id' : 'enedis-sge-grandlyon'
 
 module.exports = new BaseKonnector(start)
 
@@ -73,11 +75,9 @@ async function start(fields, cozyParameters) {
   let baseUrl = fields.wso2BaseUrl
   let apiAuthKey = fields.apiToken
   let contractId = fields.contractId
-  //TODO switch variable to english
   let sgeLogin = fields.sgeLogin
   let boToken = fields.boToken
   let boBaseUrl = fields.boBaseUrl
-  //TODO: Verify if condition is working in local and on build version
   if (cozyParameters && Object.keys(cozyParameters).length !== 0) {
     log('debug', 'Found COZY_PARAMETERS')
     baseUrl = cozyParameters.secret.wso2BaseUrl
@@ -111,7 +111,7 @@ async function start(fields, cozyParameters) {
    */
   log('info', 'User Logging...')
 
-  if (await isFirstStart(await getAccount(ACCOUNT_ID))) {
+  if (isFirstStart(await getAccount(ACCOUNT_ID))) {
     const user = await verifyUserIdentity(fields, baseUrl, apiAuthKey, sgeLogin)
 
     let consent = await createBoConsent(
@@ -249,11 +249,7 @@ async function deleteConsent(
       pointId,
       userConsent.serviceID
     )
-    await deleteBoConsent(
-      boBaseUrl,
-      boToken,
-      userConsent.ID ? userConsent.ID : 0
-    )
+    await deleteBoConsent(boBaseUrl, boToken, userConsent.ID || 0)
   } else {
     log('error', `No service id retrieved from BO`)
     throw errors.VENDOR_DOWN
@@ -223581,6 +223577,18 @@ async function formateDataForDoctype(data) {
   })
 }
 
+/**
+ * Check if response contains contracts
+ * @param {string} parsedReply
+ * @return {boolean}
+ */
+function checkContractExists(parsedReply) {
+  const json = JSON.stringify(parsedReply)
+  return JSON.parse(json)['Envelope']['Body'][
+    'rechercherServicesSouscritsMesuresResponse'
+  ]['servicesSouscritsMesures']
+}
+
 /**
  * Format tag in order to be manipulated easly
  * @param {string} name
@@ -223616,6 +223624,7 @@ module.exports = {
   parseContracts,
   parseContractStartDate,
   parseServiceId,
+  checkContractExists,
 }
 
 
@@ -227973,60 +227982,22 @@ module.exports = function isAxiosError(payload) {
 /* 1595 */
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
-// @ts-check
-const { log, errors } = __webpack_require__(1)
-const { findUserPdl } = __webpack_require__(1596)
-const { getInseeCode } = __webpack_require__(1597)
-
-/**
- * Verify user identity
- * @param {object} fields
- * @param {string} baseUrl
- * @param {string} apiAuthKey
- * @param {string} loginUtilisateur
- * @param {boolean} isAlternateStart
- * @returns {Promise<User>}
- */
-async function verifyUserIdentity(
-  fields,
-  baseUrl,
-  apiAuthKey,
-  loginUtilisateur,
-  isAlternateStart = false
-) {
-  const inseeCode = await getInseeCode(fields.postalCode, fields.city)
-
-  const pdl = await findUserPdl(
-    `${baseUrl}/enedis_SDE_recherche-point/1.0`,
-    apiAuthKey,
-    loginUtilisateur,
-    fields.lastname,
-    fields.address,
-    fields.postalCode,
-    inseeCode
-  )
-
-  if (fields.pointId != pdl) {
-    log('error', 'PointId does not match')
-    if (isAlternateStart) {
-      throw errors.TERMS_VERSION_MISMATCH
-    } else {
-      throw errors.LOGIN_FAILED
-    }
-  }
+const { activateContract } = __webpack_require__(1596)
+const { getContractStartDate } = __webpack_require__(1597)
+const { terminateContract } = __webpack_require__(1598)
+const { verifyContract } = __webpack_require__(1599)
+const { findUserPdl } = __webpack_require__(1601)
+const { verifyUserIdentity } = __webpack_require__(1602)
 
-  return {
-    lastname: fields.lastname,
-    firstname: fields.firstname,
-    pointId: fields.pointId,
-    inseeCode,
-    postalCode: fields.postalCode,
-    address: fields.address,
-  }
+module.exports = {
+  activateContract,
+  getContractStartDate,
+  terminateContract,
+  verifyContract,
+  findUserPdl,
+  verifyUserIdentity,
 }
 
-module.exports = { verifyUserIdentity }
-
 
 /***/ }),
 /* 1596 */
@@ -228035,8 +228006,8 @@ module.exports = { verifyUserIdentity }
 // @ts-check
 const { log, errors } = __webpack_require__(1)
 const soapRequest = __webpack_require__(1331)
-const { parseUserPdl, parseTags, parseValue } = __webpack_require__(1555)
-const { rechercherPoint } = __webpack_require__(1556)
+const { parseTags, parseValue, parseServiceId } = __webpack_require__(1555)
+const { commanderCollectePublicationMesures } = __webpack_require__(1556)
 const xml2js = __webpack_require__(1513)
 
 /**
@@ -228044,38 +228015,44 @@ const xml2js = __webpack_require__(1513)
  * @param {string} apiAuthKey
  * @param {string} appLogin
  * @param {string} name
- * @param {string} address
- * @param {string} postalCode
- * @param {string} inseeCode
- * @return {Promise<string | null>} User Pdl
+ * @param {number} pointId
+ * @param {string} startDate
+ * @param {string} endDate
+ * @return {Promise<number>} User contractId
  */
-async function findUserPdl(
+async function activateContract(
   url,
   apiAuthKey,
   appLogin,
+  contractId,
   name,
-  address,
-  postalCode,
-  inseeCode
+  pointId,
+  startDate,
+  endDate
 ) {
-  log('info', 'Fetching user data')
+  log('info', 'activateContract')
   const sgeHeaders = {
     'Content-Type': 'text/xml;charset=UTF-8',
     apikey: apiAuthKey,
   }
 
   const { response } = await soapRequest({
-    url: url,
+    url: `${url}/enedis_SGE_CommandeCollectePublicationMesures/1.0`,
     headers: sgeHeaders,
-    xml: rechercherPoint(appLogin, name, postalCode, inseeCode, address),
+    xml: commanderCollectePublicationMesures(
+      appLogin,
+      contractId,
+      pointId,
+      name,
+      startDate,
+      endDate
+    ),
   }).catch(err => {
-    log('error', 'rechercherPointResponse')
+    log('error', 'commanderCollectePublicationMesures')
     log('error', err)
     throw errors.LOGIN_FAILED
   })
 
-  console.log(rechercherPoint(appLogin, name, postalCode, inseeCode, address))
-
   const parsedReply = await xml2js.parseStringPromise(response.body, {
     tagNameProcessors: [parseTags],
     valueProcessors: [parseValue],
@@ -228083,18 +228060,19 @@ async function findUserPdl(
   })
 
   try {
-    return parseUserPdl(parsedReply)
+    return parseServiceId(parsedReply)
   } catch (error) {
-    log('error', 'Error while parsing user PDL: ' + error)
+    log('error', 'Error while activating contract: ' + error)
     log(
       'error',
       `Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}`
     )
+    //TODO: handle SGT4B8: Il existe déjà plusieurs demandes en cours sur le point ?
     throw errors.LOGIN_FAILED
   }
 }
 
-module.exports = { findUserPdl }
+module.exports = { activateContract }
 
 
 /***/ }),
@@ -228102,44 +228080,58 @@ module.exports = { findUserPdl }
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
 // @ts-check
-const { default: axios } = __webpack_require__(1558)
 const { log, errors } = __webpack_require__(1)
-
-const API_URL = 'https://apicarto.ign.fr/api/codes-postaux/communes'
+const soapRequest = __webpack_require__(1331)
+const {
+  parseTags,
+  parseValue,
+  parseContractStartDate,
+} = __webpack_require__(1555)
+const xml2js = __webpack_require__(1513)
+const { consulterDonneesTechniquesContractuelles } = __webpack_require__(1556)
 
 /**
- * Return inseeCode given a postalCode
- * @param {string} postalCode
- * @param {string} [city]
- * @return {Promise<string>} inseeCode
+ * Get user contract start date
+ * @param {string} url
+ * @param {string} apiAuthKey
+ * @param {string} userLogin
+ * @param {number} pointId
+ * @returns {Promise<string>}
  */
-async function getInseeCode(postalCode, city) {
-  try {
-    log('info', `Query getInseeCode for postalCode ${postalCode} / ${city}`)
-    const response = await axios.get(`${API_URL}/${postalCode}`)
+async function getContractStartDate(url, apiAuthKey, userLogin, pointId) {
+  log('info', 'Fetching data start date')
+  const sgeHeaders = {
+    'Content-Type': 'text/xml;charset=UTF-8',
+    apikey: apiAuthKey,
+  }
 
-    if (response.data.length === 1) {
-      return response.data[0].codeCommune
-    } else {
-      if (!city) throw errors.USER_ACTION_NEEDED
+  const { response } = await soapRequest({
+    url: `${url}/enedis_SGE_ConsultationDonneesTechniquesContractuelles/1.0`,
+    headers: sgeHeaders,
+    xml: consulterDonneesTechniquesContractuelles(pointId, userLogin),
+  }).catch(err => {
+    log('error', 'Error while fetching contract start date : ' + err)
+    throw errors.VENDOR_DOWN
+  })
 
-      const filteredResponse = response.data.filter(
-        town => town.nomCommune.toLowerCase() === city.toLowerCase()
-      )
-      return filteredResponse[0].codeCommune
-    }
+  const result = await xml2js.parseStringPromise(response.body, {
+    tagNameProcessors: [parseTags],
+    valueProcessors: [parseValue],
+    explicitArray: false,
+  })
+  try {
+    return parseContractStartDate(result)
   } catch (error) {
+    log('error', 'Error while processing contract start date: ' + error)
     log(
       'error',
-      `Query getInseeCode failed for postalCode ${postalCode} / ${city}`
+      `Enedis issue ${result.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${result.Envelope.Body.Fault.faultstring}`
     )
-    throw errors.USER_ACTION_NEEDED
+    throw errors.NOT_EXISTING_DIRECTORY
   }
 }
 
-module.exports = {
-  getInseeCode,
-}
+module.exports = { getContractStartDate }
 
 
 /***/ }),
@@ -228149,51 +228141,45 @@ module.exports = {
 // @ts-check
 const { log, errors } = __webpack_require__(1)
 const soapRequest = __webpack_require__(1331)
-const { parseTags, parseValue, parseServiceId } = __webpack_require__(1555)
-const { commanderCollectePublicationMesures } = __webpack_require__(1556)
+const { parseTags, parseValue } = __webpack_require__(1555)
+const { commanderArretServiceSouscritMesures } = __webpack_require__(1556)
 const xml2js = __webpack_require__(1513)
 
 /**
  * @param {string} url
  * @param {string} apiAuthKey
  * @param {string} appLogin
- * @param {string} name
  * @param {number} pointId
- * @param {string} startDate
- * @param {string} endDate
- * @return {Promise<number>} User contractId
+ * @param {number} serviceId
+ * @return {Promise<string>} User contractId
  */
-async function activateContract(
+async function terminateContract(
   url,
   apiAuthKey,
   appLogin,
   contractId,
-  name,
   pointId,
-  startDate,
-  endDate
+  serviceId
 ) {
-  log('info', 'activateContract')
+  log('info', 'terminateContract')
   const sgeHeaders = {
     'Content-Type': 'text/xml;charset=UTF-8',
     apikey: apiAuthKey,
   }
 
   const { response } = await soapRequest({
-    url: `${url}/enedis_SGE_CommandeCollectePublicationMesures/1.0`,
+    url: `${url}/enedis_SGE_CommandeArretServiceSouscritMesures/1.0`,
     headers: sgeHeaders,
-    xml: commanderCollectePublicationMesures(
+    xml: commanderArretServiceSouscritMesures(
       appLogin,
       contractId,
       pointId,
-      name,
-      startDate,
-      endDate
+      serviceId
     ),
   }).catch(err => {
-    log('error', 'commanderCollectePublicationMesures')
+    log('error', 'commanderArretServiceSouscritMesures')
     log('error', err)
-    throw errors.LOGIN_FAILED
+    throw errors.VENDOR_DOWN
   })
 
   const parsedReply = await xml2js.parseStringPromise(response.body, {
@@ -228203,19 +228189,22 @@ async function activateContract(
   })
 
   try {
-    return parseServiceId(parsedReply)
+    // We don't need any action on reply for now
+    if (parsedReply.Envelope.Body.Fault) {
+      log(
+        'error',
+        `Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}`
+      )
+    }
+    return parsedReply
   } catch (error) {
-    log('error', 'Error while activating contract: ' + error)
-    log(
-      'error',
-      `Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}`
-    )
-    //TODO: handle SGT4B8: Il existe déjà plusieurs demandes en cours sur le point ?
-    throw errors.LOGIN_FAILED
+    log('error', 'Error while parsing user contract termination: ' + error)
+    log('error', `Enedis issue ${JSON.stringify(parsedReply.Envelope.Body)}`)
+    throw errors.VENDOR_DOWN
   }
 }
 
-module.exports = { activateContract }
+module.exports = { terminateContract }
 
 
 /***/ }),
@@ -228225,7 +228214,12 @@ module.exports = { activateContract }
 // @ts-check
 const { log, errors } = __webpack_require__(1)
 const soapRequest = __webpack_require__(1331)
-const { parseTags, parseValue, parseContracts } = __webpack_require__(1555)
+const {
+  parseTags,
+  parseValue,
+  parseContracts,
+  checkContractExists,
+} = __webpack_require__(1555)
 const { rechercherServicesSouscritsMesures } = __webpack_require__(1556)
 const xml2js = __webpack_require__(1513)
 const { contractState, contractLibelle } = __webpack_require__(1600)
@@ -228261,6 +228255,11 @@ async function verifyContract(url, apiAuthKey, appLogin, contractId, pointId) {
   })
 
   try {
+    if (!checkContractExists(parsedReply)) {
+      log('error', 'no contract found')
+      return null
+    }
+
     const currentContracts = parseContracts(parsedReply)
     let currentContract = null
     if (Array.isArray(currentContracts)) {
@@ -228323,45 +228322,43 @@ module.exports = { contractState, contractLibelle }
 // @ts-check
 const { log, errors } = __webpack_require__(1)
 const soapRequest = __webpack_require__(1331)
-const { parseTags, parseValue } = __webpack_require__(1555)
-const { commanderArretServiceSouscritMesures } = __webpack_require__(1556)
+const { parseUserPdl, parseTags, parseValue } = __webpack_require__(1555)
+const { rechercherPoint } = __webpack_require__(1556)
 const xml2js = __webpack_require__(1513)
 
 /**
  * @param {string} url
  * @param {string} apiAuthKey
  * @param {string} appLogin
- * @param {number} pointId
- * @param {number} serviceId
- * @return {Promise<string>} User contractId
+ * @param {string} name
+ * @param {string} address
+ * @param {string} postalCode
+ * @param {string} inseeCode
+ * @return {Promise<string | null>} User Pdl
  */
-async function terminateContract(
+async function findUserPdl(
   url,
   apiAuthKey,
   appLogin,
-  contractId,
-  pointId,
-  serviceId
+  name,
+  address,
+  postalCode,
+  inseeCode
 ) {
-  log('info', 'terminateContract')
+  log('info', 'Fetching user data')
   const sgeHeaders = {
     'Content-Type': 'text/xml;charset=UTF-8',
     apikey: apiAuthKey,
   }
 
   const { response } = await soapRequest({
-    url: `${url}/enedis_SGE_CommandeArretServiceSouscritMesures/1.0`,
+    url: url,
     headers: sgeHeaders,
-    xml: commanderArretServiceSouscritMesures(
-      appLogin,
-      contractId,
-      pointId,
-      serviceId
-    ),
+    xml: rechercherPoint(appLogin, name, postalCode, inseeCode, address),
   }).catch(err => {
-    log('error', 'commanderArretServiceSouscritMesures')
+    log('error', 'rechercherPointResponse')
     log('error', err)
-    throw errors.VENDOR_DOWN
+    throw errors.LOGIN_FAILED
   })
 
   const parsedReply = await xml2js.parseStringPromise(response.body, {
@@ -228371,25 +228368,18 @@ async function terminateContract(
   })
 
   try {
-    // We don't need any action on reply for now
-    if (parsedReply.Envelope.Body.Fault) {
-      log(
-        'error',
-        `Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}`
-      )
-    }
-    return parsedReply
+    return parseUserPdl(parsedReply)
   } catch (error) {
-    log('error', 'Error while parsing user contract termination: ' + error)
+    log('error', 'Error while parsing user PDL: ' + error)
     log(
       'error',
       `Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}`
     )
-    throw errors.VENDOR_DOWN
+    throw errors.LOGIN_FAILED
   }
 }
 
-module.exports = { terminateContract }
+module.exports = { findUserPdl }
 
 
 /***/ }),
@@ -228398,65 +228388,110 @@ module.exports = { terminateContract }
 
 // @ts-check
 const { log, errors } = __webpack_require__(1)
-const soapRequest = __webpack_require__(1331)
-const {
-  parseTags,
-  parseValue,
-  parseContractStartDate,
-} = __webpack_require__(1555)
-const xml2js = __webpack_require__(1513)
-const { consulterDonneesTechniquesContractuelles } = __webpack_require__(1556)
+const { findUserPdl } = __webpack_require__(1601)
+const { getInseeCode } = __webpack_require__(1603)
 
 /**
- * Get user contract start date
- * @param {string} url
+ * Verify user identity
+ * @param {object} fields
+ * @param {string} baseUrl
  * @param {string} apiAuthKey
- * @param {string} userLogin
- * @param {number} pointId
- * @returns {Promise<string>}
+ * @param {string} loginUtilisateur
+ * @param {boolean} isAlternateStart
+ * @returns {Promise<User>}
  */
-async function getContractStartDate(url, apiAuthKey, userLogin, pointId) {
-  log('info', 'Fetching data start date')
-  const sgeHeaders = {
-    'Content-Type': 'text/xml;charset=UTF-8',
-    apikey: apiAuthKey,
+async function verifyUserIdentity(
+  fields,
+  baseUrl,
+  apiAuthKey,
+  loginUtilisateur,
+  isAlternateStart = false
+) {
+  const inseeCode = await getInseeCode(fields.postalCode, fields.city)
+
+  const pdl = await findUserPdl(
+    `${baseUrl}/enedis_SDE_recherche-point/1.0`,
+    apiAuthKey,
+    loginUtilisateur,
+    fields.lastname,
+    fields.address,
+    fields.postalCode,
+    inseeCode
+  )
+
+  if (fields.pointId != pdl) {
+    log('error', 'PointId does not match')
+    if (isAlternateStart) {
+      throw errors.TERMS_VERSION_MISMATCH
+    } else {
+      throw errors.LOGIN_FAILED
+    }
   }
 
-  const { response } = await soapRequest({
-    url: `${url}/enedis_SGE_ConsultationDonneesTechniquesContractuelles/1.0`,
-    headers: sgeHeaders,
-    xml: consulterDonneesTechniquesContractuelles(pointId, userLogin),
-  }).catch(err => {
-    log('error', 'Error while fetching contract start date : ' + err)
-    throw errors.VENDOR_DOWN
-  })
+  return {
+    lastname: fields.lastname,
+    firstname: fields.firstname,
+    pointId: fields.pointId,
+    inseeCode,
+    postalCode: fields.postalCode,
+    address: fields.address,
+  }
+}
 
-  const result = await xml2js.parseStringPromise(response.body, {
-    tagNameProcessors: [parseTags],
-    valueProcessors: [parseValue],
-    explicitArray: false,
-  })
+module.exports = { verifyUserIdentity }
+
+
+/***/ }),
+/* 1603 */
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+// @ts-check
+const { default: axios } = __webpack_require__(1558)
+const { log, errors } = __webpack_require__(1)
+
+const API_URL = 'https://apicarto.ign.fr/api/codes-postaux/communes'
+
+/**
+ * Return inseeCode given a postalCode
+ * @param {string} postalCode
+ * @param {string} [city]
+ * @return {Promise<string>} inseeCode
+ */
+async function getInseeCode(postalCode, city) {
   try {
-    return parseContractStartDate(result)
+    log('info', `Query getInseeCode for postalCode ${postalCode} / ${city}`)
+    const response = await axios.get(`${API_URL}/${postalCode}`)
+
+    if (response.data.length === 1) {
+      return response.data[0].codeCommune
+    } else {
+      if (!city) throw errors.USER_ACTION_NEEDED
+
+      const filteredResponse = response.data.filter(
+        town => town.nomCommune.toLowerCase() === city.toLowerCase()
+      )
+      return filteredResponse[0].codeCommune
+    }
   } catch (error) {
-    log('error', 'Error while processing contract start date: ' + error)
     log(
       'error',
-      `Enedis issue ${result.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${result.Envelope.Body.Fault.faultstring}`
+      `Query getInseeCode failed for postalCode ${postalCode} / ${city}`
     )
-    throw errors.NOT_EXISTING_DIRECTORY
+    throw errors.USER_ACTION_NEEDED
   }
 }
 
-module.exports = { getContractStartDate }
+module.exports = {
+  getInseeCode,
+}
 
 
 /***/ }),
-/* 1603 */
+/* 1604 */
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
 const { log, updateOrCreate } = __webpack_require__(1)
-const { iSLocal } = __webpack_require__(1604)
+const { isLocal } = __webpack_require__(1605)
 const cozyClient = __webpack_require__(485)
 
 async function saveAccountData(accountId, accountData) {
@@ -228473,10 +228508,9 @@ async function saveAccountData(accountId, accountData) {
 
 async function getAccount(accountId) {
   log('info', `getAccount: ${accountId}`)
-  //TODO: refactor with usageof cozy-libs. Not working during implementation
   const accounts = await cozyClient.data.findAll('io.cozy.accounts')
   return accounts.filter(account =>
-    iSLocal() ? account._id === accountId : account.account_type === accountId
+    isLocal() ? account._id === accountId : account.account_type === accountId
   )[0]
 }
 
@@ -228484,10 +228518,10 @@ module.exports = { getAccount, saveAccountData }
 
 
 /***/ }),
-/* 1604 */
+/* 1605 */
 /***/ ((module) => {
 
-function iSLocal() {
+function isLocal() {
   return (
     process.env.NODE_ENV === 'development' ||
     process.env.NODE_ENV === 'local' ||
@@ -228495,7 +228529,7 @@ function iSLocal() {
   )
 }
 
-module.exports = { iSLocal }
+module.exports = { isLocal }
 
 
 /***/ })
diff --git a/onDeleteAccount.js b/onDeleteAccount.js
index d28664f8417046fca1c6f6d940646ac01d92066e..f8992eba4334e6db2cbf2ee3f446cab12f106daf 100644
--- a/onDeleteAccount.js
+++ b/onDeleteAccount.js
@@ -222918,6 +222918,18 @@ async function formateDataForDoctype(data) {
   })
 }
 
+/**
+ * Check if response contains contracts
+ * @param {string} parsedReply
+ * @return {boolean}
+ */
+function checkContractExists(parsedReply) {
+  const json = JSON.stringify(parsedReply)
+  return JSON.parse(json)['Envelope']['Body'][
+    'rechercherServicesSouscritsMesuresResponse'
+  ]['servicesSouscritsMesures']
+}
+
 /**
  * Format tag in order to be manipulated easly
  * @param {string} name
@@ -222953,6 +222965,7 @@ module.exports = {
   parseContracts,
   parseContractStartDate,
   parseServiceId,
+  checkContractExists,
 }
 
 
@@ -227310,10 +227323,7 @@ module.exports = function isAxiosError(payload) {
 /* 1595 */,
 /* 1596 */,
 /* 1597 */,
-/* 1598 */,
-/* 1599 */,
-/* 1600 */,
-/* 1601 */
+/* 1598 */
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
 // @ts-check
@@ -227377,10 +227387,7 @@ async function terminateContract(
     return parsedReply
   } catch (error) {
     log('error', 'Error while parsing user contract termination: ' + error)
-    log(
-      'error',
-      `Enedis issue ${parsedReply.Envelope.Body.Fault.detail.erreur.resultat.$.code}: ${parsedReply.Envelope.Body.Fault.faultstring}`
-    )
+    log('error', `Enedis issue ${JSON.stringify(parsedReply.Envelope.Body)}`)
     throw errors.VENDOR_DOWN
   }
 }
@@ -227389,12 +227396,16 @@ module.exports = { terminateContract }
 
 
 /***/ }),
+/* 1599 */,
+/* 1600 */,
+/* 1601 */,
 /* 1602 */,
-/* 1603 */
+/* 1603 */,
+/* 1604 */
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
 const { log, updateOrCreate } = __webpack_require__(1)
-const { iSLocal } = __webpack_require__(1604)
+const { isLocal } = __webpack_require__(1605)
 const cozyClient = __webpack_require__(485)
 
 async function saveAccountData(accountId, accountData) {
@@ -227411,10 +227422,9 @@ async function saveAccountData(accountId, accountData) {
 
 async function getAccount(accountId) {
   log('info', `getAccount: ${accountId}`)
-  //TODO: refactor with usageof cozy-libs. Not working during implementation
   const accounts = await cozyClient.data.findAll('io.cozy.accounts')
   return accounts.filter(account =>
-    iSLocal() ? account._id === accountId : account.account_type === accountId
+    isLocal() ? account._id === accountId : account.account_type === accountId
   )[0]
 }
 
@@ -227422,10 +227432,10 @@ module.exports = { getAccount, saveAccountData }
 
 
 /***/ }),
-/* 1604 */
+/* 1605 */
 /***/ ((module) => {
 
-function iSLocal() {
+function isLocal() {
   return (
     process.env.NODE_ENV === 'development' ||
     process.env.NODE_ENV === 'local' ||
@@ -227433,26 +227443,25 @@ function iSLocal() {
   )
 }
 
-module.exports = { iSLocal }
+module.exports = { isLocal }
 
 
 /***/ }),
-/* 1605 */
+/* 1606 */
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
 // @ts-check
 const { log, errors } = __webpack_require__(1)
-const { getAccountRev, getAccountSecret } = __webpack_require__(1606)
+const { getAccountRev, getAccountSecret } = __webpack_require__(1607)
 const { getBoConsent, deleteBoConsent } = __webpack_require__(1557)
-const { terminateContract } = __webpack_require__(1601)
-const { getAccount } = __webpack_require__(1603)
-// const getAccountSecret = require('./helpers/getAccountSecret')
+const { terminateContract } = __webpack_require__(1598)
+const { getAccount } = __webpack_require__(1604)
 const moment = __webpack_require__(1373)
 __webpack_require__(1510)
 moment.locale('fr') // set the language
 moment.tz.setDefault('Europe/Paris') // set the timezone
-const { iSLocal } = __webpack_require__(1604)
-const ACCOUNT_ID = iSLocal() ? 'default_account_id' : 'enedis-sge-grandlyon'
+const { isLocal } = __webpack_require__(1605)
+const ACCOUNT_ID = isLocal() ? 'default_account_id' : 'enedis-sge-grandlyon'
 
 async function onDeleteAccount() {
   log('info', 'Deleting account ...')
@@ -227469,7 +227478,7 @@ async function onDeleteAccount() {
       accountData.data.consentId
     )
 
-    if (userConsent.ID && userConsent.pointID && userConsent.pointID) {
+    if (userConsent.ID && userConsent.pointID) {
       log('log', `Consent ${userConsent.ID} found for user`)
       if (userConsent.serviceID) {
         await deleteBoConsent(
@@ -227518,11 +227527,11 @@ module.exports = { onDeleteAccount }
 
 
 /***/ }),
-/* 1606 */
+/* 1607 */
 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 
 const { log } = __webpack_require__(1)
-const { iSLocal } = __webpack_require__(1604)
+const { isLocal } = __webpack_require__(1605)
 
 function getAccountId() {
   log('info', `getAccountId`)
@@ -227536,7 +227545,7 @@ function getAccountId() {
 function getAccountRev() {
   log('info', `getAccountRev`)
   try {
-    return iSLocal()
+    return isLocal()
       ? 'fakeAccountRev'
       : JSON.parse(process.env.COZY_FIELDS).account_rev
   } catch (err) {
@@ -227550,15 +227559,14 @@ function getAccountRev() {
  */
 function getAccountSecret() {
   try {
-    return iSLocal()
+    return isLocal()
       ? {
-          baseUrl: 'https://apis.grandlyon.fr',
-          sgeLogin: 'donnees.energie@grandlyon.com',
-          contractId: '4921350',
-          boBaseUrl: 'https://ecolyo-agent-rec.grandlyon.com/api/sge',
-          boToken: '*pdG7qg^xar5BTcnetCg',
-          apiAuthKey:
-            'eyJ4NXQiOiJaR1l4TVRBeVlqaGxNbVU0T1dReE56SXhZbU01TUdZMk5XVmxNak15TWpVeE9XUXdOakppWlE9PSIsImtpZCI6ImdhdGV3YXlfY2VydGlmaWNhdGVfYWxpYXMiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJMREFQXC9JUEo5MTUzQGNhcmJvbi5zdXBlciIsImFwcGxpY2F0aW9uIjp7Im93bmVyIjoiTERBUFwvSVBKOTE1MyIsInRpZXJRdW90YVR5cGUiOm51bGwsInRpZXIiOiJVbmxpbWl0ZWQiLCJuYW1lIjoiU0dFIiwiaWQiOjMwLCJ1dWlkIjoiYjU0MWYxZDEtYTMzYi00ODYyLThiOGQtNTk4MDljYjQzNWRjIn0sImlzcyI6Imh0dHBzOlwvXC9hcGlzLmdyYW5kbHlvbi5mcjo0NDNcL29hdXRoMlwvdG9rZW4iLCJ0aWVySW5mbyI6eyJVbmxpbWl0ZWQiOnsidGllclF1b3RhVHlwZSI6InJlcXVlc3RDb3VudCIsImdyYXBoUUxNYXhDb21wbGV4aXR5IjowLCJncmFwaFFMTWF4RGVwdGgiOjAsInN0b3BPblF1b3RhUmVhY2giOnRydWUsInNwaWtlQXJyZXN0TGltaXQiOjAsInNwaWtlQXJyZXN0VW5pdCI6bnVsbH19LCJrZXl0eXBlIjoiUFJPRFVDVElPTiIsInBlcm1pdHRlZFJlZmVyZXIiOiIiLCJzdWJzY3JpYmVkQVBJcyI6W3sic3Vic2NyaWJlclRlbmFudERvbWFpbiI6ImNhcmJvbi5zdXBlciIsIm5hbWUiOiJlbmVkaXNfU0RFX3JlY2hlcmNoZS1wb2ludCIsImNvbnRleHQiOiJcL2VuZWRpc19TREVfcmVjaGVyY2hlLXBvaW50XC8xLjAiLCJwdWJsaXNoZXIiOiJhZG1pbiIsInZlcnNpb24iOiIxLjAiLCJzdWJzY3JpcHRpb25UaWVyIjoiVW5saW1pdGVkIn0seyJzdWJzY3JpYmVyVGVuYW50RG9tYWluIjoiY2FyYm9uLnN1cGVyIiwibmFtZSI6ImVuZWRpc19TR0VfQ29tbWFuZGVUcmFuc21pc3Npb25IaXN0b3JpcXVlTWVzdXJlcyIsImNvbnRleHQiOiJcL2VuZWRpc19TR0VfQ29tbWFuZGVUcmFuc21pc3Npb25IaXN0b3JpcXVlTWVzdXJlc1wvMS4wIiwicHVibGlzaGVyIjoiYWRtaW4iLCJ2ZXJzaW9uIjoiMS4wIiwic3Vic2NyaXB0aW9uVGllciI6IlVubGltaXRlZCJ9LHsic3Vic2NyaWJlclRlbmFudERvbWFpbiI6ImNhcmJvbi5zdXBlciIsIm5hbWUiOiJlbmVkaXNfU0dFX1JlY2hlcmNoZVNlcnZpY2VzTWVzdXJlcyIsImNvbnRleHQiOiJcL2VuZWRpc19TR0VfUmVjaGVyY2hlU2VydmljZXNNZXN1cmVzXC8xLjAiLCJwdWJsaXNoZXIiOiJhZG1pbiIsInZlcnNpb24iOiIxLjAiLCJzdWJzY3JpcHRpb25UaWVyIjoiVW5saW1pdGVkIn0seyJzdWJzY3JpYmVyVGVuYW50RG9tYWluIjoiY2FyYm9uLnN1cGVyIiwibmFtZSI6ImVuZWRpc19TR0VfQ29uc3VsdGF0aW9uTWVzdXJlcyIsImNvbnRleHQiOiJcL2VuZWRpc19TR0VfQ29uc3VsdGF0aW9uTWVzdXJlc1wvMS4wIiwicHVibGlzaGVyIjoiYWRtaW4iLCJ2ZXJzaW9uIjoiMS4wIiwic3Vic2NyaXB0aW9uVGllciI6IlVubGltaXRlZCJ9LHsic3Vic2NyaWJlclRlbmFudERvbWFpbiI6ImNhcmJvbi5zdXBlciIsIm5hbWUiOiJlbmVkaXNfU0dFX0NvbnN1bHRhdGlvbk1lc3VyZXNEZXRhaWxsZWVzIiwiY29udGV4dCI6IlwvZW5lZGlzX1NHRV9Db25zdWx0YXRpb25NZXN1cmVzRGV0YWlsbGVlc1wvMS4wIiwicHVibGlzaGVyIjoiYWRtaW4iLCJ2ZXJzaW9uIjoiMS4wIiwic3Vic2NyaXB0aW9uVGllciI6IlVubGltaXRlZCJ9LHsic3Vic2NyaWJlclRlbmFudERvbWFpbiI6ImNhcmJvbi5zdXBlciIsIm5hbWUiOiJlbmVkaXNfU0dFX0NvbnN1bHRhdGlvbkRvbm5lZXNUZWNobmlxdWVzQ29udHJhY3R1ZSIsImNvbnRleHQiOiJcL2VuZWRpc19TR0VfQ29uc3VsdGF0aW9uRG9ubmVlc1RlY2huaXF1ZXNDb250cmFjdHVlbGxlc1wvMS4wIiwicHVibGlzaGVyIjoiYWRtaW4iLCJ2ZXJzaW9uIjoiMS4wIiwic3Vic2NyaXB0aW9uVGllciI6IlVubGltaXRlZCJ9LHsic3Vic2NyaWJlclRlbmFudERvbWFpbiI6ImNhcmJvbi5zdXBlciIsIm5hbWUiOiJlbmVkaXNfU0dFX0NvbW1hbmRlQ29sbGVjdGVQdWJsaWNhdGlvbk1lc3VyZXMiLCJjb250ZXh0IjoiXC9lbmVkaXNfU0dFX0NvbW1hbmRlQ29sbGVjdGVQdWJsaWNhdGlvbk1lc3VyZXNcLzEuMCIsInB1Ymxpc2hlciI6ImFkbWluIiwidmVyc2lvbiI6IjEuMCIsInN1YnNjcmlwdGlvblRpZXIiOiJVbmxpbWl0ZWQifSx7InN1YnNjcmliZXJUZW5hbnREb21haW4iOiJjYXJib24uc3VwZXIiLCJuYW1lIjoiZW5lZGlzX1NHRV9Db21tYW5kZUFycmV0U2VydmljZVNvdXNjcml0TWVzdXJlcyIsImNvbnRleHQiOiJcL2VuZWRpc19TR0VfQ29tbWFuZGVBcnJldFNlcnZpY2VTb3VzY3JpdE1lc3VyZXNcLzEuMCIsInB1Ymxpc2hlciI6ImFkbWluIiwidmVyc2lvbiI6IjEuMCIsInN1YnNjcmlwdGlvblRpZXIiOiJVbmxpbWl0ZWQifV0sInRva2VuX3R5cGUiOiJhcGlLZXkiLCJwZXJtaXR0ZWRJUCI6IiIsImlhdCI6MTY1MDg5MDYwNiwianRpIjoiYWQzNjNlNzAtMTVhOS00NzQ1LWExNDEtOGIxOTU5MjQwZTM3In0=.UK5Jx1WRA0A6KVUFK5rs5RH7e9qAWn4v_AmmX_CHD3MNzZWikaUFD1UmS_VvMfWvqLMvRBqbkVH0X5na46e8cZA6WYaQuI5xu9oEOptv8HRY3VX-4VBpjvmTcSSRmCN6AqyalggWbzVlDsKCpVyFWavGi-DFrd7Fe9U41kNs33Li-C9LU794LEaqBPfC8avNwHv8UTzkpExR1jwCXjkLXQ-M8txHgdGGYqZ2VN0_8DeuJ7BOYQGmmENxMt0orm9k9ubtLIijnfNAOLRUZcboQRAURE_IdtuBRG0EWBkkDocefWysmckKBt6lUMtYjxpzWCDyw9UYyQAaPC1Ogy6oAg==',
+          baseUrl: 'https://test.fr',
+          sgeLogin: 'test@test.com',
+          contractId: '134567',
+          boBaseUrl: 'https://botest.grandlyon.com/',
+          boToken: 'tok31n',
+          apiAuthKey: 'authkeYeasqqd56dsdq',
         }
       : JSON.parse(process.env.COZY_PARAMETERS).secret
   } catch (err) {
@@ -227658,7 +227666,7 @@ module.exports = { getAccountId, getAccountRev, getAccountSecret }
 /******/ 	// module cache are used so entry inlining is disabled
 /******/ 	// startup
 /******/ 	// Load entry module and return exports
-/******/ 	var __webpack_exports__ = __webpack_require__(__webpack_require__.s = 1605);
+/******/ 	var __webpack_exports__ = __webpack_require__(__webpack_require__.s = 1606);
 /******/ 	
 /******/ })()
 ;
\ No newline at end of file
diff --git a/package.json b/package.json
index 3d76bd2734418c82bf344741e0cf2f35b37238cf..54f2e5454affb2a7a7bd9f34645041b1d3eb6cb9 100644
--- a/package.json
+++ b/package.json
@@ -24,6 +24,9 @@
       "pre-commit": "yarn lint"
     }
   },
+  "jest": {
+    "setupFiles": ["./setupTests.js"]
+  },
   "scripts": {
     "start": "node ./src/index.js",
     "dev": "cozy-konnector-dev",