diff --git a/packages/api/src/business/check-prolongations.ts b/packages/api/src/business/check-prolongations.ts
index 4d70651e99aa3ee2909a9f73d76cf9d8937138c2..370e61b2d8a72d99f1d5dbd31f2169a267999018 100644
--- a/packages/api/src/business/check-prolongations.ts
+++ b/packages/api/src/business/check-prolongations.ts
@@ -207,6 +207,7 @@ const fixProlongation = (pool: Pool, checkedProlongation: CheckedProlongation):
             substances: getMostRecentValuePropFromEtapeFondamentaleValide('substances', demarches),
             titulaireIds: getMostRecentValuePropFromEtapeFondamentaleValide('titulaireIds', demarches),
             perimetre: getMostRecentValuePropFromEtapeFondamentaleValide('perimetre', demarches),
+            duree: getMostRecentValuePropFromEtapeFondamentaleValide('duree', [...demarches.filter(demarche => demarche.id === checkedProlongation.demarche_id)]),
           }
         })
       )
@@ -214,27 +215,64 @@ const fixProlongation = (pool: Pool, checkedProlongation: CheckedProlongation):
     Effect.flatMap(({ titre, etape, propsHeritees }) =>
       Effect.tryPromise({
         try: () => {
-          console.info(`Trying to fix http://localhost:4180/etapes/${etape.id}`)
+          const changes = []
+          let duree = 'fondamentale' in etape ? etape.fondamentale.duree : null
+          if ((isNullOrUndefined(duree) || duree === 0) && isNotNullNorUndefined(propsHeritees.duree) && propsHeritees.duree !== 0) {
+            duree = propsHeritees.duree
+            changes.push('duree')
+          }
+
+          let substances = 'fondamentale' in etape ? (etape.fondamentale.substances ?? []) : []
+          if (isNullOrUndefinedOrEmpty(substances) && isNotNullNorUndefinedNorEmpty(propsHeritees.substances)) {
+            substances = propsHeritees.substances
+            changes.push('substances')
+          }
+
+          let titulaireIds = 'fondamentale' in etape ? (etape.fondamentale.titulaireIds ?? []) : []
+          if (isNullOrUndefinedOrEmpty(titulaireIds) && isNotNullNorUndefinedNorEmpty(propsHeritees.titulaireIds)) {
+            titulaireIds = propsHeritees.titulaireIds
+            changes.push('titulaireIds')
+          }
+          let perimetre =
+            'fondamentale' in etape
+              ? {
+                  surface: etape.fondamentale.perimetre?.surface,
+                  geojson4326Perimetre: etape.fondamentale.perimetre?.geojson4326_perimetre,
+                  geojsonOriginePerimetre: etape.fondamentale.perimetre?.geojson_origine_perimetre,
+                  geojsonOrigineGeoSystemeId: etape.fondamentale.perimetre?.geojson_origine_geo_systeme_id,
+                  geojson4326Points: etape.fondamentale.perimetre?.geojson4326_points,
+                  geojsonOriginePoints: etape.fondamentale.perimetre?.geojson_origine_points,
+                  geojson4326Forages: etape.fondamentale.perimetre?.geojson4326_forages,
+                  geojsonOrigineForages: etape.fondamentale.perimetre?.geojson_origine_forages,
+                }
+              : null
+          if (isNullOrUndefined(perimetre?.geojsonOriginePerimetre) && isNotNullNorUndefined(propsHeritees.perimetre?.geojson_origine_perimetre)) {
+            perimetre = {
+              surface: propsHeritees.perimetre.surface,
+              geojson4326Perimetre: propsHeritees.perimetre.geojson4326_perimetre,
+              geojsonOriginePerimetre: propsHeritees.perimetre.geojson_origine_perimetre,
+              geojsonOrigineGeoSystemeId: propsHeritees.perimetre.geojson_origine_geo_systeme_id,
+              geojson4326Points: propsHeritees.perimetre.geojson4326_points,
+              geojsonOriginePoints: propsHeritees.perimetre.geojson_origine_points,
+              geojson4326Forages: propsHeritees.perimetre.geojson4326_forages,
+              geojsonOrigineForages: propsHeritees.perimetre.geojson_origine_forages,
+            }
+            changes.push('perimetre')
+          }
+
+          if (isNotNullNorUndefinedNorEmpty(changes)) {
+            console.info(`Trying to fix http://localhost:4180/etapes/${etape.slug} -> ${changes.join(',')}`)
+          }
+
           return titreEtapeUpsert(
             {
               id: etape.id,
               titreDemarcheId: checkedProlongation.demarche_id,
               date: etape.date,
-              substances: 'fondamentale' in etape && isNotNullNorUndefinedNorEmpty(etape.fondamentale.substances) ? etape.fondamentale.substances : propsHeritees.substances,
-              titulaireIds: 'fondamentale' in etape && isNotNullNorUndefinedNorEmpty(etape.fondamentale.titulaireIds) ? etape.fondamentale.titulaireIds : propsHeritees.titulaireIds,
-              surface: 'fondamentale' in etape && isNotNullNorUndefined(etape.fondamentale.perimetre?.surface) ? etape.fondamentale.perimetre.surface : propsHeritees.perimetre?.surface,
-              geojson4326Perimetre:
-                'fondamentale' in etape && isNotNullNorUndefined(etape.fondamentale.perimetre?.geojson4326_perimetre)
-                  ? etape.fondamentale.perimetre.geojson4326_perimetre
-                  : propsHeritees.perimetre?.geojson4326_perimetre,
-              geojsonOriginePerimetre:
-                'fondamentale' in etape && isNotNullNorUndefined(etape.fondamentale.perimetre?.geojson_origine_perimetre)
-                  ? etape.fondamentale.perimetre.geojson_origine_perimetre
-                  : propsHeritees.perimetre?.geojson_origine_perimetre,
-              geojsonOrigineGeoSystemeId:
-                'fondamentale' in etape && isNotNullNorUndefined(etape.fondamentale.perimetre?.geojson_origine_geo_systeme_id)
-                  ? etape.fondamentale.perimetre.geojson_origine_geo_systeme_id
-                  : propsHeritees.perimetre?.geojson_origine_geo_systeme_id,
+              duree,
+              substances,
+              titulaireIds,
+              ...perimetre,
             },
             userSuper,
             titre.id
@@ -274,13 +312,6 @@ export const checkProlongations = (pool: Pool): Effect.Effect<CheckedProlongatio
               return fixProlongation(pool, checkedProlongation)
             }),
             Effect.map(checkedProlongation => {
-              // if (isNotNullNorUndefinedNorEmpty(checkedProlongation.errors) && !checkedProlongation.errors.includes(demarchePasProlongationError)) {
-              //   const link = isNotNullNorUndefined(checkedProlongation.titre_slug)
-              //     ? `http://localhost:4180/titres/${checkedProlongation.titre_slug}`
-              //     : `http://localhost:4180/demarches/${checkedProlongation.demarche_id}`
-              //   console.info(`${link} : ${checkedProlongation.errors.join(' | ')}`)
-              // }
-
               return [...acc, checkedProlongation]
             })
           )