diff --git a/index.js b/index.js
index 944b39e23135b5ddb0cd057acc8ff8e234bed980..a5b7f62e9dcbd6d39c56dfd94551accfe645503b 100644
--- a/index.js
+++ b/index.js
@@ -94,174 +94,185 @@ Sentry.init({
  * @param {{secret: fields}} cozyParameters
  */
 async function start(fields, cozyParameters) {
-  log('info', 'Konnector configuration ...')
-  log('info', `isManual execution: ${manualExecution}`)
-  const transaction = Sentry.startTransaction({
-    op: 'konnector',
-    name: 'SGE Konnector',
-  })
-
-  const pointId = parseInt(fields.pointId)
-  let baseUrl = fields.wso2BaseUrl
-  let apiAuthKey = fields.apiToken
-  let contractId = fields.contractId
-  let sgeLogin = fields.sgeLogin
-  let boToken = fields.boToken
-  let boBaseUrl = fields.boBaseUrl
-  if (cozyParameters && Object.keys(cozyParameters).length !== 0) {
-    log('debug', 'Found COZY_PARAMETERS')
-    baseUrl = cozyParameters.secret.wso2BaseUrl
-    apiAuthKey = cozyParameters.secret.apiToken
-    contractId = cozyParameters.secret.contractId
-    sgeLogin = cozyParameters.secret.sgeLogin
-    boBaseUrl = cozyParameters.secret.boBaseUrl
-    boToken = cozyParameters.secret.boToken
-  }
-
-  // Prevent missing configuration
-  if (
-    !baseUrl ||
-    !apiAuthKey ||
-    !contractId ||
-    !sgeLogin ||
-    !boToken ||
-    !boBaseUrl
-  ) {
-    const errorMessage = 'Missing configuration secrets'
-    log('error', errorMessage)
-    Sentry.captureException(errorMessage)
-    throw errors.VENDOR_DOWN
-  }
-
-  /**
-   * If it's first start we have to do the following operations:
-   * - verify pdl are matching
-   * - BO: create backoffice consent
-   * - get contract start date and store it
-   * - activate half-hour
-   * - BO: update consent with service ID
-   */
-  log('info', 'User Logging...')
-
-  if (isFirstStart(await getAccount(ACCOUNT_ID))) {
-    log('info', 'First start...')
-    transaction.startChild({ op: 'First start' })
-    const user = await verifyUserIdentity(fields, baseUrl, apiAuthKey, sgeLogin)
+  try {
+    log('info', 'Konnector configuration ...')
+    log('info', `isManual execution: ${manualExecution}`)
+    const transaction = Sentry.startTransaction({
+      op: 'konnector',
+      name: 'SGE Konnector',
+    })
 
-    let consent = await createBoConsent(
-      boBaseUrl,
-      boToken,
-      pointId,
-      user.lastname,
-      user.firstname,
-      user.address,
-      user.postalCode,
-      user.inseeCode,
-      user.city,
-      user.hasBeenThroughtSafetyOnBoarding
-    )
+    const pointId = parseInt(fields.pointId)
+    let baseUrl = fields.wso2BaseUrl
+    let apiAuthKey = fields.apiToken
+    let contractId = fields.contractId
+    let sgeLogin = fields.sgeLogin
+    let boToken = fields.boToken
+    let boBaseUrl = fields.boBaseUrl
+    if (cozyParameters && Object.keys(cozyParameters).length !== 0) {
+      log('debug', 'Found COZY_PARAMETERS')
+      baseUrl = cozyParameters.secret.wso2BaseUrl
+      apiAuthKey = cozyParameters.secret.apiToken
+      contractId = cozyParameters.secret.contractId
+      sgeLogin = cozyParameters.secret.sgeLogin
+      boBaseUrl = cozyParameters.secret.boBaseUrl
+      boToken = cozyParameters.secret.boToken
+    }
+
+    // Prevent missing configuration
+    if (
+      !baseUrl ||
+      !apiAuthKey ||
+      !contractId ||
+      !sgeLogin ||
+      !boToken ||
+      !boBaseUrl
+    ) {
+      const errorMessage = 'Missing configuration secrets'
+      log('error', errorMessage)
+      Sentry.captureException(errorMessage)
+      throw errors.VENDOR_DOWN
+    }
 
-    // handle user contract start date in order to properly request data
-    const userContractStartDate = await getContractStartDate(
-      baseUrl,
-      apiAuthKey,
-      sgeLogin,
-      pointId
-    )
+    /**
+     * If it's first start we have to do the following operations:
+     * - verify pdl are matching
+     * - BO: create backoffice consent
+     * - get contract start date and store it
+     * - activate half-hour
+     * - BO: update consent with service ID
+     */
+    log('info', 'User Logging...')
 
-    startDailyDate = moment(userContractStartDate, 'YYYY-MM-DD')
-    startDailyDateString = startDailyDate.format('YYYY-MM-DD')
+    if (isFirstStart(await getAccount(ACCOUNT_ID))) {
+      log('info', 'First start...')
+      transaction.startChild({ op: 'First start' })
+      const user = await verifyUserIdentity(
+        fields,
+        baseUrl,
+        apiAuthKey,
+        sgeLogin
+      )
 
-    const contractStartDate = moment().format('YYYY-MM-DD')
-    const contractEndDate = moment()
-      .add(1, 'year') // SGE force 1 year duration
-      .format('YYYY-MM-DD')
+      let consent = await createBoConsent(
+        boBaseUrl,
+        boToken,
+        pointId,
+        user.lastname,
+        user.firstname,
+        user.address,
+        user.postalCode,
+        user.inseeCode,
+        user.city,
+        user.hasBeenThroughtSafetyOnBoarding
+      )
 
-    let serviceId = await verifyContract(
-      baseUrl,
-      apiAuthKey,
-      sgeLogin,
-      contractId,
-      user.pointId
-    )
-    if (!serviceId) {
-      serviceId = await activateContract(
+      // handle user contract start date in order to properly request data
+      const userContractStartDate = await getContractStartDate(
         baseUrl,
         apiAuthKey,
         sgeLogin,
-        contractId,
-        user.lastname,
-        user.pointId,
-        contractStartDate,
-        contractEndDate
+        pointId
       )
-    }
-    consent = await updateBoConsent(
-      boBaseUrl,
-      boToken,
-      consent,
-      serviceId.toString()
-    )
-    // Save bo id into account
-    const accountData = await getAccount(ACCOUNT_ID)
-
-    await saveAccountData(ACCOUNT_ID, {
-      ...accountData.data,
-      consentId: consent.ID,
-      expirationDate: contractEndDate,
-      inseeCode: user.inseeCode,
-    })
-  } else {
-    log('info', 'Alternate start...')
-    transaction.startChild({ op: 'Alternate start' })
-    const accountData = await getAccount(ACCOUNT_ID)
-    const userConsent = await getBoConsent(
-      boBaseUrl,
-      boToken,
-      accountData.data.consentId
-    )
-    const user = await verifyUserIdentity(
-      fields,
-      baseUrl,
-      apiAuthKey,
-      sgeLogin,
-      true,
-      accountData.data.inseeCode
-    )
 
-    if (!userConsent) {
-      const errorMessage = 'No user consent found'
-      log('error', errorMessage)
-      Sentry.captureException(errorMessage)
-      throw errors.VENDOR_DOWN
-    }
+      startDailyDate = moment(userContractStartDate, 'YYYY-MM-DD')
+      startDailyDateString = startDailyDate.format('YYYY-MM-DD')
 
-    const consentEndDate = Date.parse(userConsent.endDate)
-    const today = Date.now()
-    if (
-      user.lastname.toLocaleUpperCase() !==
-        userConsent.lastname.toLocaleUpperCase() ||
-      !user ||
-      consentEndDate < today
-    ) {
-      await deleteConsent(
-        userConsent,
+      const contractStartDate = moment().format('YYYY-MM-DD')
+      const contractEndDate = moment()
+        .add(1, 'year') // SGE force 1 year duration
+        .format('YYYY-MM-DD')
+
+      let serviceId = await verifyContract(
         baseUrl,
         apiAuthKey,
         sgeLogin,
         contractId,
-        pointId,
+        user.pointId
+      )
+      if (!serviceId) {
+        serviceId = await activateContract(
+          baseUrl,
+          apiAuthKey,
+          sgeLogin,
+          contractId,
+          user.lastname,
+          user.pointId,
+          contractStartDate,
+          contractEndDate
+        )
+      }
+      consent = await updateBoConsent(
         boBaseUrl,
         boToken,
-        consentEndDate < today
+        consent,
+        serviceId.toString()
+      )
+      // Save bo id into account
+      const accountData = await getAccount(ACCOUNT_ID)
+
+      await saveAccountData(ACCOUNT_ID, {
+        ...accountData.data,
+        consentId: consent.ID,
+        expirationDate: contractEndDate,
+        inseeCode: user.inseeCode,
+      })
+    } else {
+      log('info', 'Alternate start...')
+      transaction.startChild({ op: 'Alternate start' })
+      const accountData = await getAccount(ACCOUNT_ID)
+      const userConsent = await getBoConsent(
+        boBaseUrl,
+        boToken,
+        accountData.data.consentId
+      )
+      const user = await verifyUserIdentity(
+        fields,
+        baseUrl,
+        apiAuthKey,
+        sgeLogin,
+        true,
+        accountData.data.inseeCode
       )
+
+      if (!userConsent) {
+        const errorMessage = 'No user consent found'
+        log('error', errorMessage)
+        Sentry.captureException(errorMessage)
+        throw errors.VENDOR_DOWN
+      }
+
+      const consentEndDate = Date.parse(userConsent.endDate)
+      const today = Date.now()
+      if (
+        user.lastname.toLocaleUpperCase() !==
+          userConsent.lastname.toLocaleUpperCase() ||
+        !user ||
+        consentEndDate < today
+      ) {
+        await deleteConsent(
+          userConsent,
+          baseUrl,
+          apiAuthKey,
+          sgeLogin,
+          contractId,
+          pointId,
+          boBaseUrl,
+          boToken,
+          consentEndDate < today
+        )
+      }
     }
-  }
-  log('info', 'Successfully logged in')
-  await gatherData(baseUrl, apiAuthKey, sgeLogin, pointId)
+    log('info', 'Successfully logged in')
+    await gatherData(baseUrl, apiAuthKey, sgeLogin, pointId)
 
-  transaction.finish()
-  log('info', 'Konnector success')
+    transaction.finish()
+    log('info', 'Konnector success')
+  } catch (error) {
+    log('debug', 'error catched in start()', error)
+    await Sentry.flush()
+    throw error
+  }
 }
 
 /**
@@ -241603,6 +241614,7 @@ async function activateContract(
       )
     }
     //TODO: handle SGT4B8: Il existe déjà plusieurs demandes en cours sur le point ?
+    //TODO: handle SGT4H9: La demande ne porte pas sur un point équipé d'un compteur communicant ouvert aux services niveau 2.
     throw errors.LOGIN_FAILED
   }
 }
@@ -241995,6 +242007,7 @@ async function verifyUserIdentity(
 
   if (!pdl) {
     log('warn', 'Second chance for sge onboarding')
+    // TODO add "Second chance" to Sentry transaction
     // Set safety onboarding in order to save it inside BO
     userSafetyOnBoarding = true
     // Backup verification
diff --git a/onDeleteAccount.js b/onDeleteAccount.js
index c8ef3bb290d16aaec601dfe4407bf8b41bc80821..f2015f62cf123b87ed203411f2b2c310b9198873 100644
--- a/onDeleteAccount.js
+++ b/onDeleteAccount.js
@@ -241013,69 +241013,75 @@ moment.locale('fr') // set the language
 moment.tz.setDefault('Europe/Paris') // set the timezone
 
 async function onDeleteAccount() {
-  log('info', 'Deleting account ...')
-  log('info', 'Getting secrets ...')
-  const ACCOUNT_ID = getAccountId()
-  const accountRev = getAccountRev()
-
-  if (accountRev) {
-    log('info', 'Account rev exist')
-    const accountData = await getAccountForDelete(ACCOUNT_ID, accountRev)
-    // Parse local info for deletion test
-    if (isLocal()) {
-      log('warn', 'Local run')
-      const fields = JSON.parse(
-        process.env.COZY_FIELDS ? process.env.COZY_FIELDS : '{}'
-      )
-      process.env.COZY_FIELDS = JSON.stringify({
-        ...fields,
-        ...accountData.auth,
-      })
-    }
-    const secrets = getAccountSecret()
+  try {
+    log('info', 'Deleting account ...')
+    log('info', 'Getting secrets ...')
+    const ACCOUNT_ID = getAccountId()
+    const accountRev = getAccountRev()
+
+    if (accountRev) {
+      log('info', 'Account rev exist')
+      const accountData = await getAccountForDelete(ACCOUNT_ID, accountRev)
+      // Parse local info for deletion test
+      if (isLocal()) {
+        log('warn', 'Local run')
+        const fields = JSON.parse(
+          process.env.COZY_FIELDS ? process.env.COZY_FIELDS : '{}'
+        )
+        process.env.COZY_FIELDS = JSON.stringify({
+          ...fields,
+          ...accountData.auth,
+        })
+      }
+      const secrets = getAccountSecret()
 
-    const userConsent = await getBoConsent(
-      secrets.boBaseUrl,
-      secrets.boToken,
-      accountData.data.consentId
-    )
+      const userConsent = await getBoConsent(
+        secrets.boBaseUrl,
+        secrets.boToken,
+        accountData.data.consentId
+      )
 
-    log('info', `isAlpha: ${isDev()}`)
-    log('info', `userConsent: ${JSON.stringify(userConsent)}`)
-    if (userConsent.ID && userConsent.pointID) {
-      log('log', `Consent ${userConsent.ID} found for user`)
-      if (userConsent.serviceID) {
-        await deleteBoConsent(
-          secrets.boBaseUrl,
-          secrets.boToken,
-          userConsent.ID
-        )
-        // Verify if it's dev env to prevent delete of real data
-        if (!isDev()) {
-          await terminateContract(
-            secrets.wso2BaseUrl,
-            secrets.apiToken,
-            secrets.sgeLogin,
-            secrets.contractId,
-            userConsent.pointID,
-            userConsent.serviceID
+      log('info', `isAlpha: ${isDev()}`)
+      log('info', `userConsent: ${JSON.stringify(userConsent)}`)
+      if (userConsent.ID && userConsent.pointID) {
+        log('log', `Consent ${userConsent.ID} found for user`)
+        if (userConsent.serviceID) {
+          await deleteBoConsent(
+            secrets.boBaseUrl,
+            secrets.boToken,
+            userConsent.ID
           )
+          // Verify if it's dev env to prevent delete of real data
+          if (!isDev()) {
+            await terminateContract(
+              secrets.wso2BaseUrl,
+              secrets.apiToken,
+              secrets.sgeLogin,
+              secrets.contractId,
+              userConsent.pointID,
+              userConsent.serviceID
+            )
+          }
+        } else {
+          const errorMessage = `No service id retrieved from BO`
+          log('error', errorMessage)
+          Sentry.captureException(errorMessage)
+          throw errors.VENDOR_DOWN
         }
-      } else {
-        const errorMessage = `No service id retrieved from BO`
-        log('error', errorMessage)
-        Sentry.captureException(errorMessage)
-        throw errors.VENDOR_DOWN
       }
-    }
 
-    log('info', 'Deleting account succeed')
-  } else {
-    const errorMessage =
-      'No account revision was found, something went wrong during the deletion of said account'
-    log('error', errorMessage)
-    Sentry.captureException(errorMessage)
-    throw errors.VENDOR_DOWN
+      log('info', 'Deleting account succeed')
+    } else {
+      const errorMessage =
+        'No account revision was found, something went wrong during the deletion of said account'
+      log('error', errorMessage)
+      Sentry.captureException(errorMessage)
+      throw errors.VENDOR_DOWN
+    }
+  } catch (error) {
+    log('debug', 'error catched in onDeleteAccount()', error)
+    await Sentry.flush()
+    throw error
   }
 }