From c328137b4aa85feb209dc4d603f5aeabc7656402 Mon Sep 17 00:00:00 2001
From: vmaubert <v.maubert@code-troopers.com>
Date: Mon, 5 Dec 2022 14:55:25 +0100
Subject: [PATCH] =?UTF-8?q?refactor(api):=20migre=20l=E2=80=99API=20en=20E?=
 =?UTF-8?q?SM=20(#271)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .github/workflows/api.yml                     |   6 +-
 .github/workflows/common.yml                  |   6 +-
 .github/workflows/release-github.yml          |   2 +-
 .github/workflows/ui.yml                      |   6 +-
 Dockerfile.api                                |   8 +-
 Dockerfile.ui                                 |   7 +-
 Makefile                                      |  33 ++--
 docker-compose.local.yml                      |   2 +
 package-lock.json                             | 169 ++++++++++++++----
 package.json                                  |   4 +-
 packages/api/knexfile.ts                      |   4 +-
 packages/api/nodemon.json                     |   2 +-
 packages/api/package.json                     |  41 ++---
 packages/api/src/api/_format/_fields.ts       |   2 +-
 .../api/src/api/_format/administrations.ts    |   4 +-
 packages/api/src/api/_format/entreprises.ts   |   4 +-
 .../api/src/api/_format/etapes-types.test.ts  |   4 +-
 packages/api/src/api/_format/etapes-types.ts  |  32 ++--
 .../api/src/api/_format/titres-activites.ts   |   6 +-
 .../api/src/api/_format/titres-demarches.ts   |   8 +-
 packages/api/src/api/_format/titres-etapes.ts |  14 +-
 .../api/src/api/_format/titres-sections.ts    |  10 +-
 packages/api/src/api/_format/titres.ts        |  18 +-
 packages/api/src/api/_format/users.ts         |   4 +-
 .../api/src/api/_permissions/utilisateur.ts   |   6 +-
 .../administration.test.integration.ts        |   6 +-
 ...-permissions-demarches.test.integration.ts |   6 +-
 ...ons-permissions-etapes.test.integration.ts |  10 +-
 ...ons-permissions-titres.test.integration.ts |   6 +-
 .../api/graphql/documents.test.integration.ts |  25 +--
 .../graphql/entreprises.test.integration.ts   |  26 +--
 .../src/api/graphql/metas.test.integration.ts |   4 +-
 packages/api/src/api/graphql/resolvers.ts     |  38 ++--
 .../api/graphql/resolvers/_fields-build.ts    |   6 +-
 .../graphql/resolvers/_titre-activite.test.ts |   6 +-
 .../api/graphql/resolvers/_titre-activite.ts  |  17 +-
 .../api/graphql/resolvers/_titre-document.ts  |   4 +-
 .../resolvers/_titre-etape-email.test.ts      |   6 +-
 .../graphql/resolvers/_titre-etape-email.ts   |  12 +-
 .../src/api/graphql/resolvers/_titre-etape.ts |  24 +--
 .../api/graphql/resolvers/administrations.ts  |  20 +--
 .../src/api/graphql/resolvers/documents.ts    |  38 ++--
 .../src/api/graphql/resolvers/entreprises.ts  |  18 +-
 .../api/src/api/graphql/resolvers/journaux.ts |   8 +-
 .../api/graphql/resolvers/metas-activites.ts  |  10 +-
 .../src/api/graphql/resolvers/metas-join.ts   |  14 +-
 .../src/api/graphql/resolvers/metas.test.ts   |  12 +-
 .../api/src/api/graphql/resolvers/metas.ts    |  53 +++---
 .../api/src/api/graphql/resolvers/points.ts   |  37 ++--
 .../statistiques-granulats-marins.ts          |  10 +-
 .../graphql/resolvers/statistiques-guyane.ts  |  12 +-
 .../src/api/graphql/resolvers/statistiques.ts |  24 +--
 .../resolvers/substances.test.integration.ts  |   4 +-
 .../src/api/graphql/resolvers/substances.ts   |   2 +-
 .../api/graphql/resolvers/titre-demande.ts    |  40 ++---
 .../api/graphql/resolvers/titres-activites.ts |  38 ++--
 .../api/graphql/resolvers/titres-demarches.ts |  20 +--
 .../api/graphql/resolvers/titres-etapes.ts    |  64 +++----
 .../api/src/api/graphql/resolvers/titres.ts   |  14 +-
 .../graphql/resolvers/utilisateurs-titres.ts  |   6 +-
 .../src/api/graphql/resolvers/utilisateurs.ts |  30 ++--
 packages/api/src/api/graphql/schemas.ts       |   5 +-
 .../titres-demarches.test.integration.ts      |  14 +-
 .../titres-etapes-creer.test.integration.ts   |  22 +--
 ...titres-etapes-modifier.test.integration.ts |  22 +--
 .../api/graphql/titres.test.integration.ts    |  14 +-
 .../src/api/graphql/token.test.integration.ts |   6 +-
 .../graphql/utilisateurs.test.integration.ts  |  10 +-
 packages/api/src/api/rest/_convert.ts         |   2 +-
 .../api/rest/entreprises.test.integration.ts  |   8 +-
 packages/api/src/api/rest/entreprises.test.ts |   8 +-
 packages/api/src/api/rest/entreprises.ts      |  30 ++--
 packages/api/src/api/rest/fichiers.ts         |  12 +-
 .../api/src/api/rest/format/entreprises.ts    |   2 +-
 .../src/api/rest/format/titres-activites.ts   |   8 +-
 .../src/api/rest/format/titres-demarches.ts   |  14 +-
 .../api/src/api/rest/format/titres.test.ts    |   4 +-
 packages/api/src/api/rest/format/titres.ts    |  18 +-
 .../api/src/api/rest/format/utilisateurs.ts   |   6 +-
 packages/api/src/api/rest/index.ts            |  36 ++--
 .../api/src/api/rest/statistiques/dgtm.ts     |  23 +--
 .../api/rest/statistiques/evolution-titres.ts |  24 +--
 .../api/src/api/rest/statistiques/guyane.ts   |   8 +-
 .../api/src/api/rest/statistiques/index.ts    |  16 +-
 .../api/rest/statistiques/metaux-metropole.ts |  76 ++++----
 .../src/api/rest/titres.test.integration.ts   |  22 +--
 packages/api/src/api/rest/titres.ts           |  52 +++---
 .../src/api/rest/upload.test.integration.ts   |   8 +-
 packages/api/src/api/rest/utilisateurs.ts     |  22 +--
 packages/api/src/business/_logs-update.ts     |   2 +-
 packages/api/src/business/daily.ts            |  44 ++---
 .../api/src/business/entreprises-guyane.ts    |  10 +-
 packages/api/src/business/matrices.test.ts    |   6 +-
 packages/api/src/business/matrices.ts         |  18 +-
 packages/api/src/business/monthly.ts          |   8 +-
 .../processes/__mocks__/entreprises-update.ts |   4 +-
 .../__mocks__/titre-activite-props-update.ts  |   2 +-
 .../__mocks__/titre-fichiers-rename.ts        |   2 +-
 ...s-activites-statut-ids-update-activites.ts |   2 +-
 .../titres-activites-update-titres.ts         |   4 +-
 ...titres-demarches-ordre-update-demarches.ts |   2 +-
 ...itres-demarches-public-update-demarches.ts |   2 +-
 ...s-demarches-statut-ids-update-demarches.ts |   2 +-
 ...s-administrations-locales-update-etapes.ts |   2 +-
 .../titres-etapes-ordre-update-demarches.ts   |   2 +-
 .../__mocks__/titres-phases-update-titres.ts  |   4 +-
 .../__mocks__/titres-public-update-titres.ts  |   2 +-
 .../titres-statut-ids-update-titres.ts        |   2 +-
 .../processes/entreprises-update.test.ts      |  12 +-
 .../business/processes/entreprises-update.ts  |  12 +-
 .../titres-activites-props-update.test.ts     |  10 +-
 .../titres-activites-props-update.ts          |  20 +--
 .../titres-activites-relance-send.test.ts     |  13 +-
 .../titres-activites-relance-send.ts          |  32 ++--
 ...titres-activites-statut-ids-update.test.ts |   6 +-
 .../titres-activites-statut-ids-update.ts     |  11 +-
 .../processes/titres-activites-update.test.ts |  22 +--
 .../processes/titres-activites-update.ts      |  29 ++-
 .../titres-contenus-etapes-ids-update.test.ts |  10 +-
 .../titres-contenus-etapes-ids-update.ts      |   8 +-
 .../titres-coordonnees-update.test.ts         |   8 +-
 .../processes/titres-coordonnees-update.ts    |   6 +-
 .../processes/titres-dates-update.test.ts     |  14 +-
 .../business/processes/titres-dates-update.ts |  12 +-
 .../titres-demarches-depot-create.test.ts     |   4 +-
 .../titres-demarches-depot-create.ts          |  30 ++--
 .../titres-demarches-ordre-update.test.ts     |   6 +-
 .../titres-demarches-ordre-update.ts          |  10 +-
 .../titres-demarches-public-update.test.ts    |   6 +-
 .../titres-demarches-public-update.ts         |  10 +-
 ...titres-demarches-statut-ids-update.test.ts |   6 +-
 .../titres-demarches-statut-ids-update.ts     |  10 +-
 ...pes-administrations-locales-update.test.ts |  14 +-
 ...s-etapes-administrations-locales-update.ts |  16 +-
 ...es-etapes-areas-update.test.integration.ts |  26 +--
 .../processes/titres-etapes-areas-update.ts   |  20 +--
 .../titres-etapes-heritage-contenu-update.ts  |  12 +-
 .../titres-etapes-heritage-props-update.ts    |  12 +-
 .../titres-etapes-ordre-update.test.ts        |  12 +-
 .../processes/titres-etapes-ordre-update.ts   |  10 +-
 .../processes/titres-phases-update.test.ts    |   8 +-
 .../processes/titres-phases-update.ts         |  14 +-
 .../titres-points-references-create.test.ts   |   6 +-
 .../titres-points-references-create.ts        |   4 +-
 .../titres-props-etapes-ids-update.test.ts    |  10 +-
 .../titres-props-etapes-ids-update.ts         |  10 +-
 .../processes/titres-public-update.test.ts    |   6 +-
 .../processes/titres-public-update.ts         |   6 +-
 .../processes/titres-slugs-update.test.ts     |   8 +-
 .../business/processes/titres-slugs-update.ts |   8 +-
 .../titres-statut-ids-update.test.ts          |   6 +-
 .../processes/titres-statut-ids-update.ts     |  11 +-
 .../business/rules-demarches/_utils.test.ts   |  16 +-
 .../rules-demarches/arm/oct.machine.test.ts   |  17 +-
 .../rules-demarches/arm/oct.machine.ts        |  10 +-
 .../rules-demarches/arm/ren-pro.test.ts       |   4 +-
 .../business/rules-demarches/arm/ren-pro.ts   |   4 +-
 .../business/rules-demarches/arm/ret.test.ts  |   4 +-
 .../src/business/rules-demarches/arm/ret.ts   |   4 +-
 .../rules-demarches/axm/oct.machine.test.ts   |  10 +-
 .../rules-demarches/axm/oct.machine.ts        |  10 +-
 .../rules-demarches/definitions.test.ts       |   6 +-
 .../business/rules-demarches/definitions.ts   |  20 +--
 .../business/rules-demarches/etat-cycles.ts   |   2 +-
 .../rules-demarches/machine-common.test.ts    |   8 +-
 .../rules-demarches/machine-common.ts         |  14 +-
 .../rules-demarches/machine-helper.test.ts    |   6 +-
 .../rules-demarches/machine-helper.ts         |   6 +-
 .../rules-demarches/machine-test-helper.ts    |   6 +-
 .../src/business/rules-demarches/machines.ts  |   4 +-
 .../business/rules-demarches/prm/oct.test.ts  |   4 +-
 .../src/business/rules-demarches/prm/oct.ts   |   2 +-
 ...titre-activite-statut-id-find-activites.ts |   2 +-
 .../__mocks__/titre-activites-build-titres.ts |   6 +-
 .../titre-date-debut-find-demarches.ts        |   2 +-
 .../titre-date-demande-find-demarches.ts      |   4 +-
 .../titre-date-fin-find-demarches.ts          |   2 +-
 ...-demarche-date-fin-duree-find-demarches.ts |   6 +-
 .../__mocks__/titre-phases-find-demarches.ts  |   4 +-
 .../titre-prop-etape-find-demarches.ts        |  12 +-
 .../__mocks__/titre-statut-id-find-titres.ts  |   6 +-
 .../titre-activite-statut-id-find.test.ts     |   4 +-
 .../rules/titre-activite-statut-id-find.ts    |   4 +-
 .../rules/titre-activites-build.test.ts       |   6 +-
 .../business/rules/titre-activites-build.ts   |  26 ++-
 .../rules/titre-date-debut-find.test.ts       |   4 +-
 .../business/rules/titre-date-debut-find.ts   |  10 +-
 .../rules/titre-date-demande-find.test.ts     |   4 +-
 .../business/rules/titre-date-demande-find.ts |   8 +-
 .../rules/titre-date-fin-find.test.ts         |   4 +-
 .../src/business/rules/titre-date-fin-find.ts |   6 +-
 ...-demarche-annulation-date-fin-find.test.ts |  10 +-
 ...titre-demarche-annulation-date-fin-find.ts |   6 +-
 ...titre-demarche-date-fin-duree-find.test.ts |   4 +-
 .../titre-demarche-date-fin-duree-find.ts     |  13 +-
 .../titre-demarche-depot-demande-date-find.ts |   2 +-
 ...re-demarche-octroi-date-debut-find.test.ts |   4 +-
 .../titre-demarche-octroi-date-debut-find.ts  |   8 +-
 .../rules/titre-demarche-phase-check.test.ts  |   4 +-
 .../rules/titre-demarche-phase-check.ts       |   8 +-
 .../rules/titre-demarche-public-find.test.ts  |  10 +-
 .../rules/titre-demarche-public-find.ts       |   4 +-
 .../titre-demarche-statut-id-find.test.ts     |  12 +-
 .../rules/titre-demarche-statut-id-find.ts    |  12 +-
 .../rules/titre-etape-prop-find.test.ts       |   4 +-
 .../business/rules/titre-etape-prop-find.ts   |  10 +-
 .../titre-etape-publication-check.test.ts     |   2 +-
 .../business/rules/titre-phases-find.test.ts  |  10 +-
 .../src/business/rules/titre-phases-find.ts   |  14 +-
 .../rules/titre-prop-etape-find.test.ts       |  10 +-
 .../business/rules/titre-prop-etape-find.ts   |  23 ++-
 .../rules/titre-statut-id-find.test.ts        |   8 +-
 .../business/rules/titre-statut-id-find.ts    |   6 +-
 .../api/src/business/titre-demarche-update.ts |  30 ++--
 .../api/src/business/titre-etape-update.ts    |  48 ++---
 packages/api/src/business/titre-update.ts     |   8 +-
 .../__mocks__/titre-activite-type-check.ts    |   5 +-
 .../utils/__mocks__/titre-coordonnees-find.ts |   2 +-
 .../titre-demarches-asc-sort-demarches.ts     |   2 +-
 .../__mocks__/titre-valide-check-demarches.ts |   2 +-
 .../contenu-element-file-process.test.ts      |  17 +-
 .../utils/contenu-element-file-process.ts     |   8 +-
 .../api/src/business/utils/prop-value-find.ts |   2 +-
 .../utils/props-titre-etapes-ids-find.test.ts |   4 +-
 .../utils/props-titre-etapes-ids-find.ts      |   6 +-
 .../utils/titre-activite-type-check.test.ts   |   4 +-
 .../utils/titre-activite-type-check.ts        |   6 +-
 .../utils/titre-activite-valide-check.test.ts |   6 +-
 .../utils/titre-activite-valide-check.ts      |  12 +-
 .../utils/titre-coordonnees-find.test.ts      |   6 +-
 .../business/utils/titre-coordonnees-find.ts  |   4 +-
 .../utils/titre-demarches-etapes-rebuild.ts   |   6 +-
 .../utils/titre-elements-sort-asc.test.ts     |   4 +-
 .../business/utils/titre-elements-sort-asc.ts |   4 +-
 ...tre-etape-demarche-etape-type-find.test.ts |   4 +-
 .../titre-etape-demarche-etape-type-find.ts   |   4 +-
 .../titre-etape-heritage-contenu-find.test.ts |   8 +-
 .../titre-etape-heritage-contenu-find.ts      |   4 +-
 .../titre-etape-heritage-props-find.test.ts   |   6 +-
 .../utils/titre-etape-heritage-props-find.ts  |  10 +-
 .../business/utils/titre-etapes-sort.test.ts  |   6 +-
 .../src/business/utils/titre-etapes-sort.ts   |   6 +-
 ...g-and-relations-update.test.integration.ts |  14 +-
 .../utils/titre-slug-and-relations-update.ts  |  20 +--
 .../business/utils/titre-valide-check.test.ts |  10 +-
 .../src/business/utils/titre-valide-check.ts  |   6 +-
 .../api/src/business/utils/urls-get.test.ts   |   7 +-
 packages/api/src/business/utils/urls-get.ts   |   4 +-
 .../__mocks__/contenu-dates-check-contenus.ts |   2 +-
 .../contenu-numbers-check-contenus.ts         |   2 +-
 .../__mocks__/titre-etape-numbers-validate.ts |   2 +-
 .../__mocks__/titre-etape-points-validate.ts  |   2 +-
 .../validations/document-input-validate.ts    |   4 +-
 .../validations/document-updation-validate.ts |   4 +-
 .../documents-types-validate.test.ts          |   6 +-
 .../validations/documents-types-validate.ts   |   4 +-
 .../titre-activite-complete-check.ts          |   6 +-
 .../titre-activite-deletion-validate.ts       |   2 +-
 .../titre-activite-input-validate.ts          |   8 +-
 .../titre-demarche-etat-validate.test.ts      |   8 +-
 .../titre-demarche-etat-validate.ts           |  16 +-
 .../titre-demarche-updation-validate.ts       |   2 +-
 .../titre-etape-etat-validate.test.ts         |   8 +-
 .../validations/titre-etape-etat-validate.ts  |   4 +-
 .../titre-etape-points-validate.test.ts       |   4 +-
 .../titre-etape-points-validate.ts            |   2 +-
 ...tre-etape-type-and-status-validate.test.ts |   6 +-
 .../titre-etape-type-and-status-validate.ts   |  10 +-
 .../titre-etape-updation-validate.test.ts     |  17 +-
 .../titre-etape-updation-validate.ts          |  36 ++--
 .../validations/titre-links-validate.ts       |   4 +-
 .../utilisateur-updation-validate.ts          |   6 +-
 .../utils/contenu-dates-check.test.ts         |   4 +-
 .../validations/utils/contenu-dates-check.ts  |   4 +-
 .../utils/contenu-numbers-check.test.ts       |   4 +-
 .../utils/contenu-numbers-check.ts            |   2 +-
 .../utils/heritage-contenu-validate.test.ts   |   4 +-
 .../utils/heritage-contenu-validate.ts        |   2 +-
 .../validations/utils/props-dates-check.ts    |   4 +-
 packages/api/src/config/files.ts              |   4 +-
 packages/api/src/config/logger.test.ts        |   2 +-
 packages/api/src/config/proj4.ts              |   2 +-
 packages/api/src/daily_tasks.ts               |  18 +-
 packages/api/src/database/init.ts             |  12 +-
 .../src/database/models/_format/id-create.ts  |   2 +-
 .../models/_format/titre-contenu.test.ts      |   4 +-
 .../database/models/_format/titre-contenu.ts  |   2 +-
 .../models/_format/titre-etape-heritage.ts    |   6 +-
 .../src/database/models/activites-statuts.ts  |   2 +-
 .../activites-types--documents-types.ts       |   2 +-
 .../database/models/activites-types--pays.ts  |   2 +-
 .../models/activites-types--titres-types.ts   |   2 +-
 .../src/database/models/activites-types.ts    |  10 +-
 .../administrations-activites-types-emails.ts |   2 +-
 .../models/administrations-activites-types.ts |   2 +-
 ...ministrations-titres-types-etapes-types.ts |   6 +-
 ...nistrations-titres-types-titres-statuts.ts |   4 +-
 .../src/database/models/administrations.ts    |  10 +-
 packages/api/src/database/models/caches.ts    |   2 +-
 packages/api/src/database/models/communes.ts  |   2 +-
 .../src/database/models/demarches-types.ts    |   4 +-
 .../src/database/models/documents-types.ts    |   4 +-
 packages/api/src/database/models/documents.ts |  10 +-
 packages/api/src/database/models/domaines.ts  |   4 +-
 .../models/entreprises-etablissements.ts      |   2 +-
 .../api/src/database/models/entreprises.ts    |  10 +-
 .../etapes-types--justificatifs-types.ts      |   2 +-
 .../api/src/database/models/etapes-types.ts   |   6 +-
 packages/api/src/database/models/forets.ts    |   2 +-
 packages/api/src/database/models/journaux.ts  |   8 +-
 .../api/src/database/models/sdom-zones.ts     |   2 +-
 .../src/database/models/titres--sdom-zones.ts |   2 +-
 .../api/src/database/models/titres--titres.ts |   2 +-
 .../src/database/models/titres-activites.ts   |  16 +-
 .../src/database/models/titres-communes.ts    |   2 +-
 .../src/database/models/titres-demarches.ts   |  14 +-
 .../models/titres-etapes-justificatifs.ts     |   6 +-
 .../api/src/database/models/titres-etapes.ts  |  24 +--
 .../api/src/database/models/titres-forets.ts  |   2 +-
 .../database/models/titres-incertitudes.ts    |   2 +-
 .../api/src/database/models/titres-phases.ts  |   2 +-
 .../models/titres-points-references.ts        |   4 +-
 .../api/src/database/models/titres-points.ts  |   6 +-
 ...-types-etapes-types-justificatifs-types.ts |   2 +-
 ...res-types--demarches-types-etapes-types.ts |   8 +-
 .../models/titres-types--demarches-types.ts   |   2 +-
 .../src/database/models/titres-types-types.ts |   4 +-
 .../api/src/database/models/titres-types.ts   |   8 +-
 packages/api/src/database/models/titres.ts    |  30 ++--
 .../database/models/utilisateurs--titres.ts   |   4 +-
 .../api/src/database/models/utilisateurs.ts   |   6 +-
 .../src/database/queries/_titres-filters.ts   |  14 +-
 .../api/src/database/queries/_utils.test.ts   |   2 +-
 .../src/database/queries/administrations.ts   |  24 +--
 packages/api/src/database/queries/caches.ts   |   4 +-
 .../api/src/database/queries/documents.ts     |  12 +-
 .../queries/entreprises-etablissements.ts     |   6 +-
 .../api/src/database/queries/entreprises.ts   |  20 +--
 .../api/src/database/queries/graph/build.ts   |   4 +-
 .../src/database/queries/graph/fields-add.ts  |   2 +-
 packages/api/src/database/queries/journaux.ts |  14 +-
 .../src/database/queries/metas-activites.ts   |  18 +-
 packages/api/src/database/queries/metas.ts    |  42 ++---
 .../administrations.test.integration.ts       |  22 +--
 .../queries/permissions/administrations.ts    |  20 +--
 .../permissions/documents.test.integration.ts |  24 +--
 .../database/queries/permissions/documents.ts |  12 +-
 .../entreprises.test.integration.ts           |  14 +-
 .../queries/permissions/entreprises.ts        |  20 +--
 .../database/queries/permissions/journaux.ts  |  14 +-
 .../permissions/metas.test.integration.ts     |  20 +--
 .../src/database/queries/permissions/metas.ts |  24 +--
 .../queries/permissions/titres-activites.ts   |  18 +-
 .../titres-demarches.test.integration.ts      |  20 +--
 .../queries/permissions/titres-demarches.ts   |  20 +--
 .../titres-etapes.test.integration.ts         |  16 +-
 .../queries/permissions/titres-etapes.ts      |  29 +--
 .../permissions/titres.test.integration.ts    |  30 ++--
 .../database/queries/permissions/titres.ts    |  35 ++--
 .../utilisateurs.test.integration.ts          |  14 +-
 .../queries/permissions/utilisateurs.ts       |  10 +-
 .../titres-activites.test.integration.ts      |  15 +-
 .../src/database/queries/titres-activites.ts  |  18 +-
 .../titres-demarches.test.integration.ts      |  14 +-
 .../src/database/queries/titres-demarches.ts  |  24 +--
 .../api/src/database/queries/titres-etapes.ts |  18 +-
 .../api/src/database/queries/titres-phases.ts |   6 +-
 .../api/src/database/queries/titres-points.ts |   8 +-
 .../api/src/database/queries/titres-titres.ts |   2 +-
 .../queries/titres.test.integration.ts        |  14 +-
 packages/api/src/database/queries/titres.ts   |  24 +--
 .../api/src/database/queries/utilisateurs.ts  |  18 +-
 packages/api/src/database/user-super.ts       |   2 +-
 packages/api/src/dev/api-communes-call.js     |  32 ----
 packages/api/src/dev/api-insee-call.js        |  45 -----
 .../src/dev/api/_introspection-query.graphql  |  99 ----------
 .../dev/api/graphql-dsl-to-query-convert.js   |  23 ---
 .../database/fix--titres--doublon-titre-id.ts |  24 ---
 packages/api/src/dev/database/fix-tde.ts      |  49 -----
 .../dev/database/titres-activites-delete.ts   |  39 ----
 .../dev/database/titres-contenu-optionnel.ts  |  40 -----
 .../api/src/dev/database/titres-to-csv.ts     |  26 ---
 packages/api/src/dev/tmp/.keep                |   0
 packages/api/src/index.ts                     |  24 +--
 packages/api/src/init.ts                      |   4 +-
 packages/api/src/knex/cli-user-add.ts         |   8 +-
 packages/api/src/knex/config.ts               |  18 +-
 packages/api/src/knex/db-manager-config.ts    |   2 +-
 packages/api/src/knex/migrate.ts              |   2 +-
 .../{migration-stub.js => migration-stub.ts}  |   6 +-
 ...11103110922_etapes_statuts_complet_add.ts} |   5 +-
 ...35837_titres_etapes_incertitudes_clean.ts} |   9 +-
 ...hes_statuts_travaux_finpolicemines_add.ts} |   5 +-
 ...s_travaux_publi_recueil_acte_admin_add.ts} |   5 +-
 ...x_arrete_ouverture_travaux_miniers_add.ts} |   5 +-
 ...211215100715_utilisateurs-camino-create.js |  10 --
 ...211215100715_utilisateurs-camino-create.ts |  11 ++
 ...etapes_travaux_porter_connaissance_add.ts} |   7 +-
 ...220119122515_document_type_jpa_migrate.ts} |  15 +-
 ...s => 20220127132757_etapes_types_clean.ts} |  17 +-
 ...5904_titres_activites_wrp_masse_delete.ts} |  11 +-
 ...64929_titres_etapes_asl_heritage_clean.ts} |   5 +-
 ....js => 20220519123402_supprime-mid-rid.ts} |   5 +-
 ...=> 20220609145836_fix-substances-ordre.ts} |   5 +-
 ...=> 20220615122602_bureau-etudes-create.ts} |   5 +-
 ...ve-plg.js => 20220704122231_remove-plg.ts} |   5 +-
 ...0330_demarches-types-fusion-concession.ts} |   5 +-
 ...26122406_activites-fiscales-unites-fix.ts} |  19 +-
 ...0220816140444_substances-ordre-required.js |  27 ---
 ...0220816140444_substances-ordre-required.ts |  33 ++++
 ...20830145751_document-notice-impact-fix.ts} |   5 +-
 ...ibilite-des-titres-stockage-souterrain.ts} |   5 +-
 ...19080302_ajout-tde-ppu-ppc-afp-ars-aac.ts} |   5 +-
 ...7143442_delete-entreprises-titres-types.js |   5 -
 ...7143442_delete-entreprises-titres-types.ts |   6 +
 .../20180521000000_globales.js                |   7 -
 .../20180521000000_globales.ts                |   9 +
 ... 20180521000001_domaines_types_statuts.ts} |   5 +-
 ....js => 20180521000002_demarches_etapes.ts} |   5 +-
 ...003_unites.js => 20180521000003_unites.ts} |   5 +-
 ...tances.js => 20180521000004_substances.ts} |   5 +-
 ...oires.js => 20180521000005_territoires.ts} |   5 +-
 ...ndrier.js => 20180521000006_calendrier.ts} |   5 +-
 ...s.js => 20180521000007_metas_activites.ts} |   5 +-
 ...aux.js => 20180521000008_metas_travaux.ts} |   5 +-
 ...rtoire.js => 20180521000009_repertoire.ts} |   5 +-
 ...001_titres.js => 20180522000001_titres.ts} |   7 +-
 ...20180522000002_titres_demarches_etapes.ts} |   5 +-
 ...0003_titres_etapes_substances_emprises.ts} |   5 +-
 ...itulaires_amodiataires_administrations.ts} |   5 +-
 ...=> 20180522000005_titres_etapes_points.ts} |  10 +-
 ...180522000006_titres_etapes_territoires.ts} |   5 +-
 ...js => 20180522000009_titres_references.ts} |   5 +-
 ....js => 20181106000002_titres_activites.ts} |   5 +-
 ...ux.js => 20181106000004_titres_travaux.ts} |   5 +-
 ...cuments.js => 20181106000006_documents.ts} |   5 +-
 ...tions.js => 20181106000007_definitions.ts} |   5 +-
 .../migrations-schema/20181106000008_cache.js |   7 -
 .../migrations-schema/20181106000008_cache.ts |   8 +
 ...5144021_logs.js => 20210915144021_logs.ts} |   5 +-
 ...te.js => 20210928170751_travaux_delete.ts} |   5 +-
 ...=> 20210929153443_metas_travaux_delete.ts} |   5 +-
 .../20210930103844_titres_administrations.js  |  21 ---
 .../20210930103844_titres_administrations.ts  |  23 +++
 ...trations-activites-types-emails-create.ts} |   5 +-
 ...20211027103109_logs_column_titreId_add.ts} |   5 +-
 ...js => 20211110153616_sdom-zones-create.ts} |   5 +-
 ...11123162004_utilisateurs-titres_create.ts} |   6 +-
 ...41738_titres_demarches_description_add.ts} |   5 +-
 ...142302_titres_etapes_decisions_annexes.ts} |   5 +-
 ...s => 20220308161359_titres_archive_add.ts} |   5 +-
 .../20220325105157_remove-definitions.js      |   3 -
 .../20220325105157_remove-definitions.ts      |   4 +
 ... 20220427075921_administrations_delete.ts} |   5 +-
 ...54122_ajoute-date-creation-utilisateur.ts} |   5 +-
 ...220512121252_supprime-satisfaction-url.ts} |   5 +-
 .../20220518064538_geo_systemes_delete.js     |   5 -
 .../20220518064538_geo_systemes_delete.ts     |   6 +
 .../20220518122355_supprime-devises.js        |   5 -
 .../20220518122355_supprime-devises.ts        |   6 +
 ...220531134336_remove-substances-fiscales.js |   5 -
 ...220531134336_remove-substances-fiscales.ts |   6 +
 .../20220601063231_unites_delete.js           |   5 -
 .../20220601063231_unites_delete.ts           |   6 +
 ...09145846_fix-substances-ordre-required.ts} |   5 +-
 ...js => 20220613152312_remove-permission.ts} |   5 +-
 ...04_utilisateurs-administrations-delete.ts} |   5 +-
 ...s => 20220704122849_territoires-delete.ts} |   5 +-
 ...> 20220705125716_administration-delete.ts} |   5 +-
 ...=> 20220706145651_titres-titres-create.ts} |   5 +-
 ...20220727082824_supprime-etapes-statuts.ts} |   5 +-
 ...0150111_substances-legales-code-delete.ts} |   5 +-
 ...js => 20220816143105_substances-delete.ts} |  10 +-
 ... => 20220819154128_supprime-frequences.ts} |   5 +-
 ...s => 20220825083849_territoires-create.ts} |   5 +-
 ... => 20220830095725_supprime-newsletter.ts} |   5 +-
 ...0220901075840_demarches-statuts-delete.ts} |   5 +-
 ...deplace-donnees-postgis-hors-objection.ts} |   5 +-
 ...stances-dune-etapes-ne-sont-jamais-nul.ts} |   5 +-
 ...20220907070928_supprime-titres-statuts.ts} |   5 +-
 ...20220930084703_supprime-phases-statuts.ts} |   5 +-
 .../20221004061133_globales-delete.js         |   3 -
 .../20221004061133_globales-delete.ts         |   4 +
 ...js => 20221004061444_references-delete.ts} |   5 +-
 ... 20221012094400_utilisateur-qgis-token.ts} |   5 +-
 ...> 20221012121906_add-facades-maritimes.ts} |   5 +-
 ...static.js => 20221017122409_tde-static.ts} |   5 +-
 ...033_administrations-titres-types-delete.js |   3 -
 ...033_administrations-titres-types-delete.ts |   5 +
 ...1020141021_supprime-secteurs-maritimes.ts} |   5 +-
 ...21121056_delete-titres-administrations.ts} |   5 +-
 ...2801_delete-titres-types-titres-statuts.js |   5 -
 ...2801_delete-titres-types-titres-statuts.ts |   6 +
 ...47_delete-useless-columns-etapes-types.ts} |   5 +-
 ...ete-titres-administrations-gestionnaire.js |   5 -
 ...ete-titres-administrations-gestionnaire.ts |   6 +
 .../api/src/knex/migrations-schema/toto.sh    |   3 +
 packages/api/src/knex/seeding.js              |  31 ----
 packages/api/src/knex/seeding.ts              |  39 ++++
 .../knex/seeds/{03-metas.js => 03-metas.ts}   |  13 +-
 ...tas-activites.js => 06-metas-activites.ts} |  14 +-
 .../api/src/knex/seeds/07-administrations.js  | 145 ---------------
 .../api/src/knex/seeds/07-administrations.ts  |   7 +
 ...8-autorisations.js => 08-autorisations.ts} |  15 +-
 packages/api/src/knex/user-add.ts             |   4 +-
 packages/api/src/monthly_tasks.ts             |   6 +-
 .../api/src/scripts/administrations-update.ts |   6 +-
 packages/api/src/scripts/daily.ts             |   2 +-
 .../src/scripts/database-to-json-export.ts    |   2 +-
 .../scripts/demarches-definitions-check.ts    |   2 +-
 .../scripts/demarches-etape-statut-check.ts   |   2 +-
 .../api/src/scripts/demarches-tde-check.ts    |   2 +-
 packages/api/src/scripts/documents-check.ts   |   2 +-
 packages/api/src/scripts/documents-clean.ts   |   2 +-
 .../api/src/scripts/entreprises-guyane.ts     |   2 +-
 packages/api/src/scripts/matrices.ts          |   2 +-
 packages/api/src/scripts/monthly.ts           |   2 +-
 .../api/src/scripts/territoires-update.ts     |   2 +-
 packages/api/src/server/auth-basic.ts         |   4 +-
 packages/api/src/server/auth-jwt.ts           |   4 +-
 packages/api/src/server/graphql.ts            |   4 +-
 packages/api/src/server/rest.ts               |  26 ++-
 packages/api/src/server/upload.ts             |   4 +-
 packages/api/src/tools/annees-build.test.ts   |   2 +-
 .../src/tools/api-administrations/index.ts    |   6 +-
 packages/api/src/tools/api-cerbere/index.ts   |   2 +-
 packages/api/src/tools/api-insee/fetch.ts     |   4 +-
 packages/api/src/tools/api-insee/format.ts    |  24 ++-
 packages/api/src/tools/api-insee/index.ts     |   8 +-
 packages/api/src/tools/api-mailjet/emails.ts  |   4 +-
 packages/api/src/tools/api-mailjet/index.ts   |   1 +
 .../api/src/tools/api-mailjet/newsletter.ts   |   2 +-
 .../api/src/tools/api-matomo/index.test.ts    |   2 +-
 packages/api/src/tools/api-matomo/index.ts    |   4 +-
 packages/api/src/tools/api-openfisca/index.ts |   4 +-
 .../api/src/tools/database-to-json/index.ts   |   6 +-
 packages/api/src/tools/date.test.ts           |  16 +-
 packages/api/src/tools/date.ts                |  10 +-
 .../src/tools/demarches/definitions-check.ts  |  10 +-
 .../src/tools/demarches/etape-statut-check.ts |   8 +-
 packages/api/src/tools/demarches/tde-check.ts |   6 +-
 .../api/src/tools/demarches/tests-creation.ts |  10 +-
 packages/api/src/tools/dir-create.ts          |   2 +-
 packages/api/src/tools/dir-delete.ts          |   2 +-
 packages/api/src/tools/documents/_types.ts    |   2 +-
 packages/api/src/tools/documents/_utils.ts    |   2 +-
 packages/api/src/tools/documents/check.ts     |  10 +-
 packages/api/src/tools/documents/clean.ts     |  10 +-
 .../src/tools/documents/document-path-find.ts |   6 +-
 .../documents/document-repertoire-find.ts     |   2 +-
 .../tools/documents/documents-files-check.ts  |   6 +-
 .../tools/documents/documents-index-build.ts  |  10 +-
 .../tools/documents/files-document-check.ts   |  14 +-
 .../tools/documents/files-index-build.test.ts |   2 +-
 .../src/tools/documents/files-index-build.ts  |   2 +-
 .../tools/documents/files-path-check.test.ts  |   4 +-
 .../src/tools/documents/files-path-check.ts   |   4 +-
 packages/api/src/tools/file-create.test.ts    |   2 +-
 packages/api/src/tools/file-create.ts         |   2 +-
 packages/api/src/tools/file-delete.ts         |   2 +-
 packages/api/src/tools/file-rename.test.ts    |   4 +-
 packages/api/src/tools/file-rename.ts         |   2 +-
 packages/api/src/tools/file-stream-create.ts  |   2 +-
 packages/api/src/tools/geo-convert.test.ts    |   4 +-
 packages/api/src/tools/geo-convert.ts         |   4 +-
 packages/api/src/tools/geojson.ts             |  10 +-
 packages/api/src/tools/index.test.ts          |   2 +-
 packages/api/src/tools/index.ts               |   2 +-
 packages/api/src/tools/territoires-update.ts  |  23 ++-
 packages/api/src/types.ts                     |  55 +++---
 .../api/tests/__mocks__/fetch-insee-api.ts    |   2 +-
 .../_utils/administrations-permissions.ts     |  36 ++--
 packages/api/tests/_utils/administrations.ts  |   4 +-
 packages/api/tests/_utils/index.ts            |  16 +-
 packages/api/tests/app.ts                     |   8 +-
 packages/api/tests/db-manager.ts              |  16 +-
 packages/api/tests/setup.ts                   |   8 -
 packages/api/tsconfig.json                    |  13 +-
 packages/api/vitest.integration.config.ts     |   3 +-
 packages/common/package.json                  |   1 +
 packages/common/src/date.test.ts              |  22 +--
 packages/common/src/date.ts                   |  15 +-
 packages/common/src/entreprise.ts             |   2 +-
 packages/common/src/etape.ts                  |   8 +-
 packages/common/src/fiscalite.test.ts         |   2 +-
 packages/common/src/fiscalite.ts              |   8 +-
 .../src/permissions/administrations.test.ts   |   6 +-
 .../common/src/permissions/administrations.ts |   6 +-
 .../src/permissions/titres-etapes.test.ts     |  12 +-
 .../common/src/permissions/titres-etapes.ts   |   8 +-
 .../common/src/permissions/titres.test.ts     |   8 +-
 packages/common/src/permissions/titres.ts     |  10 +-
 packages/common/src/roles.test.ts             |   4 +-
 packages/common/src/roles.ts                  |   4 +-
 .../common/src/static/administrations.test.ts |   2 +-
 packages/common/src/static/administrations.ts |   6 +-
 .../static/administrationsTitresTypes.test.ts |   6 +-
 .../src/static/administrationsTitresTypes.ts  |   6 +-
 .../common/src/static/demarchesStatuts.ts     |   4 +-
 .../common/src/static/demarchesTypes.test.ts  |   2 +-
 packages/common/src/static/demarchesTypes.ts  |   2 +-
 .../common/src/static/departement.test.ts     |   2 +-
 packages/common/src/static/departement.ts     |   4 +-
 packages/common/src/static/devise.ts          |   2 +-
 .../common/src/static/documentsTypes.test.ts  |   2 +-
 packages/common/src/static/domaines.test.ts   |   2 +-
 packages/common/src/static/domaines.ts        |   2 +-
 packages/common/src/static/etapesStatuts.ts   |   2 +-
 packages/common/src/static/etapesTypes.ts     |   2 +-
 .../static/etapesTypesEtapesStatuts.test.ts   |   6 +-
 .../src/static/etapesTypesEtapesStatuts.ts    |   4 +-
 packages/common/src/static/facades.test.ts    |   4 +-
 packages/common/src/static/facades.ts         |   4 +-
 packages/common/src/static/frequence.test.ts  |   2 +-
 packages/common/src/static/pays.test.ts       |   2 +-
 packages/common/src/static/phasesStatuts.ts   |   2 +-
 packages/common/src/static/region.test.ts     |   2 +-
 packages/common/src/static/region.ts          |   2 +-
 .../src/static/substancesFiscales.test.ts     |   2 +-
 .../common/src/static/substancesFiscales.ts   |   4 +-
 .../src/static/substancesLegales.test.ts      |   2 +-
 .../common/src/static/substancesLegales.ts    |   2 +-
 packages/common/src/static/titresStatuts.ts   |   4 +-
 .../common/src/static/titresTypes.test.ts     |   4 +-
 packages/common/src/static/titresTypes.ts     |   4 +-
 .../src/static/titresTypesTypes.test.ts       |   2 +-
 .../common/src/static/titresTypesTypes.ts     |   2 +-
 ...esTypesTypes_domaine_titresStatuts.test.ts |  10 +-
 .../titresTypesTypes_domaine_titresStatuts.ts |  12 +-
 ...esTypes_demarchesTypes_etapesTypes.test.ts |   2 +-
 .../titresTypes_demarchesTypes_etapesTypes.ts |  14 +-
 packages/common/src/static/unites.test.ts     |   2 +-
 packages/common/src/statistiques.ts           |  12 +-
 packages/common/src/titres-references.ts      |   2 +-
 packages/common/src/titres.ts                 |  12 +-
 packages/common/src/typescript-tools.test.ts  |   8 +-
 packages/common/tsconfig.json                 |  19 +-
 packages/ui/package.json                      |   1 -
 .../ui/src/components/dashboard/testData.ts   |  64 +++----
 packages/ui/src/components/entreprise.vue     |   8 +-
 .../pure-entreprise-fiscalite.stories.ts      |  22 +--
 .../pure-guyane.NoStoryshots.stories.ts       |  98 +++++-----
 ...x-metaux-metropole.NoStoryshots.stories.ts |  78 ++++----
 .../pure-mineraux-metaux-metropole.vue        |   2 +-
 644 files changed, 3200 insertions(+), 3433 deletions(-)
 delete mode 100644 packages/api/src/dev/api-communes-call.js
 delete mode 100644 packages/api/src/dev/api-insee-call.js
 delete mode 100644 packages/api/src/dev/api/_introspection-query.graphql
 delete mode 100644 packages/api/src/dev/api/graphql-dsl-to-query-convert.js
 delete mode 100644 packages/api/src/dev/database/fix--titres--doublon-titre-id.ts
 delete mode 100644 packages/api/src/dev/database/fix-tde.ts
 delete mode 100644 packages/api/src/dev/database/titres-activites-delete.ts
 delete mode 100644 packages/api/src/dev/database/titres-contenu-optionnel.ts
 delete mode 100644 packages/api/src/dev/database/titres-to-csv.ts
 delete mode 100644 packages/api/src/dev/tmp/.keep
 rename packages/api/src/knex/{migration-stub.js => migration-stub.ts} (59%)
 rename packages/api/src/knex/migrations-data/{20211103110922_etapes_statuts_complet_add.js => 20211103110922_etapes_statuts_complet_add.ts} (90%)
 rename packages/api/src/knex/migrations-data/{20211103135837_titres_etapes_incertitudes_clean.js => 20211103135837_titres_etapes_incertitudes_clean.ts} (79%)
 rename packages/api/src/knex/migrations-data/{20211116154026_demarches_statuts_travaux_finpolicemines_add.js => 20211116154026_demarches_statuts_travaux_finpolicemines_add.ts} (67%)
 rename packages/api/src/knex/migrations-data/{20211123084623_metas_travaux_publi_recueil_acte_admin_add.js => 20211123084623_metas_travaux_publi_recueil_acte_admin_add.ts} (80%)
 rename packages/api/src/knex/migrations-data/{20211201135203_etapes_travaux_arrete_ouverture_travaux_miniers_add.js => 20211201135203_etapes_travaux_arrete_ouverture_travaux_miniers_add.ts} (88%)
 delete mode 100644 packages/api/src/knex/migrations-data/20211215100715_utilisateurs-camino-create.js
 create mode 100644 packages/api/src/knex/migrations-data/20211215100715_utilisateurs-camino-create.ts
 rename packages/api/src/knex/migrations-data/{20220104133620_etapes_travaux_porter_connaissance_add.js => 20220104133620_etapes_travaux_porter_connaissance_add.ts} (83%)
 rename packages/api/src/knex/migrations-data/{20220119122515_document_type_jpa_migrate.js => 20220119122515_document_type_jpa_migrate.ts} (80%)
 rename packages/api/src/knex/migrations-data/{20220127132757_etapes_types_clean.js => 20220127132757_etapes_types_clean.ts} (85%)
 rename packages/api/src/knex/migrations-data/{20220404145904_titres_activites_wrp_masse_delete.js => 20220404145904_titres_activites_wrp_masse_delete.ts} (64%)
 rename packages/api/src/knex/migrations-data/{20220427064929_titres_etapes_asl_heritage_clean.js => 20220427064929_titres_etapes_asl_heritage_clean.ts} (84%)
 rename packages/api/src/knex/migrations-data/{20220519123402_supprime-mid-rid.js => 20220519123402_supprime-mid-rid.ts} (81%)
 rename packages/api/src/knex/migrations-data/{20220609145836_fix-substances-ordre.js => 20220609145836_fix-substances-ordre.ts} (93%)
 rename packages/api/src/knex/migrations-data/{20220615122602_bureau-etudes-create.js => 20220615122602_bureau-etudes-create.ts} (59%)
 rename packages/api/src/knex/migrations-data/{20220704122231_remove-plg.js => 20220704122231_remove-plg.ts} (60%)
 rename packages/api/src/knex/migrations-data/{20220706130330_demarches-types-fusion-concession.js => 20220706130330_demarches-types-fusion-concession.ts} (81%)
 rename packages/api/src/knex/migrations-data/{20220726122406_activites-fiscales-unites-fix.js => 20220726122406_activites-fiscales-unites-fix.ts} (74%)
 delete mode 100644 packages/api/src/knex/migrations-data/20220816140444_substances-ordre-required.js
 create mode 100644 packages/api/src/knex/migrations-data/20220816140444_substances-ordre-required.ts
 rename packages/api/src/knex/migrations-data/{20220830145751_document-notice-impact-fix.js => 20220830145751_document-notice-impact-fix.ts} (87%)
 rename packages/api/src/knex/migrations-data/{20220905150740_change-la-visibilite-des-titres-stockage-souterrain.js => 20220905150740_change-la-visibilite-des-titres-stockage-souterrain.ts} (65%)
 rename packages/api/src/knex/migrations-data/{20221019080302_ajout-tde-ppu-ppc-afp-ars-aac.js => 20221019080302_ajout-tde-ppu-ppc-afp-ars-aac.ts} (82%)
 delete mode 100644 packages/api/src/knex/migrations-data/20221107143442_delete-entreprises-titres-types.js
 create mode 100644 packages/api/src/knex/migrations-data/20221107143442_delete-entreprises-titres-types.ts
 delete mode 100644 packages/api/src/knex/migrations-schema/20180521000000_globales.js
 create mode 100644 packages/api/src/knex/migrations-schema/20180521000000_globales.ts
 rename packages/api/src/knex/migrations-schema/{20180521000001_domaines_types_statuts.js => 20180521000001_domaines_types_statuts.ts} (94%)
 rename packages/api/src/knex/migrations-schema/{20180521000002_demarches_etapes.js => 20180521000002_demarches_etapes.ts} (98%)
 rename packages/api/src/knex/migrations-schema/{20180521000003_unites.js => 20180521000003_unites.ts} (91%)
 rename packages/api/src/knex/migrations-schema/{20180521000004_substances.js => 20180521000004_substances.ts} (95%)
 rename packages/api/src/knex/migrations-schema/{20180521000005_territoires.js => 20180521000005_territoires.ts} (92%)
 rename packages/api/src/knex/migrations-schema/{20180521000006_calendrier.js => 20180521000006_calendrier.ts} (90%)
 rename packages/api/src/knex/migrations-schema/{20180521000007_metas_activites.js => 20180521000007_metas_activites.ts} (95%)
 rename packages/api/src/knex/migrations-schema/{20180521000008_metas_travaux.js => 20180521000008_metas_travaux.ts} (95%)
 rename packages/api/src/knex/migrations-schema/{20180521000009_repertoire.js => 20180521000009_repertoire.ts} (98%)
 rename packages/api/src/knex/migrations-schema/{20180522000001_titres.js => 20180522000001_titres.ts} (82%)
 rename packages/api/src/knex/migrations-schema/{20180522000002_titres_demarches_etapes.js => 20180522000002_titres_demarches_etapes.ts} (96%)
 rename packages/api/src/knex/migrations-schema/{20180522000003_titres_etapes_substances_emprises.js => 20180522000003_titres_etapes_substances_emprises.ts} (83%)
 rename packages/api/src/knex/migrations-schema/{20180522000004_titres_etapes_utilisateurs_titulaires_amodiataires_administrations.js => 20180522000004_titres_etapes_utilisateurs_titulaires_amodiataires_administrations.ts} (95%)
 rename packages/api/src/knex/migrations-schema/{20180522000005_titres_etapes_points.js => 20180522000005_titres_etapes_points.ts} (87%)
 rename packages/api/src/knex/migrations-schema/{20180522000006_titres_etapes_territoires.js => 20180522000006_titres_etapes_territoires.ts} (90%)
 rename packages/api/src/knex/migrations-schema/{20180522000009_titres_references.js => 20180522000009_titres_references.ts} (82%)
 rename packages/api/src/knex/migrations-schema/{20181106000002_titres_activites.js => 20181106000002_titres_activites.ts} (85%)
 rename packages/api/src/knex/migrations-schema/{20181106000004_titres_travaux.js => 20181106000004_titres_travaux.ts} (89%)
 rename packages/api/src/knex/migrations-schema/{20181106000006_documents.js => 20181106000006_documents.ts} (95%)
 rename packages/api/src/knex/migrations-schema/{20181106000007_definitions.js => 20181106000007_definitions.ts} (66%)
 delete mode 100644 packages/api/src/knex/migrations-schema/20181106000008_cache.js
 create mode 100644 packages/api/src/knex/migrations-schema/20181106000008_cache.ts
 rename packages/api/src/knex/migrations-schema/{20210915144021_logs.js => 20210915144021_logs.ts} (72%)
 rename packages/api/src/knex/migrations-schema/{20210928170751_travaux_delete.js => 20210928170751_travaux_delete.ts} (77%)
 rename packages/api/src/knex/migrations-schema/{20210929153443_metas_travaux_delete.js => 20210929153443_metas_travaux_delete.ts} (75%)
 delete mode 100644 packages/api/src/knex/migrations-schema/20210930103844_titres_administrations.js
 create mode 100644 packages/api/src/knex/migrations-schema/20210930103844_titres_administrations.ts
 rename packages/api/src/knex/migrations-schema/{20211019161848_administrations-activites-types-emails-create.js => 20211019161848_administrations-activites-types-emails-create.ts} (86%)
 rename packages/api/src/knex/migrations-schema/{20211027103109_logs_column_titreId_add.js => 20211027103109_logs_column_titreId_add.ts} (75%)
 rename packages/api/src/knex/migrations-schema/{20211110153616_sdom-zones-create.js => 20211110153616_sdom-zones-create.ts} (87%)
 rename packages/api/src/knex/migrations-schema/{20211123162004_utilisateurs-titres_create.js => 20211123162004_utilisateurs-titres_create.ts} (68%)
 rename packages/api/src/knex/migrations-schema/{20220127141738_titres_demarches_description_add.js => 20220127141738_titres_demarches_description_add.ts} (54%)
 rename packages/api/src/knex/migrations-schema/{20220216142302_titres_etapes_decisions_annexes.js => 20220216142302_titres_etapes_decisions_annexes.ts} (62%)
 rename packages/api/src/knex/migrations-schema/{20220308161359_titres_archive_add.js => 20220308161359_titres_archive_add.ts} (79%)
 delete mode 100644 packages/api/src/knex/migrations-schema/20220325105157_remove-definitions.js
 create mode 100644 packages/api/src/knex/migrations-schema/20220325105157_remove-definitions.ts
 rename packages/api/src/knex/migrations-schema/{20220427075921_administrations_delete.js => 20220427075921_administrations_delete.ts} (83%)
 rename packages/api/src/knex/migrations-schema/{20220511154122_ajoute-date-creation-utilisateur.js => 20220511154122_ajoute-date-creation-utilisateur.ts} (73%)
 rename packages/api/src/knex/migrations-schema/{20220512121252_supprime-satisfaction-url.js => 20220512121252_supprime-satisfaction-url.ts} (50%)
 delete mode 100644 packages/api/src/knex/migrations-schema/20220518064538_geo_systemes_delete.js
 create mode 100644 packages/api/src/knex/migrations-schema/20220518064538_geo_systemes_delete.ts
 delete mode 100644 packages/api/src/knex/migrations-schema/20220518122355_supprime-devises.js
 create mode 100644 packages/api/src/knex/migrations-schema/20220518122355_supprime-devises.ts
 delete mode 100644 packages/api/src/knex/migrations-schema/20220531134336_remove-substances-fiscales.js
 create mode 100644 packages/api/src/knex/migrations-schema/20220531134336_remove-substances-fiscales.ts
 delete mode 100644 packages/api/src/knex/migrations-schema/20220601063231_unites_delete.js
 create mode 100644 packages/api/src/knex/migrations-schema/20220601063231_unites_delete.ts
 rename packages/api/src/knex/migrations-schema/{20220609145846_fix-substances-ordre-required.js => 20220609145846_fix-substances-ordre-required.ts} (73%)
 rename packages/api/src/knex/migrations-schema/{20220613152312_remove-permission.js => 20220613152312_remove-permission.ts} (82%)
 rename packages/api/src/knex/migrations-schema/{20220616132604_utilisateurs-administrations-delete.js => 20220616132604_utilisateurs-administrations-delete.ts} (83%)
 rename packages/api/src/knex/migrations-schema/{20220704122849_territoires-delete.js => 20220704122849_territoires-delete.ts} (88%)
 rename packages/api/src/knex/migrations-schema/{20220705125716_administration-delete.js => 20220705125716_administration-delete.ts} (58%)
 rename packages/api/src/knex/migrations-schema/{20220706145651_titres-titres-create.js => 20220706145651_titres-titres-create.ts} (77%)
 rename packages/api/src/knex/migrations-schema/{20220727082824_supprime-etapes-statuts.js => 20220727082824_supprime-etapes-statuts.ts} (71%)
 rename packages/api/src/knex/migrations-schema/{20220810150111_substances-legales-code-delete.js => 20220810150111_substances-legales-code-delete.ts} (64%)
 rename packages/api/src/knex/migrations-schema/{20220816143105_substances-delete.js => 20220816143105_substances-delete.ts} (87%)
 rename packages/api/src/knex/migrations-schema/{20220819154128_supprime-frequences.js => 20220819154128_supprime-frequences.ts} (76%)
 rename packages/api/src/knex/migrations-schema/{20220825083849_territoires-create.js => 20220825083849_territoires-create.ts} (88%)
 rename packages/api/src/knex/migrations-schema/{20220830095725_supprime-newsletter.js => 20220830095725_supprime-newsletter.ts} (50%)
 rename packages/api/src/knex/migrations-schema/{20220901075840_demarches-statuts-delete.js => 20220901075840_demarches-statuts-delete.ts} (61%)
 rename packages/api/src/knex/migrations-schema/{20220905073826_deplace-donnees-postgis-hors-objection.js => 20220905073826_deplace-donnees-postgis-hors-objection.ts} (90%)
 rename packages/api/src/knex/migrations-schema/{20220906125338_les-substances-dune-etapes-ne-sont-jamais-nul.js => 20220906125338_les-substances-dune-etapes-ne-sont-jamais-nul.ts} (74%)
 rename packages/api/src/knex/migrations-schema/{20220907070928_supprime-titres-statuts.js => 20220907070928_supprime-titres-statuts.ts} (87%)
 rename packages/api/src/knex/migrations-schema/{20220930084703_supprime-phases-statuts.js => 20220930084703_supprime-phases-statuts.ts} (75%)
 delete mode 100644 packages/api/src/knex/migrations-schema/20221004061133_globales-delete.js
 create mode 100644 packages/api/src/knex/migrations-schema/20221004061133_globales-delete.ts
 rename packages/api/src/knex/migrations-schema/{20221004061444_references-delete.js => 20221004061444_references-delete.ts} (93%)
 rename packages/api/src/knex/migrations-schema/{20221012094400_utilisateur-qgis-token.js => 20221012094400_utilisateur-qgis-token.ts} (53%)
 rename packages/api/src/knex/migrations-schema/{20221012121906_add-facades-maritimes.js => 20221012121906_add-facades-maritimes.ts} (90%)
 rename packages/api/src/knex/migrations-schema/{20221017122409_tde-static.js => 20221017122409_tde-static.ts} (80%)
 delete mode 100644 packages/api/src/knex/migrations-schema/20221017132033_administrations-titres-types-delete.js
 create mode 100644 packages/api/src/knex/migrations-schema/20221017132033_administrations-titres-types-delete.ts
 rename packages/api/src/knex/migrations-schema/{20221020141021_supprime-secteurs-maritimes.js => 20221020141021_supprime-secteurs-maritimes.ts} (79%)
 rename packages/api/src/knex/migrations-schema/{20221021121056_delete-titres-administrations.js => 20221021121056_delete-titres-administrations.ts} (88%)
 delete mode 100644 packages/api/src/knex/migrations-schema/20221102162801_delete-titres-types-titres-statuts.js
 create mode 100644 packages/api/src/knex/migrations-schema/20221102162801_delete-titres-types-titres-statuts.ts
 rename packages/api/src/knex/migrations-schema/{20221114135447_delete-useless-columns-etapes-types.js => 20221114135447_delete-useless-columns-etapes-types.ts} (77%)
 delete mode 100644 packages/api/src/knex/migrations-schema/20221116133048_delete-titres-administrations-gestionnaire.js
 create mode 100644 packages/api/src/knex/migrations-schema/20221116133048_delete-titres-administrations-gestionnaire.ts
 create mode 100755 packages/api/src/knex/migrations-schema/toto.sh
 delete mode 100644 packages/api/src/knex/seeding.js
 create mode 100644 packages/api/src/knex/seeding.ts
 rename packages/api/src/knex/seeds/{03-metas.js => 03-metas.ts} (89%)
 rename packages/api/src/knex/seeds/{06-metas-activites.js => 06-metas-activites.ts} (75%)
 delete mode 100644 packages/api/src/knex/seeds/07-administrations.js
 create mode 100644 packages/api/src/knex/seeds/07-administrations.ts
 rename packages/api/src/knex/seeds/{08-autorisations.js => 08-autorisations.ts} (74%)
 delete mode 100644 packages/api/tests/setup.ts

diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml
index cf8d84154..18bd0dbb3 100644
--- a/.github/workflows/api.yml
+++ b/.github/workflows/api.yml
@@ -20,7 +20,7 @@ jobs:
       - name: Use Node.js
         uses: actions/setup-node@v3
         with:
-          node-version: '18.7'
+          node-version: '19.1'
           cache: 'npm'
       - name: Npm install
         run: make install
@@ -34,7 +34,7 @@ jobs:
       - name: Use Node.js
         uses: actions/setup-node@v3
         with:
-          node-version: '18.7'
+          node-version: '19.1'
           cache: 'npm'
       - name: Npm install
         run: make install
@@ -69,7 +69,7 @@ jobs:
         - name: Use Node.js
           uses: actions/setup-node@v3
           with:
-            node-version: '18.7'
+            node-version: '19.1'
             cache: 'npm'
         - name: Npm install
           run: make install
diff --git a/.github/workflows/common.yml b/.github/workflows/common.yml
index f02225a01..22c995fe5 100644
--- a/.github/workflows/common.yml
+++ b/.github/workflows/common.yml
@@ -1,4 +1,4 @@
-name: API
+name: Common
 on:
   workflow_call:
     secrets:
@@ -14,7 +14,7 @@ jobs:
       - name: Use Node.js
         uses: actions/setup-node@v3
         with:
-          node-version: '18.7'
+          node-version: '19.1'
           cache: 'npm'
       - name: Npm install
         run: make install
@@ -28,7 +28,7 @@ jobs:
       - name: Use Node.js
         uses: actions/setup-node@v3
         with:
-          node-version: '18.7'
+          node-version: '19.1'
           cache: 'npm'
       - name: Npm install
         run: make install
diff --git a/.github/workflows/release-github.yml b/.github/workflows/release-github.yml
index f5a6c6c32..2c0bec15a 100644
--- a/.github/workflows/release-github.yml
+++ b/.github/workflows/release-github.yml
@@ -14,7 +14,7 @@ jobs:
       - name: Setup Node.js
         uses: actions/setup-node@v3
         with:
-          node-version: '18.7'
+          node-version: '19.1'
           cache: 'npm'
       - name: Release
         env:
diff --git a/.github/workflows/ui.yml b/.github/workflows/ui.yml
index 0e5c9bb4d..be06031d8 100644
--- a/.github/workflows/ui.yml
+++ b/.github/workflows/ui.yml
@@ -20,7 +20,7 @@ jobs:
       - name: Use Node.js
         uses: actions/setup-node@v3
         with:
-          node-version: '18.7'
+          node-version: '19.1'
           cache: 'npm'
       - name: Test units
         run: |
@@ -34,7 +34,7 @@ jobs:
       - name: Use Node.js
         uses: actions/setup-node@v3
         with:
-          node-version: '18.7'
+          node-version: '19.1'
           cache: 'npm'
       - name: Test units
         run: |
@@ -70,7 +70,7 @@ jobs:
       - name: Use Node.js
         uses: actions/setup-node@v3
         with:
-          node-version: '18.7'
+          node-version: '19.1'
           cache: 'npm'
       - name: Generate storybook
         run: |
diff --git a/Dockerfile.api b/Dockerfile.api
index b5a2517f8..fb42673ac 100644
--- a/Dockerfile.api
+++ b/Dockerfile.api
@@ -1,4 +1,4 @@
-FROM node:18.7-alpine as build-stage
+FROM node:19.1-alpine as build-stage
 WORKDIR /app
 
 RUN apk add make
@@ -17,7 +17,7 @@ RUN npm run build -w packages/api && \
     rm -rf /app/packages/common/node_modules/ && \
     CI=true make install/prod
 
-FROM node:18.7-alpine as production-stage
+FROM node:19.1-alpine as production-stage
 
 # TODO 2022-07-13 : on profite que
 # - l'utilisateur a le même id sur toutes les machines
@@ -29,10 +29,8 @@ USER nonroot
 COPY --chown=nonroot:nonroot --from=build-stage /app/package.json ./
 COPY --chown=nonroot:nonroot --from=build-stage /app/packages/api/package.json ./packages/api/
 COPY --chown=nonroot:nonroot --from=build-stage /app/packages/common/package.json ./packages/common/
-COPY --chown=nonroot:nonroot --from=build-stage /app/packages/api/dist/ ./packages/api/dist/
 COPY --chown=nonroot:nonroot --from=build-stage /app/node_modules ./node_modules/
 COPY --chown=nonroot:nonroot --from=build-stage /app/packages/api/node_modules /packages/api/node_modules/
-# nous avons besoin des sources pour lancer certains scripts manuellement
 COPY --chown=nonroot:nonroot --from=build-stage /app/packages/api/src ./packages/api/src/
 COPY --chown=nonroot:nonroot --from=build-stage /app/packages/api/tsconfig.json ./packages/api/
 COPY --chown=nonroot:nonroot --from=build-stage /app/packages/common/src ./packages/common/src/
@@ -42,4 +40,4 @@ COPY --chown=nonroot:nonroot Makefile .
 # Ce n'est pas nécessaire pour les environnements de prod (le dossier est crée par ansible et monté) mais est plus correct pour pouvoir utiliser l'image sans problème de droit au démarrage
 RUN mkdir -p /packages/api/files
 
-CMD ["npm", "start", "-w", "packages/api"]
+CMD ["make", "start/api"]
diff --git a/Dockerfile.ui b/Dockerfile.ui
index 7f8b36f23..41a4d238c 100644
--- a/Dockerfile.ui
+++ b/Dockerfile.ui
@@ -1,6 +1,6 @@
 #https://github.com/fabriziocucci/vuejs.org/blob/7f9aa12833c085b97a826df3ba240f7d9e069e1b/src/v2/cookbook/dockerize-vuejs-app.md
 
-FROM node:18.7-alpine as build-stage
+FROM node:19.1-alpine as build-stage
 LABEL maintainer=francois.romain@beta.gouv.fr
 ARG GIT_SHA
 ENV GIT_SHA=${GIT_SHA}
@@ -15,14 +15,13 @@ RUN CI=true make install
 COPY ./ /app/
 RUN make build/ui
 
-FROM node:18.7-alpine as production-stage
+FROM node:19.1-alpine as production-stage
 
 COPY --from=build-stage /app/package*.json ./
 COPY --from=build-stage /app/packages/ui/package.json ./packages/ui/package.json
-# Doit être supprimer quand on enlève l'express serveur frontal qui sert à rien
 COPY Makefile /app/Makefile
 RUN apk add make && cd /app && CI=true make install/prod
 COPY --from=build-stage /app/packages/ui/dist ./packages/ui/dist
 COPY --from=build-stage /app/packages/ui/index.js ./packages/ui/index.js
 
-CMD ["npm", "start", "-w", "packages/ui"]
+CMD ["make", "start/ui"]
diff --git a/Makefile b/Makefile
index 5d639c7c3..45b01fb1c 100644
--- a/Makefile
+++ b/Makefile
@@ -13,22 +13,11 @@ docs/generate-schema:
 	cat docs-sources/assets/architecture.puml | docker run --rm -i agileek/plantuml:1.2022.3 > docs-sources/docs/img/architecture.svg
 
 daily:
-ifdef CAMINO_STAGE
-	@echo 'lancement du daily en mode prod'
 	npm run daily -w packages/api
-else
-	@echo 'lancement du daily en mode dev(local)'
-	npm run dev:daily -w packages/api
-endif
 
 monthly:
-ifdef CAMINO_STAGE
-	@echo 'lancement du monthly en mode prod'
 	npm run monthly -w packages/api
-else
-	@echo 'lancement du monthly en mode dev(local)'
-	npm run dev:monthly -w packages/api
-endif
+
 
 
 test: test/ui test/api test/common
@@ -85,6 +74,26 @@ build/ui:
 build/api:
 	npm run build -w packages/api
 
+start/api:
+ifdef CAMINO_STAGE
+	@echo 'lancement du backend en mode prod'
+	npm start -w packages/api
+else
+	@echo 'lancement du backend en mode dev(local)'
+	npm run dev -w packages/api
+endif
+	
+
+start/ui:
+ifdef CAMINO_STAGE
+	@echo 'lancement du frontend en mode prod'
+	npm start -w packages/ui
+else
+	@echo 'lancement du frontend en mode dev(local)'
+	npm run dev -w packages/ui
+endif
+	
+
 ifeq (${INPUT_ENV}, dev)
 CD_TOKEN:=${CD_TOKEN_DEV}
 endif
diff --git a/docker-compose.local.yml b/docker-compose.local.yml
index cec6ba0ee..edc02a578 100644
--- a/docker-compose.local.yml
+++ b/docker-compose.local.yml
@@ -20,6 +20,8 @@ services:
       PGHOST: db
     expose:
       - ${API_PORT}
+    ports:
+      - ${API_PORT}:${API_PORT}
     volumes:
       - ./.env:/.env
   db:
diff --git a/package-lock.json b/package-lock.json
index 90ba27b31..b77ae804b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,8 +20,8 @@
         "semantic-release": "^19.0.4"
       },
       "engines": {
-        "node": ">=18.7.0",
-        "npm": ">=8.5.5"
+        "node": ">=19.1.0",
+        "npm": ">=8.19.3"
       }
     },
     "node_modules/@ampproject/remapping": {
@@ -6880,11 +6880,6 @@
       "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
       "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw=="
     },
-    "node_modules/@types/dateformat": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/@types/dateformat/-/dateformat-5.0.0.tgz",
-      "integrity": "sha512-SZg4JdHIWHQGEokbYGZSDvo5wA4TLYPXaqhigs/wH+REDOejcJzgH+qyY+HtEUtWOZxEUkbhbdYPqQDiEgrXeA=="
-    },
     "node_modules/@types/eslint": {
       "version": "8.4.6",
       "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz",
@@ -7144,6 +7139,7 @@
       "version": "2.6.1",
       "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz",
       "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==",
+      "dev": true,
       "dependencies": {
         "@types/node": "*",
         "form-data": "^3.0.0"
@@ -11674,6 +11670,14 @@
       "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
       "dev": true
     },
+    "node_modules/data-uri-to-buffer": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
+      "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==",
+      "engines": {
+        "node": ">= 12"
+      }
+    },
     "node_modules/data-urls": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
@@ -14622,6 +14626,28 @@
         "pend": "~1.2.0"
       }
     },
+    "node_modules/fetch-blob": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+      "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/jimmywarting"
+        },
+        {
+          "type": "paypal",
+          "url": "https://paypal.me/jimmywarting"
+        }
+      ],
+      "dependencies": {
+        "node-domexception": "^1.0.0",
+        "web-streams-polyfill": "^3.0.3"
+      },
+      "engines": {
+        "node": "^12.20 || >= 14.13"
+      }
+    },
     "node_modules/fetch-retry": {
       "version": "5.0.3",
       "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.3.tgz",
@@ -15094,6 +15120,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
       "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+      "dev": true,
       "dependencies": {
         "asynckit": "^0.4.0",
         "combined-stream": "^1.0.8",
@@ -15103,6 +15130,17 @@
         "node": ">= 6"
       }
     },
+    "node_modules/formdata-polyfill": {
+      "version": "4.0.10",
+      "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+      "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+      "dependencies": {
+        "fetch-blob": "^3.1.2"
+      },
+      "engines": {
+        "node": ">=12.20.0"
+      }
+    },
     "node_modules/formidable": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz",
@@ -19877,6 +19915,24 @@
         "node": ">= 0.10.5"
       }
     },
+    "node_modules/node-domexception": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+      "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/jimmywarting"
+        },
+        {
+          "type": "github",
+          "url": "https://paypal.me/jimmywarting"
+        }
+      ],
+      "engines": {
+        "node": ">=10.5.0"
+      }
+    },
     "node_modules/node-emoji": {
       "version": "1.11.0",
       "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
@@ -30103,6 +30159,14 @@
         "url": "https://github.com/sponsors/wooorm"
       }
     },
+    "node_modules/web-streams-polyfill": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
+      "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
     "node_modules/webidl-conversions": {
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
@@ -31258,7 +31322,6 @@
         "@types/compression": "1.7.2",
         "@types/cookie-parser": "^1.4.3",
         "@types/cors": "^2.8.12",
-        "@types/dateformat": "^5.0.0",
         "@types/express": "^4.17.13",
         "@types/express-jwt": "6.0.4",
         "@types/express-serve-static-core": "^4.17.30",
@@ -31267,7 +31330,6 @@
         "@types/graphql-upload": "^8.0.11",
         "@types/jsonwebtoken": "^8.5.8",
         "@types/node": "^18.7.12",
-        "@types/node-fetch": "^2.5.12",
         "@types/pg": "^8.6.5",
         "@types/proj4": "^2.5.2",
         "@types/shpjs": "^3.4.1",
@@ -31281,7 +31343,6 @@
         "cookie-parser": "^1.4.6",
         "cors": "^2.8.5",
         "crypto-random-string": "^3.3.1",
-        "dateformat": "^4.5.1",
         "decamelize": "^5.0.0",
         "dotenv": "^16.0.1",
         "email-regex": "4.0.0",
@@ -31301,7 +31362,7 @@
         "jszip": "^3.10.1",
         "knex": "^2.3.0",
         "matomo-tracker": "^2.2.4",
-        "node-fetch": "^2.6.5",
+        "node-fetch": "^3.3.0",
         "node-mailjet": "^5.1.1",
         "objection": "github:Vincit/objection.js#dbb20aebaac2059149ec18386283b3cce4a3d7f0",
         "pg": "^8.8.0",
@@ -31339,14 +31400,6 @@
         "vitest": "^0.25.2"
       }
     },
-    "packages/api/node_modules/dateformat": {
-      "version": "4.6.3",
-      "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
-      "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
-      "engines": {
-        "node": "*"
-      }
-    },
     "packages/api/node_modules/graphql": {
       "version": "16.6.0",
       "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz",
@@ -31355,6 +31408,23 @@
         "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
       }
     },
+    "packages/api/node_modules/node-fetch": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz",
+      "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==",
+      "dependencies": {
+        "data-uri-to-buffer": "^4.0.0",
+        "fetch-blob": "^3.1.4",
+        "formdata-polyfill": "^4.0.10"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/node-fetch"
+      }
+    },
     "packages/api/node_modules/picocolors": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -37790,11 +37860,6 @@
       "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
       "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw=="
     },
-    "@types/dateformat": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/@types/dateformat/-/dateformat-5.0.0.tgz",
-      "integrity": "sha512-SZg4JdHIWHQGEokbYGZSDvo5wA4TLYPXaqhigs/wH+REDOejcJzgH+qyY+HtEUtWOZxEUkbhbdYPqQDiEgrXeA=="
-    },
     "@types/eslint": {
       "version": "8.4.6",
       "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz",
@@ -38053,6 +38118,7 @@
       "version": "2.6.1",
       "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz",
       "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==",
+      "dev": true,
       "requires": {
         "@types/node": "*",
         "form-data": "^3.0.0"
@@ -40306,7 +40372,6 @@
         "@types/compression": "1.7.2",
         "@types/cookie-parser": "^1.4.3",
         "@types/cors": "^2.8.12",
-        "@types/dateformat": "^5.0.0",
         "@types/express": "^4.17.13",
         "@types/express-jwt": "6.0.4",
         "@types/express-serve-static-core": "^4.17.30",
@@ -40315,7 +40380,6 @@
         "@types/graphql-upload": "^8.0.11",
         "@types/jsonwebtoken": "^8.5.8",
         "@types/node": "^18.7.12",
-        "@types/node-fetch": "^2.5.12",
         "@types/pg": "^8.6.5",
         "@types/proj4": "^2.5.2",
         "@types/shpjs": "^3.4.1",
@@ -40335,7 +40399,6 @@
         "cookie-parser": "^1.4.6",
         "cors": "^2.8.5",
         "crypto-random-string": "^3.3.1",
-        "dateformat": "^4.5.1",
         "decamelize": "^5.0.0",
         "dotenv": "^16.0.1",
         "email-regex": "4.0.0",
@@ -40363,7 +40426,7 @@
         "jszip": "^3.10.1",
         "knex": "^2.3.0",
         "matomo-tracker": "^2.2.4",
-        "node-fetch": "^2.6.5",
+        "node-fetch": "3.3.0",
         "node-mailjet": "^5.1.1",
         "nodemon": "^2.0.19",
         "objection": "github:Vincit/objection.js#dbb20aebaac2059149ec18386283b3cce4a3d7f0",
@@ -40384,16 +40447,21 @@
         "xstate": "^4.34.0"
       },
       "dependencies": {
-        "dateformat": {
-          "version": "4.6.3",
-          "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
-          "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA=="
-        },
         "graphql": {
           "version": "16.6.0",
           "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz",
           "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw=="
         },
+        "node-fetch": {
+          "version": "3.3.0",
+          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz",
+          "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==",
+          "requires": {
+            "data-uri-to-buffer": "^4.0.0",
+            "fetch-blob": "^3.1.4",
+            "formdata-polyfill": "^4.0.10"
+          }
+        },
         "picocolors": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -40484,7 +40552,7 @@
         "@storybook/testing-vue3": "^0.0.2",
         "@storybook/vue3": "^6.5.13",
         "@testing-library/vue": "^6.6.1",
-        "@types/file-saver": "*",
+        "@types/file-saver": "^2.0.5",
         "@types/leaflet": "^1.7.11",
         "@types/leaflet.markercluster": "^1.5.1",
         "@typescript-eslint/parser": "^5.34.0",
@@ -42548,6 +42616,11 @@
       "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
       "dev": true
     },
+    "data-uri-to-buffer": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
+      "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA=="
+    },
     "data-urls": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
@@ -44720,6 +44793,15 @@
         "pend": "~1.2.0"
       }
     },
+    "fetch-blob": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+      "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+      "requires": {
+        "node-domexception": "^1.0.0",
+        "web-streams-polyfill": "^3.0.3"
+      }
+    },
     "fetch-retry": {
       "version": "5.0.3",
       "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.3.tgz",
@@ -45065,12 +45147,21 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
       "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+      "dev": true,
       "requires": {
         "asynckit": "^0.4.0",
         "combined-stream": "^1.0.8",
         "mime-types": "^2.1.12"
       }
     },
+    "formdata-polyfill": {
+      "version": "4.0.10",
+      "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+      "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+      "requires": {
+        "fetch-blob": "^3.1.2"
+      }
+    },
     "formidable": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz",
@@ -48681,6 +48772,11 @@
         "minimatch": "^3.0.2"
       }
     },
+    "node-domexception": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+      "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="
+    },
     "node-emoji": {
       "version": "1.11.0",
       "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
@@ -56431,6 +56527,11 @@
       "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==",
       "dev": true
     },
+    "web-streams-polyfill": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
+      "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q=="
+    },
     "webidl-conversions": {
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
diff --git a/package.json b/package.json
index b53a9a117..88b62c655 100644
--- a/package.json
+++ b/package.json
@@ -2,8 +2,8 @@
   "name": "camino",
   "version": "1.0.0",
   "engines": {
-    "node": ">=18.7.0",
-    "npm": ">=8.5.5"
+    "node": ">=19.1.0",
+    "npm": ">=8.19.3"
   },
   "description": "Le cadastre minier numérique ouvert",
   "workspaces": [
diff --git a/packages/api/knexfile.ts b/packages/api/knexfile.ts
index d810cfbeb..ce5d4a556 100644
--- a/packages/api/knexfile.ts
+++ b/packages/api/knexfile.ts
@@ -1,3 +1,3 @@
-import { knexConfig } from './src/knex/config'
+import { knexConfig } from './src/knex/config.js'
 
-module.exports = knexConfig
+export default knexConfig
diff --git a/packages/api/nodemon.json b/packages/api/nodemon.json
index caed2a8db..922c27ae3 100644
--- a/packages/api/nodemon.json
+++ b/packages/api/nodemon.json
@@ -2,5 +2,5 @@
   "watch": ["src"],
   "ext": "ts, js, graphql",
   "ignore": [".git", "node_modules", "*.test.ts", "*.test.integration.ts"],
-  "exec": "node -r ts-node/register/transpile-only --inspect ./src/index.ts"
+  "exec": "node --loader ts-node/esm/transpile-only --inspect ./src/index.ts"
 }
diff --git a/packages/api/package.json b/packages/api/package.json
index 1a86ff5c0..d6b143624 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -3,42 +3,36 @@
   "version": "1.0.0",
   "description": "Camino api",
   "private": true,
-  "main": "dist/api/src/index.js",
+  "main": "./src/index.js",
+  "type": "module",
   "scripts": {
-    "bim": "npm i && npm run build && npm run db:recreate && npm run db:import",
-    "build": "npm run build:api && npm run build:common",
-    "build:api": "rm -rf dist && tsc && mkdir -p ./dist/api/src/api/graphql && cp -r ./src/api/graphql/schemas ./dist/api/src/api/graphql",
-    "build:common": "cd ../common/ && tsc",
-    "daily": "node ./dist/api/src/daily_tasks.js",
-    "monthly": "node ./dist/api/src/monthly_tasks.js",
+    "build": "tsc",
+    "daily": "node --loader ts-node/esm/transpile-only ./src/scripts/daily.ts",
+    "monthly": "node --loader ts-node/esm/transpile-only ./src/scripts/monthly.ts",
     "db:dump": "pg_dump --host=localhost --username=postgres --clean --if-exists --format=c --no-owner --no-privileges --dbname=camino --file=./backups/camino.sql",
-    "db:export": "rm -rf sources && ts-node --transpile-only src/scripts/database-to-json-export.ts",
+    "db:export": "rm -rf sources && node --loader ts-node/esm/transpile-only src/scripts/database-to-json-export.ts",
     "db:import": "pg_restore --host=localhost --username=postgres --clean --if-exists --no-owner --no-privileges --dbname=camino ./backups/camino.sql",
     "db:prod-fetch": "scp -P 212 $u@camino.beta.gouv.fr:/srv/backups/camino.sql backups/",
     "db:public-import": "pg_restore --host=localhost --username=postgres --clean --if-exists --no-owner --no-privileges --dbname=camino ./backups/camino-public.sql",
     "db:recreate": "dropdb --host=localhost --username=postgres camino && createdb --host=localhost --username=postgres camino",
-    "db:user": "ts-node ./src/knex/cli-user-add.ts",
-    "db:migrate": "ts-node ./src/knex/migrate.ts",
-    "db:add-migration": "knex migrate:make",
-    "predev": "find ../common/src -name '*.js*' -delete",
+    "db:user": "node --loader ts-node/esm/transpile-only./src/knex/cli-user-add.ts",
+    "db:migrate": "node --loader ts-node/esm/transpile-only ./src/knex/migrate.ts",
+    "db:add-migration": "NODE_OPTIONS='--loader ts-node/esm/transpile-only' knex migrate:make",
     "dev": "nodemon",
-    "dev:daily": "ts-node --transpile-only ./src/scripts/daily.ts",
-    "dev:daily-debug": "node -r ts-node/register/transpile-only --inspect-brk=3000 ./src/scripts/daily.ts",
+    "daily-debug": "node  --inspect-brk=3000 --loader ts-node/esm/transpile-only ./src/scripts/daily.ts",
     "dev:backups-archive": "tar -zcvf backups/`date +%Y%m%d_%H%M%S`-camino.tar.gz backups/files/* backups/camino.sql",
-    "dev:monthly": "ts-node --transpile-only ./src/scripts/monthly.ts",
-    "dev:schema": "node src/dev/api/graphql-dsl-to-query-convert.js",
     "dev:update": "npm-check-updates -u && npm install && npm audit fix",
-    "documents:check": "node ./dist/api/src/scripts/documents-check.js",
+    "documents:check": "node NODE_OPTIONS='--loader ts-node/esm/transpile-only' ./api/src/scripts/documents-check.ts",
     "lint": "prettier --write . && eslint --fix .",
-    "start": "node ./dist/api/src/index.js",
+    "start": "node --loader ts-node/esm/transpile-only ./src/index.ts",
     "test": "npm run test:unit && npm run test:integration",
     "test:unit": "vitest --environment node --root src/ --config ../vitest.unit.config.ts",
-    "test:integration": "JWT_SECRET=secret-tests JWT_SECRET_REFRESH=refresh-secret vitest --environment node --root src/ --config ../vitest.integration.config.ts",
-    "test:generate-data": "ts-node --transpile-only src/tools/demarches/tests-creation.ts",
+    "test:integration": "NODE_OPTIONS='--loader ts-node/esm/transpile-only' JWT_SECRET=secret-tests JWT_SECRET_REFRESH=refresh-secret vitest --environment node --root src/ --config ../vitest.integration.config.ts",
+    "test:generate-data": "node --loader ts-node/esm/transpile-only src/tools/demarches/tests-creation.ts",
     "ci:lint": "prettier --check . && eslint ."
   },
   "@comment dependencies": {
-    "modules esm": "crypto-random-string, @sindresorhus/slugify, email-regex, decamelize, dateformat, node-fetch à ne pas updater tant que on ne compile pas pour es2020: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c. Pas simple de migrer ts-node.",
+    "modules esm": "crypto-random-string, @sindresorhus/slugify, email-regex, decamelize, node-fetch à ne pas updater tant que on ne compile pas pour es2020: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c. Pas simple de migrer ts-node.",
     "express-jwt": "attendre la PR de keycloak pour éviter les conflits, car en version 7 The decoded JWT payload is now available as req.auth rather than req.user"
   },
   "dependencies": {
@@ -54,7 +48,6 @@
     "@types/compression": "1.7.2",
     "@types/cookie-parser": "^1.4.3",
     "@types/cors": "^2.8.12",
-    "@types/dateformat": "^5.0.0",
     "@types/express": "^4.17.13",
     "@types/express-jwt": "6.0.4",
     "@types/express-serve-static-core": "^4.17.30",
@@ -63,7 +56,6 @@
     "@types/graphql-upload": "^8.0.11",
     "@types/jsonwebtoken": "^8.5.8",
     "@types/node": "^18.7.12",
-    "@types/node-fetch": "^2.5.12",
     "@types/pg": "^8.6.5",
     "@types/proj4": "^2.5.2",
     "@types/shpjs": "^3.4.1",
@@ -77,7 +69,6 @@
     "cookie-parser": "^1.4.6",
     "cors": "^2.8.5",
     "crypto-random-string": "^3.3.1",
-    "dateformat": "^4.5.1",
     "decamelize": "^5.0.0",
     "dotenv": "^16.0.1",
     "email-regex": "4.0.0",
@@ -97,7 +88,7 @@
     "jszip": "^3.10.1",
     "knex": "^2.3.0",
     "matomo-tracker": "^2.2.4",
-    "node-fetch": "^2.6.5",
+    "node-fetch": "^3.3.0",
     "node-mailjet": "^5.1.1",
     "objection": "github:Vincit/objection.js#dbb20aebaac2059149ec18386283b3cce4a3d7f0",
     "pg": "^8.8.0",
diff --git a/packages/api/src/api/_format/_fields.ts b/packages/api/src/api/_format/_fields.ts
index 8969b3bba..3705bf6b9 100644
--- a/packages/api/src/api/_format/_fields.ts
+++ b/packages/api/src/api/_format/_fields.ts
@@ -1,4 +1,4 @@
-import { IFields } from '../../types'
+import { IFields } from '../../types.js'
 
 export const titreEtapeFormatFields = {
   geojsonMultiPolygon: {},
diff --git a/packages/api/src/api/_format/administrations.ts b/packages/api/src/api/_format/administrations.ts
index e7a1b1cae..43c5d4c79 100644
--- a/packages/api/src/api/_format/administrations.ts
+++ b/packages/api/src/api/_format/administrations.ts
@@ -1,5 +1,5 @@
-import { IAdministration } from '../../types'
-import { Administrations } from 'camino-common/src/static/administrations'
+import { IAdministration } from '../../types.js'
+import { Administrations } from 'camino-common/src/static/administrations.js'
 
 /**
  * Formate une administration en fonction du profil de l'utilisateur
diff --git a/packages/api/src/api/_format/entreprises.ts b/packages/api/src/api/_format/entreprises.ts
index a1d24fee2..0653d56ca 100644
--- a/packages/api/src/api/_format/entreprises.ts
+++ b/packages/api/src/api/_format/entreprises.ts
@@ -1,6 +1,6 @@
-import { IEntreprise } from '../../types'
+import { IEntreprise } from '../../types.js'
 
-import { titresFormat } from './titres'
+import { titresFormat } from './titres.js'
 
 /**
  * Formate une entreprise en fonction du profil de l'utilisateur
diff --git a/packages/api/src/api/_format/etapes-types.test.ts b/packages/api/src/api/_format/etapes-types.test.ts
index 1163146d4..f2b64943b 100644
--- a/packages/api/src/api/_format/etapes-types.test.ts
+++ b/packages/api/src/api/_format/etapes-types.test.ts
@@ -1,6 +1,6 @@
-import { documentsTypesFormat } from './etapes-types'
+import { documentsTypesFormat } from './etapes-types.js'
 import { describe, test, expect } from 'vitest'
-import { DocumentType } from 'camino-common/src/static/documentsTypes'
+import { DocumentType } from 'camino-common/src/static/documentsTypes.js'
 describe('teste etapes types format', () => {
   test.each<
     [
diff --git a/packages/api/src/api/_format/etapes-types.ts b/packages/api/src/api/_format/etapes-types.ts
index d65398671..1009c3f2a 100644
--- a/packages/api/src/api/_format/etapes-types.ts
+++ b/packages/api/src/api/_format/etapes-types.ts
@@ -5,22 +5,22 @@ import {
   ISection,
   ITitre,
   ITitreEtape
-} from '../../types'
-
-import { titreDemarcheUpdatedEtatValidate } from '../../business/validations/titre-demarche-etat-validate'
-import { titreDemarcheDepotDemandeDateFind } from '../../business/rules/titre-demarche-depot-demande-date-find'
-
-import { dupRemove } from '../../tools/index'
-import { titreSectionsFormat } from './titres-sections'
-
-import { getDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes'
-import { DocumentType } from 'camino-common/src/static/documentsTypes'
-import { getTitreTypeType } from 'camino-common/src/static/titresTypes'
-import { TitreTypeTypeId } from 'camino-common/src/static/titresTypesTypes'
-import { DomaineId } from 'camino-common/src/static/domaines'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes'
-import { CaminoDate } from 'camino-common/src/date'
+} from '../../types.js'
+
+import { titreDemarcheUpdatedEtatValidate } from '../../business/validations/titre-demarche-etat-validate.js'
+import { titreDemarcheDepotDemandeDateFind } from '../../business/rules/titre-demarche-depot-demande-date-find.js'
+
+import { dupRemove } from '../../tools/index.js'
+import { titreSectionsFormat } from './titres-sections.js'
+
+import { getDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes.js'
+import { DocumentType } from 'camino-common/src/static/documentsTypes.js'
+import { getTitreTypeType } from 'camino-common/src/static/titresTypes.js'
+import { TitreTypeTypeId } from 'camino-common/src/static/titresTypesTypes.js'
+import { DomaineId } from 'camino-common/src/static/domaines.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
+import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes.js'
+import { CaminoDate } from 'camino-common/src/date.js'
 
 const etapeTypeSectionsFormat = (
   sections: ISection[] | undefined | null,
diff --git a/packages/api/src/api/_format/titres-activites.ts b/packages/api/src/api/_format/titres-activites.ts
index 5a2cb3236..391759a09 100644
--- a/packages/api/src/api/_format/titres-activites.ts
+++ b/packages/api/src/api/_format/titres-activites.ts
@@ -1,8 +1,8 @@
-import { ITitreActivite, ISection, IContenu } from '../../types'
+import { ITitreActivite, ISection, IContenu } from '../../types.js'
 
-import { titreSectionsFormat } from './titres-sections'
+import { titreSectionsFormat } from './titres-sections.js'
 
-import { titreActiviteCompleteCheck } from '../../business/validations/titre-activite-complete-check'
+import { titreActiviteCompleteCheck } from '../../business/validations/titre-activite-complete-check.js'
 
 export const titreActiviteContenuFormat = (
   sections: ISection[],
diff --git a/packages/api/src/api/_format/titres-demarches.ts b/packages/api/src/api/_format/titres-demarches.ts
index 0ad47dd3b..7140a07da 100644
--- a/packages/api/src/api/_format/titres-demarches.ts
+++ b/packages/api/src/api/_format/titres-demarches.ts
@@ -1,8 +1,8 @@
-import { IFields, ITitreDemarche } from '../../types'
+import { IFields, ITitreDemarche } from '../../types.js'
 
-import { titreEtapeFormat } from './titres-etapes'
-import { titreFormat } from './titres'
-import { titreDemarcheFormatFields } from './_fields'
+import { titreEtapeFormat } from './titres-etapes.js'
+import { titreFormat } from './titres.js'
+import { titreDemarcheFormatFields } from './_fields.js'
 
 export const titreDemarcheFormat = (
   titreDemarche: ITitreDemarche,
diff --git a/packages/api/src/api/_format/titres-etapes.ts b/packages/api/src/api/_format/titres-etapes.ts
index 1f9f0d902..4be176689 100644
--- a/packages/api/src/api/_format/titres-etapes.ts
+++ b/packages/api/src/api/_format/titres-etapes.ts
@@ -1,14 +1,14 @@
-import { ITitreEtape, IGeoJson } from '../../types'
+import { ITitreEtape, IGeoJson } from '../../types.js'
 
 import {
   geojsonFeatureMultiPolygon,
   geojsonFeatureCollectionPoints
-} from '../../tools/geojson'
-import { DocumentTypeData, etapeTypeFormat } from './etapes-types'
-import { entrepriseFormat } from './entreprises'
-import { titreEtapeFormatFields } from './_fields'
-import { titreDemarcheFormat } from './titres-demarches'
-import { titreEtapeCompleteValidate } from '../../business/validations/titre-etape-updation-validate'
+} from '../../tools/geojson.js'
+import { DocumentTypeData, etapeTypeFormat } from './etapes-types.js'
+import { entrepriseFormat } from './entreprises.js'
+import { titreEtapeFormatFields } from './_fields.js'
+import { titreDemarcheFormat } from './titres-demarches.js'
+import { titreEtapeCompleteValidate } from '../../business/validations/titre-etape-updation-validate.js'
 
 const titreEtapeFormat = (
   titreEtape: ITitreEtape,
diff --git a/packages/api/src/api/_format/titres-sections.ts b/packages/api/src/api/_format/titres-sections.ts
index ea7724e6c..f6725f9c4 100644
--- a/packages/api/src/api/_format/titres-sections.ts
+++ b/packages/api/src/api/_format/titres-sections.ts
@@ -1,9 +1,9 @@
-import { ISection, ISectionElement } from '../../types'
+import { ISection, ISectionElement } from '../../types.js'
 
-import { objectClone } from '../../tools/index'
-import { sortedDevises } from 'camino-common/src/static/devise'
-import { UNITES } from 'camino-common/src/static/unites'
-import { exhaustiveCheck } from '../../tools/exhaustive-type-check'
+import { objectClone } from '../../tools/index.js'
+import { sortedDevises } from 'camino-common/src/static/devise.js'
+import { UNITES } from 'camino-common/src/static/unites.js'
+import { exhaustiveCheck } from '../../tools/exhaustive-type-check.js'
 
 const titreSectionElementFormat = (element: ISectionElement) => {
   if (element.valeursMetasNom) {
diff --git a/packages/api/src/api/_format/titres.ts b/packages/api/src/api/_format/titres.ts
index 8dffa6471..265c491fc 100644
--- a/packages/api/src/api/_format/titres.ts
+++ b/packages/api/src/api/_format/titres.ts
@@ -5,24 +5,24 @@ import {
   ISection,
   IContenusTitreEtapesIds,
   ITitreDemarche
-} from '../../types'
+} from '../../types.js'
 
 import {
   geojsonFeatureMultiPolygon,
   geojsonFeatureCollectionPoints
-} from '../../tools/geojson'
+} from '../../tools/geojson.js'
 
-import { entrepriseFormat } from './entreprises'
-import { titreActiviteFormat } from './titres-activites'
-import { titreDemarcheFormat } from './titres-demarches'
-import { titreFormatFields } from './_fields'
+import { entrepriseFormat } from './entreprises.js'
+import { titreActiviteFormat } from './titres-activites.js'
+import { titreDemarcheFormat } from './titres-demarches.js'
+import { titreFormatFields } from './_fields.js'
 import {
   AdministrationId,
   Administrations,
   ADMINISTRATION_TYPES
-} from 'camino-common/src/static/administrations'
-import { onlyUnique } from 'camino-common/src/typescript-tools'
-import { getGestionnairesByTitreTypeId } from 'camino-common/src/static/administrationsTitresTypes'
+} from 'camino-common/src/static/administrations.js'
+import { onlyUnique } from 'camino-common/src/typescript-tools.js'
+import { getGestionnairesByTitreTypeId } from 'camino-common/src/static/administrationsTitresTypes.js'
 
 const titreTypeSectionsFormat = (
   contenusTitreEtapesIds: IContenusTitreEtapesIds,
diff --git a/packages/api/src/api/_format/users.ts b/packages/api/src/api/_format/users.ts
index 67e66afa3..be21eb5ab 100644
--- a/packages/api/src/api/_format/users.ts
+++ b/packages/api/src/api/_format/users.ts
@@ -1,11 +1,11 @@
-import { IUtilisateur, IUser } from '../../types'
+import { IUtilisateur, IUser } from '../../types.js'
 
 import {
   isAdministration,
   isBureauDEtudes,
   isEntreprise,
   isSuper
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 
 export const userFormat = (utilisateur: IUtilisateur | null) => {
   if (!utilisateur) return null
diff --git a/packages/api/src/api/_permissions/utilisateur.ts b/packages/api/src/api/_permissions/utilisateur.ts
index f86ebd34f..22c69e6be 100644
--- a/packages/api/src/api/_permissions/utilisateur.ts
+++ b/packages/api/src/api/_permissions/utilisateur.ts
@@ -1,10 +1,10 @@
-import { IUtilisateur, IUtilisateurCreation } from '../../types'
-import { emailCheck } from '../../tools/email-check'
+import { IUtilisateur, IUtilisateurCreation } from '../../types.js'
+import { emailCheck } from '../../tools/email-check.js'
 import {
   isAdministration,
   isBureauDEtudes,
   isEntreprise
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 
 const utilisateurEditionCheck = (
   utilisateur: IUtilisateur | IUtilisateurCreation
diff --git a/packages/api/src/api/graphql/administration.test.integration.ts b/packages/api/src/api/graphql/administration.test.integration.ts
index a9f9c5743..78964079e 100644
--- a/packages/api/src/api/graphql/administration.test.integration.ts
+++ b/packages/api/src/api/graphql/administration.test.integration.ts
@@ -1,7 +1,7 @@
-import { graphQLCall, queryImport } from '../../../tests/_utils/index'
+import { graphQLCall, queryImport } from '../../../tests/_utils/index.js'
 
-import { dbManager } from '../../../tests/db-manager'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
+import { dbManager } from '../../../tests/db-manager.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
 import { beforeAll, afterAll, test, expect, describe, vi } from 'vitest'
 
 console.info = vi.fn()
diff --git a/packages/api/src/api/graphql/administrations-permissions-demarches.test.integration.ts b/packages/api/src/api/graphql/administrations-permissions-demarches.test.integration.ts
index 341415b6c..290f35f3e 100644
--- a/packages/api/src/api/graphql/administrations-permissions-demarches.test.integration.ts
+++ b/packages/api/src/api/graphql/administrations-permissions-demarches.test.integration.ts
@@ -1,11 +1,11 @@
-import { dbManager } from '../../../tests/db-manager'
+import { dbManager } from '../../../tests/db-manager.js'
 import {
   visibleCheck,
   creationCheck,
   modificationCheck
-} from '../../../tests/_utils/administrations-permissions'
+} from '../../../tests/_utils/administrations-permissions.js'
 import { beforeAll, afterAll, test, describe, vi } from 'vitest'
-import { AdministrationId } from 'camino-common/src/static/administrations'
+import { AdministrationId } from 'camino-common/src/static/administrations.js'
 
 console.info = vi.fn()
 console.error = vi.fn()
diff --git a/packages/api/src/api/graphql/administrations-permissions-etapes.test.integration.ts b/packages/api/src/api/graphql/administrations-permissions-etapes.test.integration.ts
index 254126753..ffecac0a1 100644
--- a/packages/api/src/api/graphql/administrations-permissions-etapes.test.integration.ts
+++ b/packages/api/src/api/graphql/administrations-permissions-etapes.test.integration.ts
@@ -1,13 +1,13 @@
-import { dbManager } from '../../../tests/db-manager'
+import { dbManager } from '../../../tests/db-manager.js'
 import {
   creationCheck,
   modificationCheck,
   visibleCheck
-} from '../../../tests/_utils/administrations-permissions'
-import TitresTypesDemarchesTypesEtapesTypesJustificatifsTypes from '../../database/models/titres-types--demarches-types-etapes-types-justificatifs-types'
+} from '../../../tests/_utils/administrations-permissions.js'
+import TitresTypesDemarchesTypesEtapesTypesJustificatifsTypes from '../../database/models/titres-types--demarches-types-etapes-types-justificatifs-types.js'
 import { afterAll, beforeAll, describe, test, vi } from 'vitest'
-import { AdministrationId } from 'camino-common/src/static/administrations'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
+import { AdministrationId } from 'camino-common/src/static/administrations.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
 vi.mock('../../tools/dir-create', () => ({
   __esModule: true,
   default: vi.fn()
diff --git a/packages/api/src/api/graphql/administrations-permissions-titres.test.integration.ts b/packages/api/src/api/graphql/administrations-permissions-titres.test.integration.ts
index e653dd4ec..efda72bbf 100644
--- a/packages/api/src/api/graphql/administrations-permissions-titres.test.integration.ts
+++ b/packages/api/src/api/graphql/administrations-permissions-titres.test.integration.ts
@@ -1,12 +1,12 @@
-import { dbManager } from '../../../tests/db-manager'
+import { dbManager } from '../../../tests/db-manager.js'
 import {
   visibleCheck,
   creationCheck,
   modificationCheck
-} from '../../../tests/_utils/administrations-permissions'
+} from '../../../tests/_utils/administrations-permissions.js'
 
 import { afterAll, beforeAll, describe, test, vi } from 'vitest'
-import { AdministrationId } from 'camino-common/src/static/administrations'
+import { AdministrationId } from 'camino-common/src/static/administrations.js'
 
 console.info = vi.fn()
 console.error = vi.fn()
diff --git a/packages/api/src/api/graphql/documents.test.integration.ts b/packages/api/src/api/graphql/documents.test.integration.ts
index c76ce8860..1624ae1f9 100644
--- a/packages/api/src/api/graphql/documents.test.integration.ts
+++ b/packages/api/src/api/graphql/documents.test.integration.ts
@@ -1,17 +1,20 @@
-import { graphQLCall, queryImport } from '../../../tests/_utils'
-import { ITitreEtapeJustificatif } from '../../types'
-import { documentCreate, documentGet } from '../../database/queries/documents'
-import { entrepriseUpsert } from '../../database/queries/entreprises'
-import { titreCreate } from '../../database/queries/titres'
+import { graphQLCall, queryImport } from '../../../tests/_utils/index.js'
+import { ITitreEtapeJustificatif } from '../../types.js'
+import {
+  documentCreate,
+  documentGet
+} from '../../database/queries/documents.js'
+import { entrepriseUpsert } from '../../database/queries/entreprises.js'
+import { titreCreate } from '../../database/queries/titres.js'
 import {
   titreEtapeCreate,
   titresEtapesJustificatifsUpsert
-} from '../../database/queries/titres-etapes'
-import { userSuper } from '../../database/user-super'
-import { dbManager } from '../../../tests/db-manager'
-import { titreDemarcheCreate } from '../../database/queries/titres-demarches'
-import { toCaminoDate } from 'camino-common/src/date'
-import { newEntrepriseId } from 'camino-common/src/entreprise'
+} from '../../database/queries/titres-etapes.js'
+import { userSuper } from '../../database/user-super.js'
+import { dbManager } from '../../../tests/db-manager.js'
+import { titreDemarcheCreate } from '../../database/queries/titres-demarches.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
+import { newEntrepriseId } from 'camino-common/src/entreprise.js'
 
 import {
   afterAll,
diff --git a/packages/api/src/api/graphql/entreprises.test.integration.ts b/packages/api/src/api/graphql/entreprises.test.integration.ts
index 653108dd3..5ecdbe2b2 100644
--- a/packages/api/src/api/graphql/entreprises.test.integration.ts
+++ b/packages/api/src/api/graphql/entreprises.test.integration.ts
@@ -1,26 +1,26 @@
-import { ITitreEtapeJustificatif } from '../../types'
-import { dbManager } from '../../../tests/db-manager'
-import { graphQLCall, queryImport } from '../../../tests/_utils/index'
+import { ITitreEtapeJustificatif } from '../../types.js'
+import { dbManager } from '../../../tests/db-manager.js'
+import { graphQLCall, queryImport } from '../../../tests/_utils/index.js'
 import {
   entreprisesEtablissementsFetch,
   entreprisesFetch,
   tokenInitialize
-} from '../../tools/api-insee/fetch'
+} from '../../tools/api-insee/fetch.js'
 import {
   entreprise,
   entrepriseAndEtablissements
-} from '../../../tests/__mocks__/fetch-insee-api'
-import { entrepriseUpsert } from '../../database/queries/entreprises'
-import { titreCreate } from '../../database/queries/titres'
-import { documentCreate } from '../../database/queries/documents'
+} from '../../../tests/__mocks__/fetch-insee-api.js'
+import { entrepriseUpsert } from '../../database/queries/entreprises.js'
+import { titreCreate } from '../../database/queries/titres.js'
+import { documentCreate } from '../../database/queries/documents.js'
 import {
   titreEtapeCreate,
   titresEtapesJustificatifsUpsert
-} from '../../database/queries/titres-etapes'
-import { titreDemarcheCreate } from '../../database/queries/titres-demarches'
-import { userSuper } from '../../database/user-super'
-import { toCaminoDate } from 'camino-common/src/date'
-import { newEntrepriseId } from 'camino-common/src/entreprise'
+} from '../../database/queries/titres-etapes.js'
+import { titreDemarcheCreate } from '../../database/queries/titres-demarches.js'
+import { userSuper } from '../../database/user-super.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
+import { newEntrepriseId } from 'camino-common/src/entreprise.js'
 import {
   beforeAll,
   beforeEach,
diff --git a/packages/api/src/api/graphql/metas.test.integration.ts b/packages/api/src/api/graphql/metas.test.integration.ts
index cbad97ca5..9aa800bb2 100644
--- a/packages/api/src/api/graphql/metas.test.integration.ts
+++ b/packages/api/src/api/graphql/metas.test.integration.ts
@@ -1,5 +1,5 @@
-import { dbManager } from '../../../tests/db-manager'
-import { graphQLCall, queryImport } from '../../../tests/_utils/index'
+import { dbManager } from '../../../tests/db-manager.js'
+import { graphQLCall, queryImport } from '../../../tests/_utils/index.js'
 
 import { afterAll, beforeAll, describe, test, expect, vi } from 'vitest'
 
diff --git a/packages/api/src/api/graphql/resolvers.ts b/packages/api/src/api/graphql/resolvers.ts
index 417ecee8b..d65730cc2 100644
--- a/packages/api/src/api/graphql/resolvers.ts
+++ b/packages/api/src/api/graphql/resolvers.ts
@@ -7,7 +7,7 @@ import {
   titreCreer,
   titreSupprimer,
   titreModifier
-} from './resolvers/titres'
+} from './resolvers/titres.js'
 
 import {
   etape,
@@ -16,14 +16,14 @@ import {
   etapeModifier,
   etapeSupprimer,
   etapeDeposer
-} from './resolvers/titres-etapes'
+} from './resolvers/titres-etapes.js'
 
 import {
   documents,
   documentCreer,
   documentModifier,
   documentSupprimer
-} from './resolvers/documents'
+} from './resolvers/documents.js'
 
 import {
   demarche,
@@ -31,7 +31,7 @@ import {
   demarcheCreer,
   demarcheModifier,
   demarcheSupprimer
-} from './resolvers/titres-demarches'
+} from './resolvers/titres-demarches.js'
 
 import {
   utilisateur,
@@ -51,7 +51,7 @@ import {
   utilisateurEmailMessageEnvoyer,
   utilisateurEmailModifier,
   newsletterInscrire
-} from './resolvers/utilisateurs'
+} from './resolvers/utilisateurs.js'
 
 import {
   devises,
@@ -72,7 +72,7 @@ import {
   regions,
   departements,
   pays
-} from './resolvers/metas'
+} from './resolvers/metas.js'
 
 import {
   activitesTypes,
@@ -80,7 +80,7 @@ import {
   activitesTypesTitresTypes,
   activitesTypesDocumentsTypes,
   activitesTypesPays
-} from './resolvers/metas-activites'
+} from './resolvers/metas-activites.js'
 
 import {
   titresTypes,
@@ -91,9 +91,9 @@ import {
   titresTypesDemarchesTypesEtapesTypesJustificatifsTypes,
   etapesTypesDocumentsTypes,
   etapesTypesJustificatifsTypes
-} from './resolvers/metas-join'
+} from './resolvers/metas-join.js'
 
-import { substances } from './resolvers/substances'
+import { substances } from './resolvers/substances.js'
 
 import {
   entreprise,
@@ -101,7 +101,7 @@ import {
   entrepriseCreer,
   entrepriseModifier,
   entreprisesTitresCreation
-} from './resolvers/entreprises'
+} from './resolvers/entreprises.js'
 import {
   administration,
   administrations,
@@ -111,26 +111,26 @@ import {
   administrationActiviteTypeEmailCreer,
   administrationActiviteTypeEmailSupprimer,
   administrationActivitesTypesEmails
-} from './resolvers/administrations'
+} from './resolvers/administrations.js'
 import {
   activite,
   activites,
   activiteModifier,
   activiteSupprimer,
   activiteDeposer
-} from './resolvers/titres-activites'
-import { statistiquesGlobales } from './resolvers/statistiques'
-import { statistiquesGuyane } from './resolvers/statistiques-guyane'
-import { statistiquesGranulatsMarins } from './resolvers/statistiques-granulats-marins'
+} from './resolvers/titres-activites.js'
+import { statistiquesGlobales } from './resolvers/statistiques.js'
+import { statistiquesGuyane } from './resolvers/statistiques-guyane.js'
+import { statistiquesGranulatsMarins } from './resolvers/statistiques-granulats-marins.js'
 
-import { titreDemandeCreer } from './resolvers/titre-demande'
+import { titreDemandeCreer } from './resolvers/titre-demande.js'
 import {
   pointsImporter,
   perimetreInformations,
   titreEtapePerimetreInformations
-} from './resolvers/points'
-import { journaux } from './resolvers/journaux'
-import { utilisateurTitreAbonner } from './resolvers/utilisateurs-titres'
+} from './resolvers/points.js'
+import { journaux } from './resolvers/journaux.js'
+import { utilisateurTitreAbonner } from './resolvers/utilisateurs-titres.js'
 
 export default {
   //  types
diff --git a/packages/api/src/api/graphql/resolvers/_fields-build.ts b/packages/api/src/api/graphql/resolvers/_fields-build.ts
index 7d42e6d10..bb5c8218f 100644
--- a/packages/api/src/api/graphql/resolvers/_fields-build.ts
+++ b/packages/api/src/api/graphql/resolvers/_fields-build.ts
@@ -1,10 +1,8 @@
-import { IFields } from '../../../types'
+import { IFields } from '../../../types.js'
 import graphqlFields from 'graphql-fields'
 import { GraphQLResolveInfo } from 'graphql'
 
 // in: info: objet contenant les propriétés de la requête graphQl
 // out: ast avec les champs requis par le client GraphQl
-const fieldsBuild = (info: GraphQLResolveInfo) =>
+export const fieldsBuild = (info: GraphQLResolveInfo) =>
   graphqlFields(info, {}, { excludedFields: ['__typename'] }) as IFields
-
-export { fieldsBuild }
diff --git a/packages/api/src/api/graphql/resolvers/_titre-activite.test.ts b/packages/api/src/api/graphql/resolvers/_titre-activite.test.ts
index 290af972d..0efb1abff 100644
--- a/packages/api/src/api/graphql/resolvers/_titre-activite.test.ts
+++ b/packages/api/src/api/graphql/resolvers/_titre-activite.test.ts
@@ -1,12 +1,12 @@
 import {
   productionCheck,
   titreActiviteAdministrationsEmailsGet
-} from './_titre-activite'
-import { IAdministrationActiviteTypeEmail, IContenu } from '../../../types'
+} from './_titre-activite.js'
+import { IAdministrationActiviteTypeEmail, IContenu } from '../../../types.js'
 import {
   AdministrationId,
   ADMINISTRATION_IDS
-} from 'camino-common/src/static/administrations'
+} from 'camino-common/src/static/administrations.js'
 import { describe, expect, test } from 'vitest'
 
 describe('teste la construction des emails lors du dépôt d’une activité', () => {
diff --git a/packages/api/src/api/graphql/resolvers/_titre-activite.ts b/packages/api/src/api/graphql/resolvers/_titre-activite.ts
index ff43daf37..b3ea9815e 100644
--- a/packages/api/src/api/graphql/resolvers/_titre-activite.ts
+++ b/packages/api/src/api/graphql/resolvers/_titre-activite.ts
@@ -1,5 +1,3 @@
-import dateFormat from 'dateformat'
-
 import {
   IAdministrationActiviteTypeEmail,
   IContenu,
@@ -8,16 +6,17 @@ import {
   ISectionElement,
   ITitreActivite,
   IUtilisateur
-} from '../../../types'
+} from '../../../types.js'
 
-import { emailsSend } from '../../../tools/api-mailjet/emails'
-import { titreUrlGet } from '../../../business/utils/urls-get'
-import { getPeriode } from 'camino-common/src/static/frequence'
+import { emailsSend } from '../../../tools/api-mailjet/emails.js'
+import { titreUrlGet } from '../../../business/utils/urls-get.js'
+import { getPeriode } from 'camino-common/src/static/frequence.js'
 import {
   AdministrationId,
   Administrations
-} from 'camino-common/src/static/administrations'
-import AdministrationsActivitesTypesEmails from '../../../database/models/administrations-activites-types-emails'
+} from 'camino-common/src/static/administrations.js'
+import { dateFormat } from 'camino-common/src/date.js'
+import AdministrationsActivitesTypesEmails from '../../../database/models/administrations-activites-types-emails.js'
 
 const elementHtmlBuild = (
   sectionId: string,
@@ -93,7 +92,7 @@ const titreActiviteEmailFormat = (
 
 <b>Lien</b> : ${titreUrl} <br>
 <b>Rempli par</b> : ${user.prenom} ${user.nom} (${user.email}) <br>
-<b>Date de dépôt</b> : ${dateFormat(dateSaisie, 'dd-mm-yyyy')} <br>
+<b>Date de dépôt</b> : ${dateSaisie ? dateFormat(dateSaisie) : ''} <br>
 
 <hr>
 `
diff --git a/packages/api/src/api/graphql/resolvers/_titre-document.ts b/packages/api/src/api/graphql/resolvers/_titre-document.ts
index c9ed633ec..05f8502b0 100644
--- a/packages/api/src/api/graphql/resolvers/_titre-document.ts
+++ b/packages/api/src/api/graphql/resolvers/_titre-document.ts
@@ -1,8 +1,8 @@
 import { join } from 'path'
 
-import { IDocumentRepertoire } from '../../../types'
+import { IDocumentRepertoire } from '../../../types.js'
 
-import { dirDelete } from '../../../tools/dir-delete'
+import { dirDelete } from '../../../tools/dir-delete.js'
 
 const fichiersRepertoireDelete = async (
   id: string,
diff --git a/packages/api/src/api/graphql/resolvers/_titre-etape-email.test.ts b/packages/api/src/api/graphql/resolvers/_titre-etape-email.test.ts
index 78b1cddf3..6b8bae42f 100644
--- a/packages/api/src/api/graphql/resolvers/_titre-etape-email.test.ts
+++ b/packages/api/src/api/graphql/resolvers/_titre-etape-email.test.ts
@@ -1,6 +1,6 @@
-import { emailsForAdministrationsGet } from './_titre-etape-email'
-import { IUtilisateur } from '../../../types'
-import { userSuper } from '../../../database/user-super'
+import { emailsForAdministrationsGet } from './_titre-etape-email.js'
+import { IUtilisateur } from '../../../types.js'
+import { userSuper } from '../../../database/user-super.js'
 import { expect, test } from 'vitest'
 
 test('envoie un email sur une étape non existante', () => {
diff --git a/packages/api/src/api/graphql/resolvers/_titre-etape-email.ts b/packages/api/src/api/graphql/resolvers/_titre-etape-email.ts
index 51d0addfb..7d8b7ea66 100644
--- a/packages/api/src/api/graphql/resolvers/_titre-etape-email.ts
+++ b/packages/api/src/api/graphql/resolvers/_titre-etape-email.ts
@@ -1,10 +1,10 @@
-import { IEtapeType, ITitreEtape, IUtilisateur } from '../../../types'
+import { IEtapeType, ITitreEtape, IUtilisateur } from '../../../types.js'
 
-import { emailsSend } from '../../../tools/api-mailjet/emails'
-import { titreEtapeGet } from '../../../database/queries/titres-etapes'
-import { utilisateursTitresGet } from '../../../database/queries/utilisateurs'
-import { titreUrlGet } from '../../../business/utils/urls-get'
-import { EmailAdministration } from '../../../tools/api-mailjet/types'
+import { emailsSend } from '../../../tools/api-mailjet/emails.js'
+import { titreEtapeGet } from '../../../database/queries/titres-etapes.js'
+import { utilisateursTitresGet } from '../../../database/queries/utilisateurs.js'
+import { titreUrlGet } from '../../../business/utils/urls-get.js'
+import { EmailAdministration } from '../../../tools/api-mailjet/types.js'
 
 const emailForAdministrationContentFormat = (
   titreTypeId: string,
diff --git a/packages/api/src/api/graphql/resolvers/_titre-etape.ts b/packages/api/src/api/graphql/resolvers/_titre-etape.ts
index 99adb80a7..ea1618907 100644
--- a/packages/api/src/api/graphql/resolvers/_titre-etape.ts
+++ b/packages/api/src/api/graphql/resolvers/_titre-etape.ts
@@ -8,33 +8,33 @@ import {
   ITitreDemarche,
   ITitreEtape,
   ITitrePointReference
-} from '../../../types'
+} from '../../../types.js'
 
-import { geoConvert } from '../../../tools/geo-convert'
+import { geoConvert } from '../../../tools/geo-convert.js'
 
 import {
   titreEtapeHeritagePropsFind,
   titreEtapePropsIds
-} from '../../../business/utils/titre-etape-heritage-props-find'
+} from '../../../business/utils/titre-etape-heritage-props-find.js'
 import {
   etapeSectionsDictionaryBuild,
   titreEtapeHeritageContenuFind
-} from '../../../business/utils/titre-etape-heritage-contenu-find'
-import { etapeTypeSectionsFormat } from '../../_format/etapes-types'
+} from '../../../business/utils/titre-etape-heritage-contenu-find.js'
+import { etapeTypeSectionsFormat } from '../../_format/etapes-types.js'
 import {
   titreEtapesSortAscByOrdre,
   titreEtapesSortDescByOrdre
-} from '../../../business/utils/titre-etapes-sort'
-import { GeoSystemes } from 'camino-common/src/static/geoSystemes'
-import { geojsonIntersectsSDOM, GeoJsonResult } from '../../../tools/geojson'
-import { Feature } from '@turf/helpers'
-import SdomZones from '../../../database/models/sdom-zones'
-import { SDOMZoneIds } from 'camino-common/src/static/sdom'
+} from '../../../business/utils/titre-etapes-sort.js'
+import { GeoSystemes } from 'camino-common/src/static/geoSystemes.js'
+import { geojsonIntersectsSDOM, GeoJsonResult } from '../../../tools/geojson.js'
+import { Feature } from 'geojson'
+import SdomZones from '../../../database/models/sdom-zones.js'
+import { SDOMZoneIds } from 'camino-common/src/static/sdom.js'
 import {
   DocumentTypeId,
   DocumentType,
   DOCUMENTS_TYPES_IDS
-} from 'camino-common/src/static/documentsTypes'
+} from 'camino-common/src/static/documentsTypes.js'
 
 const titreEtapePointsCalc = <
   T extends {
diff --git a/packages/api/src/api/graphql/resolvers/administrations.ts b/packages/api/src/api/graphql/resolvers/administrations.ts
index 62d42a84f..c81a1c27f 100644
--- a/packages/api/src/api/graphql/resolvers/administrations.ts
+++ b/packages/api/src/api/graphql/resolvers/administrations.ts
@@ -6,7 +6,7 @@ import {
   IAdministrationTitreTypeTitreStatut,
   IAdministrationActiviteTypeEmail,
   IToken
-} from '../../../types'
+} from '../../../types.js'
 
 import {
   administrationGet,
@@ -19,17 +19,17 @@ import {
   administrationActiviteTypeUpsert,
   administrationActiviteTypeEmailCreate,
   administrationActiviteTypeEmailDelete
-} from '../../../database/queries/administrations'
+} from '../../../database/queries/administrations.js'
 
-import { fieldsBuild } from './_fields-build'
+import { fieldsBuild } from './_fields-build.js'
 
-import { administrationFormat } from '../../_format/administrations'
-import { emailCheck } from '../../../tools/email-check'
-import { userGet } from '../../../database/queries/utilisateurs'
-import { isSuper } from 'camino-common/src/roles'
-import { canReadActivitesTypesEmails } from 'camino-common/src/permissions/administrations'
-import administrationsActivitesTypesEmails from '../../../database/models/administrations-activites-types-emails'
-import { isAdministrationId } from 'camino-common/src/static/administrations'
+import { administrationFormat } from '../../_format/administrations.js'
+import { emailCheck } from '../../../tools/email-check.js'
+import { userGet } from '../../../database/queries/utilisateurs.js'
+import { isSuper } from 'camino-common/src/roles.js'
+import { canReadActivitesTypesEmails } from 'camino-common/src/permissions/administrations.js'
+import administrationsActivitesTypesEmails from '../../../database/models/administrations-activites-types-emails.js'
+import { isAdministrationId } from 'camino-common/src/static/administrations.js'
 
 const administration = async (
   { id }: { id: string },
diff --git a/packages/api/src/api/graphql/resolvers/documents.ts b/packages/api/src/api/graphql/resolvers/documents.ts
index 4a986a6c6..df764d5b3 100644
--- a/packages/api/src/api/graphql/resolvers/documents.ts
+++ b/packages/api/src/api/graphql/resolvers/documents.ts
@@ -3,10 +3,10 @@ import { FileUpload } from 'graphql-upload'
 import { join } from 'path'
 import cryptoRandomString from 'crypto-random-string'
 
-import { IDocument, IToken, ITitreEtape, IUtilisateur } from '../../../types'
+import { IDocument, IToken, ITitreEtape, IUtilisateur } from '../../../types.js'
 
-import fileDelete from '../../../tools/file-delete'
-import fileStreamCreate from '../../../tools/file-stream-create'
+import fileDelete from '../../../tools/file-delete.js'
+import fileStreamCreate from '../../../tools/file-stream-create.js'
 
 import {
   documentsGet,
@@ -14,22 +14,22 @@ import {
   documentCreate,
   documentUpdate,
   documentDelete
-} from '../../../database/queries/documents'
-
-import { documentTypeGet } from '../../../database/queries/metas'
-
-import { fieldsBuild } from './_fields-build'
-import fileRename from '../../../tools/file-rename'
-import { titreEtapeGet } from '../../../database/queries/titres-etapes'
-import { titreActiviteGet } from '../../../database/queries/titres-activites'
-
-import { documentInputValidate } from '../../../business/validations/document-input-validate'
-import { documentUpdationValidate } from '../../../business/validations/document-updation-validate'
-import { entrepriseGet } from '../../../database/queries/entreprises'
-import { userGet } from '../../../database/queries/utilisateurs'
-import { userSuper } from '../../../database/user-super'
-import { documentFilePathFind } from '../../../tools/documents/document-path-find'
-import { isBureauDEtudes, isEntreprise } from 'camino-common/src/roles'
+} from '../../../database/queries/documents.js'
+
+import { documentTypeGet } from '../../../database/queries/metas.js'
+
+import { fieldsBuild } from './_fields-build.js'
+import fileRename from '../../../tools/file-rename.js'
+import { titreEtapeGet } from '../../../database/queries/titres-etapes.js'
+import { titreActiviteGet } from '../../../database/queries/titres-activites.js'
+
+import { documentInputValidate } from '../../../business/validations/document-input-validate.js'
+import { documentUpdationValidate } from '../../../business/validations/document-updation-validate.js'
+import { entrepriseGet } from '../../../database/queries/entreprises.js'
+import { userGet } from '../../../database/queries/utilisateurs.js'
+import { userSuper } from '../../../database/user-super.js'
+import { documentFilePathFind } from '../../../tools/documents/document-path-find.js'
+import { isBureauDEtudes, isEntreprise } from 'camino-common/src/roles.js'
 
 const errorEtapesAssocieesUpdate = (
   etapesAssociees: ITitreEtape[],
diff --git a/packages/api/src/api/graphql/resolvers/entreprises.ts b/packages/api/src/api/graphql/resolvers/entreprises.ts
index 01374fa50..f23670fcb 100644
--- a/packages/api/src/api/graphql/resolvers/entreprises.ts
+++ b/packages/api/src/api/graphql/resolvers/entreprises.ts
@@ -1,4 +1,4 @@
-import { IEntreprise, IEntrepriseColonneId, IToken } from '../../../types'
+import { IEntreprise, IEntrepriseColonneId, IToken } from '../../../types.js'
 import { GraphQLResolveInfo } from 'graphql'
 
 import {
@@ -7,16 +7,16 @@ import {
   entreprisesGet,
   entrepriseUpsert,
   titreDemandeEntreprisesGet
-} from '../../../database/queries/entreprises'
-import { titreEtapeGet } from '../../../database/queries/titres-etapes'
+} from '../../../database/queries/entreprises.js'
+import { titreEtapeGet } from '../../../database/queries/titres-etapes.js'
 
-import { fieldsBuild } from './_fields-build'
+import { fieldsBuild } from './_fields-build.js'
 
-import { entrepriseFormat } from '../../_format/entreprises'
-import { emailCheck } from '../../../tools/email-check'
-import { apiInseeEntrepriseAndEtablissementsGet } from '../../../tools/api-insee/index'
-import { userGet } from '../../../database/queries/utilisateurs'
-import { EntrepriseId } from 'camino-common/src/entreprise'
+import { entrepriseFormat } from '../../_format/entreprises.js'
+import { emailCheck } from '../../../tools/email-check.js'
+import { apiInseeEntrepriseAndEtablissementsGet } from '../../../tools/api-insee/index.js'
+import { userGet } from '../../../database/queries/utilisateurs.js'
+import { EntrepriseId } from 'camino-common/src/entreprise.js'
 
 const entreprise = async (
   { id }: { id: string },
diff --git a/packages/api/src/api/graphql/resolvers/journaux.ts b/packages/api/src/api/graphql/resolvers/journaux.ts
index 80dc9ec65..f4f21f0af 100644
--- a/packages/api/src/api/graphql/resolvers/journaux.ts
+++ b/packages/api/src/api/graphql/resolvers/journaux.ts
@@ -1,8 +1,8 @@
-import { journauxGet } from '../../../database/queries/journaux'
-import { userGet } from '../../../database/queries/utilisateurs'
-import { IToken } from '../../../types'
+import { journauxGet } from '../../../database/queries/journaux.js'
+import { userGet } from '../../../database/queries/utilisateurs.js'
+import { IToken } from '../../../types.js'
 import { GraphQLResolveInfo } from 'graphql'
-import { fieldsBuild } from './_fields-build'
+import { fieldsBuild } from './_fields-build.js'
 
 export interface IJournauxQueryParams {
   page: number
diff --git a/packages/api/src/api/graphql/resolvers/metas-activites.ts b/packages/api/src/api/graphql/resolvers/metas-activites.ts
index 08c1e483a..59ac9fd63 100644
--- a/packages/api/src/api/graphql/resolvers/metas-activites.ts
+++ b/packages/api/src/api/graphql/resolvers/metas-activites.ts
@@ -1,16 +1,16 @@
 import { GraphQLResolveInfo } from 'graphql'
-import { IToken } from '../../../types'
+import { IToken } from '../../../types.js'
 
-import { fieldsBuild } from './_fields-build'
-import { userGet } from '../../../database/queries/utilisateurs'
+import { fieldsBuild } from './_fields-build.js'
+import { userGet } from '../../../database/queries/utilisateurs.js'
 import {
   activitesStatutsGet,
   activitesTypesDocumentsTypesGet,
   activitesTypesGet,
   activitesTypesPaysGet,
   activitesTypesTitresTypesGet
-} from '../../../database/queries/metas-activites'
-import { isSuper } from 'camino-common/src/roles'
+} from '../../../database/queries/metas-activites.js'
+import { isSuper } from 'camino-common/src/roles.js'
 
 const activitesTypes = async (
   _: never,
diff --git a/packages/api/src/api/graphql/resolvers/metas-join.ts b/packages/api/src/api/graphql/resolvers/metas-join.ts
index 472d2d58d..2643720a1 100644
--- a/packages/api/src/api/graphql/resolvers/metas-join.ts
+++ b/packages/api/src/api/graphql/resolvers/metas-join.ts
@@ -1,6 +1,6 @@
-import { IToken } from '../../../types'
+import { IToken } from '../../../types.js'
 
-import { userGet } from '../../../database/queries/utilisateurs'
+import { userGet } from '../../../database/queries/utilisateurs.js'
 
 import {
   titresTypesGet,
@@ -9,12 +9,12 @@ import {
   etapesTypesDocumentsTypesGet,
   etapesTypesJustificatifsTypesGet,
   titresTypesDemarchesTypesEtapesTypesJustificatifsTypesGet
-} from '../../../database/queries/metas'
+} from '../../../database/queries/metas.js'
 import { GraphQLResolveInfo } from 'graphql'
-import { fieldsBuild } from './_fields-build'
-import { isSuper } from 'camino-common/src/roles'
-import { toSpecificDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes'
-import { titreTypesStatutsTitresPublicLecture } from 'camino-common/src/static/titresTypesTypes_domaine_titresStatuts'
+import { fieldsBuild } from './_fields-build.js'
+import { isSuper } from 'camino-common/src/roles.js'
+import { toSpecificDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes.js'
+import { titreTypesStatutsTitresPublicLecture } from 'camino-common/src/static/titresTypesTypes_domaine_titresStatuts.js'
 
 const titresTypes = async (
   _: never,
diff --git a/packages/api/src/api/graphql/resolvers/metas.test.ts b/packages/api/src/api/graphql/resolvers/metas.test.ts
index eace7abd2..46ae43f57 100644
--- a/packages/api/src/api/graphql/resolvers/metas.test.ts
+++ b/packages/api/src/api/graphql/resolvers/metas.test.ts
@@ -1,9 +1,9 @@
-import { etapesTypesPossibleACetteDateOuALaPlaceDeLEtape } from './metas'
-import TitresDemarches from '../../../database/models/titres-demarches'
-import { IEtapeType } from '../../../types'
-import { newDemarcheId } from '../../../database/models/_format/id-create'
-import { ArmOctMachine } from '../../../business/rules-demarches/arm/oct.machine'
-import { toCaminoDate } from 'camino-common/src/date'
+import { etapesTypesPossibleACetteDateOuALaPlaceDeLEtape } from './metas.js'
+import TitresDemarches from '../../../database/models/titres-demarches.js'
+import { IEtapeType } from '../../../types.js'
+import { newDemarcheId } from '../../../database/models/_format/id-create.js'
+import { ArmOctMachine } from '../../../business/rules-demarches/arm/oct.machine.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { describe, expect, test } from 'vitest'
 
 describe('etapesTypesPossibleACetteDateOuALaPlaceDeLEtape', function () {
diff --git a/packages/api/src/api/graphql/resolvers/metas.ts b/packages/api/src/api/graphql/resolvers/metas.ts
index 8ea290425..010a5694b 100644
--- a/packages/api/src/api/graphql/resolvers/metas.ts
+++ b/packages/api/src/api/graphql/resolvers/metas.ts
@@ -4,7 +4,7 @@ import {
   IEtapeType,
   IFields,
   IToken
-} from '../../../types'
+} from '../../../types.js'
 
 import {
   demarchesStatutsGet,
@@ -14,38 +14,41 @@ import {
   domainesGet,
   etapesTypesGet,
   titresTypesTypesGet
-} from '../../../database/queries/metas'
+} from '../../../database/queries/metas.js'
 
-import { userGet } from '../../../database/queries/utilisateurs'
+import { userGet } from '../../../database/queries/utilisateurs.js'
 
-import { fieldsBuild } from './_fields-build'
-import { etapeTypeIsValidCheck } from '../../_format/etapes-types'
-import { titreDemarcheGet } from '../../../database/queries/titres-demarches'
-import { titreEtapeGet } from '../../../database/queries/titres-etapes'
+import { fieldsBuild } from './_fields-build.js'
+import { etapeTypeIsValidCheck } from '../../_format/etapes-types.js'
+import { titreDemarcheGet } from '../../../database/queries/titres-demarches.js'
+import { titreEtapeGet } from '../../../database/queries/titres-etapes.js'
 import {
   demarcheDefinitionFind,
   isDemarcheDefinitionMachine
-} from '../../../business/rules-demarches/definitions'
-import { userSuper } from '../../../database/user-super'
-import { sortedAdministrationTypes } from 'camino-common/src/static/administrations'
-import { sortedGeoSystemes } from 'camino-common/src/static/geoSystemes'
-
-import { UNITES } from 'camino-common/src/static/unites'
-import { titreEtapesSortAscByOrdre } from '../../../business/utils/titre-etapes-sort'
-import TitresDemarches from '../../../database/models/titres-demarches'
-import { Pays, PaysList } from 'camino-common/src/static/pays'
-import { Departement, Departements } from 'camino-common/src/static/departement'
-import { Region, Regions } from 'camino-common/src/static/region'
-import { EtapesStatuts } from 'camino-common/src/static/etapesStatuts'
-import { sortedTitresStatuts } from 'camino-common/src/static/titresStatuts'
+} from '../../../business/rules-demarches/definitions.js'
+import { userSuper } from '../../../database/user-super.js'
+import { sortedAdministrationTypes } from 'camino-common/src/static/administrations.js'
+import { sortedGeoSystemes } from 'camino-common/src/static/geoSystemes.js'
+
+import { UNITES } from 'camino-common/src/static/unites.js'
+import { titreEtapesSortAscByOrdre } from '../../../business/utils/titre-etapes-sort.js'
+import TitresDemarches from '../../../database/models/titres-demarches.js'
+import { Pays, PaysList } from 'camino-common/src/static/pays.js'
+import {
+  Departement,
+  Departements
+} from 'camino-common/src/static/departement.js'
+import { Region, Regions } from 'camino-common/src/static/region.js'
+import { EtapesStatuts } from 'camino-common/src/static/etapesStatuts.js'
+import { sortedTitresStatuts } from 'camino-common/src/static/titresStatuts.js'
 import {
   Etape,
   toMachineEtapes
-} from '../../../business/rules-demarches/machine-common'
-import { CaminoMachines } from '../../../business/rules-demarches/machines'
-import { phasesStatuts as staticPhasesStatuts } from 'camino-common/src/static/phasesStatuts'
-import { sortedReferencesTypes } from 'camino-common/src/static/referencesTypes'
-import { CaminoDate } from 'camino-common/src/date'
+} from '../../../business/rules-demarches/machine-common.js'
+import { CaminoMachines } from '../../../business/rules-demarches/machines.js'
+import { phasesStatuts as staticPhasesStatuts } from 'camino-common/src/static/phasesStatuts.js'
+import { sortedReferencesTypes } from 'camino-common/src/static/referencesTypes.js'
+import { CaminoDate } from 'camino-common/src/date.js'
 
 export const devises = async () => devisesGet()
 
diff --git a/packages/api/src/api/graphql/resolvers/points.ts b/packages/api/src/api/graphql/resolvers/points.ts
index 8646d2a83..a774a962f 100644
--- a/packages/api/src/api/graphql/resolvers/points.ts
+++ b/packages/api/src/api/graphql/resolvers/points.ts
@@ -1,38 +1,43 @@
-import { ISDOMZone, ITitrePoint, IToken, IUtilisateur } from '../../../types'
+import { ISDOMZone, ITitrePoint, IToken, IUtilisateur } from '../../../types.js'
 
 import { FileUpload } from 'graphql-upload'
 import { Stream } from 'stream'
 import shpjs from 'shpjs'
-import { FeatureCollection, MultiPolygon, Polygon, Position } from 'geojson'
+import {
+  FeatureCollection,
+  MultiPolygon,
+  Polygon,
+  Position,
+  Feature
+} from 'geojson'
 import {
   documentTypeIdsBySdomZonesGet,
   titreEtapePointsCalc,
   titreEtapeSdomZonesGet
-} from './_titre-etape'
+} from './_titre-etape.js'
 import {
   geojsonFeatureMultiPolygon,
   geojsonSurface
-} from '../../../tools/geojson'
-import { Feature } from '@turf/helpers'
-import { titreEtapeGet } from '../../../database/queries/titres-etapes'
-import { userGet } from '../../../database/queries/utilisateurs'
-import { etapeTypeGet } from '../../../database/queries/metas'
-import { titreGet, titresGet } from '../../../database/queries/titres'
-import { userSuper } from '../../../database/user-super'
+} from '../../../tools/geojson.js'
+import { titreEtapeGet } from '../../../database/queries/titres-etapes.js'
+import { userGet } from '../../../database/queries/utilisateurs.js'
+import { etapeTypeGet } from '../../../database/queries/metas.js'
+import { titreGet, titresGet } from '../../../database/queries/titres.js'
+import { userSuper } from '../../../database/user-super.js'
 import intersect from '@turf/intersect'
 import {
   assertGeoSystemeId,
   GeoSystemes
-} from 'camino-common/src/static/geoSystemes'
+} from 'camino-common/src/static/geoSystemes.js'
 import {
   isSuper,
   isAdministrationAdmin,
   isAdministrationEditeur
-} from 'camino-common/src/roles'
-import { titreDemarcheGet } from '../../../database/queries/titres-demarches'
-import { TitresStatuts } from 'camino-common/src/static/titresStatuts'
-import { isNotNullNorUndefined } from 'camino-common/src/typescript-tools'
-import { SDOMZoneId, SDOMZoneIds } from 'camino-common/src/static/sdom'
+} from 'camino-common/src/roles.js'
+import { titreDemarcheGet } from '../../../database/queries/titres-demarches.js'
+import { TitresStatuts } from 'camino-common/src/static/titresStatuts.js'
+import { isNotNullNorUndefined } from 'camino-common/src/typescript-tools.js'
+import { SDOMZoneId, SDOMZoneIds } from 'camino-common/src/static/sdom.js'
 
 const stream2buffer = async (stream: Stream): Promise<Buffer> => {
   return new Promise<Buffer>((resolve, reject) => {
diff --git a/packages/api/src/api/graphql/resolvers/statistiques-granulats-marins.ts b/packages/api/src/api/graphql/resolvers/statistiques-granulats-marins.ts
index a38334740..5c700c13a 100644
--- a/packages/api/src/api/graphql/resolvers/statistiques-granulats-marins.ts
+++ b/packages/api/src/api/graphql/resolvers/statistiques-granulats-marins.ts
@@ -1,14 +1,14 @@
 import camelcase from 'camelcase'
 
-import { ITitre, ITitreActivite } from '../../../types'
+import { ITitre, ITitreActivite } from '../../../types.js'
 
-import { titresGet } from '../../../database/queries/titres'
-import { titresActivitesGet } from '../../../database/queries/titres-activites'
-import { userSuper } from '../../../database/user-super'
+import { titresGet } from '../../../database/queries/titres.js'
+import { titresActivitesGet } from '../../../database/queries/titres-activites.js'
+import { userSuper } from '../../../database/user-super.js'
 import {
   concessionsValidesBuild,
   titresSurfaceIndexBuild
-} from './statistiques'
+} from './statistiques.js'
 
 const statistiquesGranulatsMarinsActivitesFind = (
   titresActivites: ITitreActivite[],
diff --git a/packages/api/src/api/graphql/resolvers/statistiques-guyane.ts b/packages/api/src/api/graphql/resolvers/statistiques-guyane.ts
index 00aa8daf7..7229bade7 100644
--- a/packages/api/src/api/graphql/resolvers/statistiques-guyane.ts
+++ b/packages/api/src/api/graphql/resolvers/statistiques-guyane.ts
@@ -1,12 +1,12 @@
 import camelcase from 'camelcase'
 
-import { ITitre, ITitreActivite } from '../../../types'
+import { ITitre, ITitreActivite } from '../../../types.js'
 
-import { titresGet } from '../../../database/queries/titres'
-import { titresActivitesGet } from '../../../database/queries/titres-activites'
-import { userSuper } from '../../../database/user-super'
-import { titresSurfaceIndexBuild } from './statistiques'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
+import { titresGet } from '../../../database/queries/titres.js'
+import { titresActivitesGet } from '../../../database/queries/titres-activites.js'
+import { userSuper } from '../../../database/user-super.js'
+import { titresSurfaceIndexBuild } from './statistiques.js'
+import { TitreTypeId } from 'camino-common/src/static/titresTypes.js'
 
 const statistiquesGuyaneActivitesBuild = (
   sectionId: string,
diff --git a/packages/api/src/api/graphql/resolvers/statistiques.ts b/packages/api/src/api/graphql/resolvers/statistiques.ts
index 64255aac1..e2a27738e 100644
--- a/packages/api/src/api/graphql/resolvers/statistiques.ts
+++ b/packages/api/src/api/graphql/resolvers/statistiques.ts
@@ -1,19 +1,19 @@
-import { ITitre } from '../../../types'
+import { ITitre } from '../../../types.js'
 
-import { titreEtapePropFind } from '../../../business/rules/titre-etape-prop-find'
-import { titreValideCheck } from '../../../business/utils/titre-valide-check'
-import { titresActivitesGet } from '../../../database/queries/titres-activites'
-import { userSuper } from '../../../database/user-super'
-import { matomoData } from '../../../tools/api-matomo'
+import { titreEtapePropFind } from '../../../business/rules/titre-etape-prop-find.js'
+import { titreValideCheck } from '../../../business/utils/titre-valide-check.js'
+import { titresActivitesGet } from '../../../database/queries/titres-activites.js'
+import { userSuper } from '../../../database/user-super.js'
+import { matomoData } from '../../../tools/api-matomo/index.js'
 import {
   Statistiques,
   StatistiquesUtilisateurs
-} from 'camino-common/src/statistiques'
-import Utilisateurs from '../../../database/models/utilisateurs'
-import { isAdministration } from 'camino-common/src/roles'
-import { Administrations } from 'camino-common/src/static/administrations'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
-import { DEMARCHES_TYPES_IDS } from 'camino-common/src/static/demarchesTypes'
+} from 'camino-common/src/statistiques.js'
+import Utilisateurs from '../../../database/models/utilisateurs.js'
+import { isAdministration } from 'camino-common/src/roles.js'
+import { Administrations } from 'camino-common/src/static/administrations.js'
+import { TitreTypeId } from 'camino-common/src/static/titresTypes.js'
+import { DEMARCHES_TYPES_IDS } from 'camino-common/src/static/demarchesTypes.js'
 
 const ACTIVITE_ANNEE_DEBUT = 2018
 
diff --git a/packages/api/src/api/graphql/resolvers/substances.test.integration.ts b/packages/api/src/api/graphql/resolvers/substances.test.integration.ts
index a598b55b8..7ff8799b8 100644
--- a/packages/api/src/api/graphql/resolvers/substances.test.integration.ts
+++ b/packages/api/src/api/graphql/resolvers/substances.test.integration.ts
@@ -1,5 +1,5 @@
-import { graphQLCall } from '../../../../tests/_utils'
-import { dbManager } from '../../../../tests/db-manager'
+import { graphQLCall } from '../../../../tests/_utils/index.js'
+import { dbManager } from '../../../../tests/db-manager.js'
 import { expect, test, describe, afterAll, beforeAll } from 'vitest'
 beforeAll(async () => {
   await dbManager.populateDb()
diff --git a/packages/api/src/api/graphql/resolvers/substances.ts b/packages/api/src/api/graphql/resolvers/substances.ts
index c927051d0..84b0dadec 100644
--- a/packages/api/src/api/graphql/resolvers/substances.ts
+++ b/packages/api/src/api/graphql/resolvers/substances.ts
@@ -1,3 +1,3 @@
-import { SubstancesLegales } from 'camino-common/src/static/substancesLegales'
+import { SubstancesLegales } from 'camino-common/src/static/substancesLegales.js'
 
 export const substances = () => SubstancesLegales
diff --git a/packages/api/src/api/graphql/resolvers/titre-demande.ts b/packages/api/src/api/graphql/resolvers/titre-demande.ts
index 18268954f..e10188289 100644
--- a/packages/api/src/api/graphql/resolvers/titre-demande.ts
+++ b/packages/api/src/api/graphql/resolvers/titre-demande.ts
@@ -5,36 +5,36 @@ import {
   ISection,
   ITitreEntreprise,
   ISectionElement
-} from '../../../types'
+} from '../../../types.js'
 import {
   userGet,
   utilisateurTitreCreate
-} from '../../../database/queries/utilisateurs'
-import { etapeTypeGet } from '../../../database/queries/metas'
+} from '../../../database/queries/utilisateurs.js'
+import { etapeTypeGet } from '../../../database/queries/metas.js'
 import {
   titreCreate,
   titreGet,
   titresGet
-} from '../../../database/queries/titres'
-import { titreDemarcheCreate } from '../../../database/queries/titres-demarches'
-import { titreEtapeUpsert } from '../../../database/queries/titres-etapes'
-
-import titreUpdateTask from '../../../business/titre-update'
-import titreDemarcheUpdateTask from '../../../business/titre-demarche-update'
-import titreEtapeUpdateTask from '../../../business/titre-etape-update'
-import { userSuper } from '../../../database/user-super'
-import { isBureauDEtudes, isEntreprise } from 'camino-common/src/roles'
-import { linkTitres } from '../../../database/queries/titres-titres'
+} from '../../../database/queries/titres.js'
+import { titreDemarcheCreate } from '../../../database/queries/titres-demarches.js'
+import { titreEtapeUpsert } from '../../../database/queries/titres-etapes.js'
+
+import titreUpdateTask from '../../../business/titre-update.js'
+import titreDemarcheUpdateTask from '../../../business/titre-demarche-update.js'
+import titreEtapeUpdateTask from '../../../business/titre-etape-update.js'
+import { userSuper } from '../../../database/user-super.js'
+import { isBureauDEtudes, isEntreprise } from 'camino-common/src/roles.js'
+import { linkTitres } from '../../../database/queries/titres-titres.js'
 import {
   getLinkConfig,
   assertsCanCreateTitre
-} from 'camino-common/src/permissions/titres'
-import { checkTitreLinks } from '../../../business/validations/titre-links-validate'
-import { getEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { getDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes'
-import { getTitreTypeType } from 'camino-common/src/static/titresTypes'
-import { toCaminoDate } from 'camino-common/src/date'
+} from 'camino-common/src/permissions/titres.js'
+import { checkTitreLinks } from '../../../business/validations/titre-links-validate.js'
+import { getEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
+import { getDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes.js'
+import { getTitreTypeType } from 'camino-common/src/static/titresTypes.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 
 export const titreDemandeCreer = async (
   {
diff --git a/packages/api/src/api/graphql/resolvers/titres-activites.ts b/packages/api/src/api/graphql/resolvers/titres-activites.ts
index e04a8f3df..78f860074 100644
--- a/packages/api/src/api/graphql/resolvers/titres-activites.ts
+++ b/packages/api/src/api/graphql/resolvers/titres-activites.ts
@@ -1,4 +1,3 @@
-import dateFormat from 'dateformat'
 import { GraphQLResolveInfo } from 'graphql'
 
 import {
@@ -7,15 +6,15 @@ import {
   ITitreActiviteColonneId,
   IToken,
   IUtilisateur
-} from '../../../types'
+} from '../../../types.js'
 
-import { titreActiviteEmailsSend } from './_titre-activite'
+import { titreActiviteEmailsSend } from './_titre-activite.js'
 import {
   titreActiviteContenuFormat,
   titreActiviteFormat
-} from '../../_format/titres-activites'
+} from '../../_format/titres-activites.js'
 
-import { fieldsBuild } from './_fields-build'
+import { fieldsBuild } from './_fields-build.js'
 
 import {
   titreActiviteDelete,
@@ -23,21 +22,22 @@ import {
   titreActiviteUpdate as titreActiviteUpdateQuery,
   titresActivitesCount,
   titresActivitesGet
-} from '../../../database/queries/titres-activites'
+} from '../../../database/queries/titres-activites.js'
 import {
   userGet,
   utilisateursGet
-} from '../../../database/queries/utilisateurs'
-
-import { titreActiviteInputValidate } from '../../../business/validations/titre-activite-input-validate'
-import { titreActiviteDeletionValidate } from '../../../business/validations/titre-activite-deletion-validate'
-import { userSuper } from '../../../database/user-super'
-import { fichiersRepertoireDelete } from './_titre-document'
-import { documentsLier } from './documents'
-import { titreGet } from '../../../database/queries/titres'
-import { AdministrationId } from 'camino-common/src/static/administrations'
-import { onlyUnique } from 'camino-common/src/typescript-tools'
-import { getGestionnairesByTitreTypeId } from 'camino-common/src/static/administrationsTitresTypes'
+} from '../../../database/queries/utilisateurs.js'
+
+import { titreActiviteInputValidate } from '../../../business/validations/titre-activite-input-validate.js'
+import { titreActiviteDeletionValidate } from '../../../business/validations/titre-activite-deletion-validate.js'
+import { userSuper } from '../../../database/user-super.js'
+import { fichiersRepertoireDelete } from './_titre-document.js'
+import { documentsLier } from './documents.js'
+import { titreGet } from '../../../database/queries/titres.js'
+import { AdministrationId } from 'camino-common/src/static/administrations.js'
+import { onlyUnique } from 'camino-common/src/typescript-tools.js'
+import { getGestionnairesByTitreTypeId } from 'camino-common/src/static/administrationsTitresTypes.js'
+import { getCurrent } from 'camino-common/src/date.js'
 
 /**
  * Retourne une activité
@@ -230,7 +230,7 @@ const activiteDeposer = async (
     await titreActiviteUpdateQuery(activite.id, {
       statutId: 'dep',
       utilisateurId: user.id,
-      dateSaisie: dateFormat(new Date(), 'yyyy-mm-dd')
+      dateSaisie: getCurrent()
     })
     const fields = fieldsBuild(info)
     const activiteRes = await titreActiviteGet(activite.id, { fields }, user)
@@ -328,7 +328,7 @@ const activiteModifier = async (
     }
 
     activite.utilisateurId = user.id
-    activite.dateSaisie = dateFormat(new Date(), 'yyyy-mm-dd')
+    activite.dateSaisie = getCurrent()
     activite.statutId = 'enc'
 
     if (activite.contenu) {
diff --git a/packages/api/src/api/graphql/resolvers/titres-demarches.ts b/packages/api/src/api/graphql/resolvers/titres-demarches.ts
index e2f1e3c0c..bc5ac0c74 100644
--- a/packages/api/src/api/graphql/resolvers/titres-demarches.ts
+++ b/packages/api/src/api/graphql/resolvers/titres-demarches.ts
@@ -5,13 +5,13 @@ import {
   ITitreDemarche,
   ITitreEtapeFiltre,
   ITitreDemarcheColonneId
-} from '../../../types'
+} from '../../../types.js'
 
-import { fieldsBuild } from './_fields-build'
+import { fieldsBuild } from './_fields-build.js'
 
-import { titreFormat } from '../../_format/titres'
+import { titreFormat } from '../../_format/titres.js'
 
-import { titreDemarcheFormat } from '../../_format/titres-demarches'
+import { titreDemarcheFormat } from '../../_format/titres-demarches.js'
 
 import {
   titreDemarcheGet,
@@ -20,14 +20,14 @@ import {
   titreDemarcheCreate,
   titreDemarcheUpdate,
   titreDemarcheArchive
-} from '../../../database/queries/titres-demarches'
+} from '../../../database/queries/titres-demarches.js'
 
-import { titreGet } from '../../../database/queries/titres'
+import { titreGet } from '../../../database/queries/titres.js'
 
-import titreDemarcheUpdateTask from '../../../business/titre-demarche-update'
-import { titreDemarcheUpdationValidate } from '../../../business/validations/titre-demarche-updation-validate'
-import { userGet } from '../../../database/queries/utilisateurs'
-import { demarcheTypeGet } from '../../../database/queries/metas'
+import titreDemarcheUpdateTask from '../../../business/titre-demarche-update.js'
+import { titreDemarcheUpdationValidate } from '../../../business/validations/titre-demarche-updation-validate.js'
+import { userGet } from '../../../database/queries/utilisateurs.js'
+import { demarcheTypeGet } from '../../../database/queries/metas.js'
 
 const demarche = async (
   { id }: { id: string },
diff --git a/packages/api/src/api/graphql/resolvers/titres-etapes.ts b/packages/api/src/api/graphql/resolvers/titres-etapes.ts
index 26a65ea27..6063b1a30 100644
--- a/packages/api/src/api/graphql/resolvers/titres-etapes.ts
+++ b/packages/api/src/api/graphql/resolvers/titres-etapes.ts
@@ -11,71 +11,71 @@ import {
   ITitrePoint,
   IToken,
   IUtilisateur
-} from '../../../types'
+} from '../../../types.js'
 
-import { titreFormat } from '../../_format/titres'
+import { titreFormat } from '../../_format/titres.js'
 
 import {
   titreEtapeCreate,
   titreEtapeGet,
   titreEtapeUpdate,
   titreEtapeUpsert
-} from '../../../database/queries/titres-etapes'
-import { titreDemarcheGet } from '../../../database/queries/titres-demarches'
-import { titreGet } from '../../../database/queries/titres'
+} from '../../../database/queries/titres-etapes.js'
+import { titreDemarcheGet } from '../../../database/queries/titres-demarches.js'
+import { titreGet } from '../../../database/queries/titres.js'
 
-import titreEtapeUpdateTask from '../../../business/titre-etape-update'
+import titreEtapeUpdateTask from '../../../business/titre-etape-update.js'
 import {
   titreEtapeHeritageBuild,
   titreEtapePointsCalc,
   titreEtapeSdomZonesGet
-} from './_titre-etape'
-import { titreEtapeUpdationValidate } from '../../../business/validations/titre-etape-updation-validate'
+} from './_titre-etape.js'
+import { titreEtapeUpdationValidate } from '../../../business/validations/titre-etape-updation-validate.js'
 
-import { fieldsBuild } from './_fields-build'
-import { titreDemarcheUpdatedEtatValidate } from '../../../business/validations/titre-demarche-etat-validate'
+import { fieldsBuild } from './_fields-build.js'
+import { titreDemarcheUpdatedEtatValidate } from '../../../business/validations/titre-demarche-etat-validate.js'
 import {
   titreEtapeFormat,
   titreEtapeFormatFields
-} from '../../_format/titres-etapes'
+} from '../../_format/titres-etapes.js'
 import {
   etapeTypeGet,
   titreTypeDemarcheTypeEtapeTypeGet
-} from '../../../database/queries/metas'
-import { userSuper } from '../../../database/user-super'
-import { userGet } from '../../../database/queries/utilisateurs'
-import { documentsLier } from './documents'
+} from '../../../database/queries/metas.js'
+import { userSuper } from '../../../database/user-super.js'
+import { userGet } from '../../../database/queries/utilisateurs.js'
+import { documentsLier } from './documents.js'
 import {
   documentsTypesFormat,
   etapeTypeSectionsFormat
-} from '../../_format/etapes-types'
+} from '../../_format/etapes-types.js'
 import {
   contenuElementFilesCreate,
   contenuElementFilesDelete,
   contenuFilesPathGet,
   sectionsContenuAndFilesGet
-} from '../../../business/utils/contenu-element-file-process'
+} from '../../../business/utils/contenu-element-file-process.js'
 import {
   documentCreate,
   documentsGet
-} from '../../../database/queries/documents'
+} from '../../../database/queries/documents.js'
 import {
   titreEtapeAdministrationsEmailsSend,
   titreEtapeUtilisateursEmailsSend
-} from './_titre-etape-email'
-import { objectClone } from '../../../tools'
-import { geojsonFeatureMultiPolygon } from '../../../tools/geojson'
-import { idGenerate } from '../../../database/models/_format/id-create'
-import fileRename from '../../../tools/file-rename'
-import { documentFilePathFind } from '../../../tools/documents/document-path-find'
-import { isBureauDEtudes, isEntreprise } from 'camino-common/src/roles'
-import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts'
-import { isEtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { Feature } from '@turf/helpers'
-import { isNotNullNorUndefined } from 'camino-common/src/typescript-tools'
-import { getDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes'
-import { getTitreTypeType } from 'camino-common/src/static/titresTypes'
-import { CaminoDate, toCaminoDate } from 'camino-common/src/date'
+} from './_titre-etape-email.js'
+import { objectClone } from '../../../tools/index.js'
+import { geojsonFeatureMultiPolygon } from '../../../tools/geojson.js'
+import { idGenerate } from '../../../database/models/_format/id-create.js'
+import fileRename from '../../../tools/file-rename.js'
+import { documentFilePathFind } from '../../../tools/documents/document-path-find.js'
+import { isBureauDEtudes, isEntreprise } from 'camino-common/src/roles.js'
+import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts.js'
+import { isEtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
+import { Feature } from 'geojson'
+import { isNotNullNorUndefined } from 'camino-common/src/typescript-tools.js'
+import { getDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes.js'
+import { getTitreTypeType } from 'camino-common/src/static/titresTypes.js'
+import { CaminoDate, toCaminoDate } from 'camino-common/src/date.js'
 
 const statutIdAndDateGet = (
   etape: ITitreEtape,
diff --git a/packages/api/src/api/graphql/resolvers/titres.ts b/packages/api/src/api/graphql/resolvers/titres.ts
index ca02acfd9..3435b35e8 100644
--- a/packages/api/src/api/graphql/resolvers/titres.ts
+++ b/packages/api/src/api/graphql/resolvers/titres.ts
@@ -1,10 +1,10 @@
 import { GraphQLResolveInfo } from 'graphql'
 
-import { ITitre, ITitreColonneId, IToken } from '../../../types'
+import { ITitre, ITitreColonneId, IToken } from '../../../types.js'
 
-import { titreFormat, titresFormat } from '../../_format/titres'
+import { titreFormat, titresFormat } from '../../_format/titres.js'
 
-import { fieldsBuild } from './_fields-build'
+import { fieldsBuild } from './_fields-build.js'
 
 import {
   titreArchive,
@@ -13,11 +13,11 @@ import {
   titresCount,
   titresGet,
   titreUpsert
-} from '../../../database/queries/titres'
-import { userGet } from '../../../database/queries/utilisateurs'
+} from '../../../database/queries/titres.js'
+import { userGet } from '../../../database/queries/utilisateurs.js'
 
-import titreUpdateTask from '../../../business/titre-update'
-import { assertsCanCreateTitre } from 'camino-common/src/permissions/titres'
+import titreUpdateTask from '../../../business/titre-update.js'
+import { assertsCanCreateTitre } from 'camino-common/src/permissions/titres.js'
 
 const titre = async (
   { id }: { id: string },
diff --git a/packages/api/src/api/graphql/resolvers/utilisateurs-titres.ts b/packages/api/src/api/graphql/resolvers/utilisateurs-titres.ts
index b14ac169f..fce07d60c 100644
--- a/packages/api/src/api/graphql/resolvers/utilisateurs-titres.ts
+++ b/packages/api/src/api/graphql/resolvers/utilisateurs-titres.ts
@@ -1,12 +1,12 @@
-import { IToken } from '../../../types'
+import { IToken } from '../../../types.js'
 
 import {
   userGet,
   utilisateurTitreCreate,
   utilisateurTitreDelete
-} from '../../../database/queries/utilisateurs'
+} from '../../../database/queries/utilisateurs.js'
 
-import { titreGet } from '../../../database/queries/titres'
+import { titreGet } from '../../../database/queries/titres.js'
 
 const utilisateurTitreAbonner = async (
   { titreId, abonner }: { titreId: string; abonner: boolean },
diff --git a/packages/api/src/api/graphql/resolvers/utilisateurs.ts b/packages/api/src/api/graphql/resolvers/utilisateurs.ts
index 0e34d7541..6784bba92 100644
--- a/packages/api/src/api/graphql/resolvers/utilisateurs.ts
+++ b/packages/api/src/api/graphql/resolvers/utilisateurs.ts
@@ -9,12 +9,12 @@ import {
   IUtilisateur,
   IUtilisateurCreation,
   IUtilisateursColonneId
-} from '../../../types'
+} from '../../../types.js'
 
-import { login as cerbereLogin } from '../../../tools/api-cerbere/index'
+import { login as cerbereLogin } from '../../../tools/api-cerbere/index.js'
 
-import { emailsSend } from '../../../tools/api-mailjet/emails'
-import { fieldsBuild } from './_fields-build'
+import { emailsSend } from '../../../tools/api-mailjet/emails.js'
+import { fieldsBuild } from './_fields-build.js'
 
 import {
   userGet,
@@ -25,15 +25,14 @@ import {
   utilisateurUpsert,
   userByEmailGet,
   utilisateursCount
-} from '../../../database/queries/utilisateurs'
-
-import { utilisateurUpdationValidate } from '../../../business/validations/utilisateur-updation-validate'
-import { emailCheck } from '../../../tools/email-check'
-import { utilisateurEditionCheck } from '../../_permissions/utilisateur'
-import { userFormat } from '../../_format/users'
-import { newsletterSubscriberUpdate } from '../../../tools/api-mailjet/newsletter'
-import { userSuper } from '../../../database/user-super'
-import dateFormat from 'dateformat'
+} from '../../../database/queries/utilisateurs.js'
+
+import { utilisateurUpdationValidate } from '../../../business/validations/utilisateur-updation-validate.js'
+import { emailCheck } from '../../../tools/email-check.js'
+import { utilisateurEditionCheck } from '../../_permissions/utilisateur.js'
+import { userFormat } from '../../_format/users.js'
+import { newsletterSubscriberUpdate } from '../../../tools/api-mailjet/newsletter.js'
+import { userSuper } from '../../../database/user-super.js'
 import {
   isSuper,
   Role,
@@ -41,7 +40,8 @@ import {
   isAdministration,
   isAdministrationAdmin,
   isBureauDEtudes
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
+import { getCurrent } from 'camino-common/src/date.js'
 
 const TOKEN_TTL = '5m'
 
@@ -348,7 +348,7 @@ const utilisateurCreer = async (
       {
         id: await userIdGenerate(),
         ...utilisateur,
-        dateCreation: dateFormat(new Date(), 'dd-mm-yyyy')
+        dateCreation: getCurrent()
       } as IUtilisateur,
       { fields: {} }
     )
diff --git a/packages/api/src/api/graphql/schemas.ts b/packages/api/src/api/graphql/schemas.ts
index 73b9c2935..7d0178f03 100644
--- a/packages/api/src/api/graphql/schemas.ts
+++ b/packages/api/src/api/graphql/schemas.ts
@@ -1,7 +1,8 @@
 import { loadSchemaSync } from '@graphql-tools/load'
 import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader'
-import { join } from 'path'
-
+import path, { join } from 'node:path'
+import { fileURLToPath } from 'url'
+const __dirname = path.dirname(fileURLToPath(import.meta.url))
 const schema = loadSchemaSync(join(__dirname, './schemas/index.graphql'), {
   loaders: [new GraphQLFileLoader()]
 })
diff --git a/packages/api/src/api/graphql/titres-demarches.test.integration.ts b/packages/api/src/api/graphql/titres-demarches.test.integration.ts
index cc4740e06..8f284ca21 100644
--- a/packages/api/src/api/graphql/titres-demarches.test.integration.ts
+++ b/packages/api/src/api/graphql/titres-demarches.test.integration.ts
@@ -1,10 +1,10 @@
-import { dbManager } from '../../../tests/db-manager'
-import { graphQLCall, queryImport } from '../../../tests/_utils/index'
-import { titreCreate } from '../../database/queries/titres'
-import { titreEtapeUpsert } from '../../database/queries/titres-etapes'
-import { userSuper } from '../../database/user-super'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
-import { toCaminoDate } from 'camino-common/src/date'
+import { dbManager } from '../../../tests/db-manager.js'
+import { graphQLCall, queryImport } from '../../../tests/_utils/index.js'
+import { titreCreate } from '../../database/queries/titres.js'
+import { titreEtapeUpsert } from '../../database/queries/titres-etapes.js'
+import { userSuper } from '../../database/user-super.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 
 import {
   afterAll,
diff --git a/packages/api/src/api/graphql/titres-etapes-creer.test.integration.ts b/packages/api/src/api/graphql/titres-etapes-creer.test.integration.ts
index 85ab2342f..190d50b92 100644
--- a/packages/api/src/api/graphql/titres-etapes-creer.test.integration.ts
+++ b/packages/api/src/api/graphql/titres-etapes-creer.test.integration.ts
@@ -1,14 +1,14 @@
-import { dbManager } from '../../../tests/db-manager'
-import { graphQLCall, queryImport } from '../../../tests/_utils/index'
-import { titreDemarcheCreate } from '../../database/queries/titres-demarches'
-import { titreCreate } from '../../database/queries/titres'
-import { titreEtapePropsIds } from '../../business/utils/titre-etape-heritage-props-find'
-import Titres from '../../database/models/titres'
-import TitresTypesDemarchesTypesEtapesTypes from '../../database/models/titres-types--demarches-types-etapes-types'
-import TitresTypesDemarchesTypesEtapesTypesJustificatifsTypes from '../../database/models/titres-types--demarches-types-etapes-types-justificatifs-types'
-import { documentCreate } from '../../database/queries/documents'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
-import { Role } from 'camino-common/src/roles'
+import { dbManager } from '../../../tests/db-manager.js'
+import { graphQLCall, queryImport } from '../../../tests/_utils/index.js'
+import { titreDemarcheCreate } from '../../database/queries/titres-demarches.js'
+import { titreCreate } from '../../database/queries/titres.js'
+import { titreEtapePropsIds } from '../../business/utils/titre-etape-heritage-props-find.js'
+import Titres from '../../database/models/titres.js'
+import TitresTypesDemarchesTypesEtapesTypes from '../../database/models/titres-types--demarches-types-etapes-types.js'
+import TitresTypesDemarchesTypesEtapesTypesJustificatifsTypes from '../../database/models/titres-types--demarches-types-etapes-types-justificatifs-types.js'
+import { documentCreate } from '../../database/queries/documents.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import { Role } from 'camino-common/src/roles.js'
 
 import {
   afterAll,
diff --git a/packages/api/src/api/graphql/titres-etapes-modifier.test.integration.ts b/packages/api/src/api/graphql/titres-etapes-modifier.test.integration.ts
index 97de902b4..53d654122 100644
--- a/packages/api/src/api/graphql/titres-etapes-modifier.test.integration.ts
+++ b/packages/api/src/api/graphql/titres-etapes-modifier.test.integration.ts
@@ -1,14 +1,14 @@
-import { dbManager } from '../../../tests/db-manager'
-import { graphQLCall, queryImport } from '../../../tests/_utils/index'
-import { titreDemarcheCreate } from '../../database/queries/titres-demarches'
-import { titreCreate } from '../../database/queries/titres'
-import { titreEtapeCreate } from '../../database/queries/titres-etapes'
-import { titreEtapePropsIds } from '../../business/utils/titre-etape-heritage-props-find'
-import Titres from '../../database/models/titres'
-import { userSuper } from '../../database/user-super'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
-import { Role } from 'camino-common/src/roles'
-import { toCaminoDate } from 'camino-common/src/date'
+import { dbManager } from '../../../tests/db-manager.js'
+import { graphQLCall, queryImport } from '../../../tests/_utils/index.js'
+import { titreDemarcheCreate } from '../../database/queries/titres-demarches.js'
+import { titreCreate } from '../../database/queries/titres.js'
+import { titreEtapeCreate } from '../../database/queries/titres-etapes.js'
+import { titreEtapePropsIds } from '../../business/utils/titre-etape-heritage-props-find.js'
+import Titres from '../../database/models/titres.js'
+import { userSuper } from '../../database/user-super.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import { Role } from 'camino-common/src/roles.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 
 import {
   afterAll,
diff --git a/packages/api/src/api/graphql/titres.test.integration.ts b/packages/api/src/api/graphql/titres.test.integration.ts
index e411761a9..80cc5a286 100644
--- a/packages/api/src/api/graphql/titres.test.integration.ts
+++ b/packages/api/src/api/graphql/titres.test.integration.ts
@@ -1,10 +1,10 @@
-import { dbManager } from '../../../tests/db-manager'
-import { graphQLCall, queryImport } from '../../../tests/_utils/index'
-import { titreCreate } from '../../database/queries/titres'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
-import { ITitre } from '../../types'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+import { dbManager } from '../../../tests/db-manager.js'
+import { graphQLCall, queryImport } from '../../../tests/_utils/index.js'
+import { titreCreate } from '../../database/queries/titres.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import { ITitre } from '../../types.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import {
   vi,
   afterEach,
diff --git a/packages/api/src/api/graphql/token.test.integration.ts b/packages/api/src/api/graphql/token.test.integration.ts
index bf711eefe..aee77c449 100644
--- a/packages/api/src/api/graphql/token.test.integration.ts
+++ b/packages/api/src/api/graphql/token.test.integration.ts
@@ -1,6 +1,6 @@
-import { dbManager } from '../../../tests/db-manager'
-import { graphQLCall, queryImport } from '../../../tests/_utils/index'
-import Utilisateurs from '../../database/models/utilisateurs'
+import { dbManager } from '../../../tests/db-manager.js'
+import { graphQLCall, queryImport } from '../../../tests/_utils/index.js'
+import Utilisateurs from '../../database/models/utilisateurs.js'
 
 import { afterAll, beforeAll, describe, test, expect, vi } from 'vitest'
 
diff --git a/packages/api/src/api/graphql/utilisateurs.test.integration.ts b/packages/api/src/api/graphql/utilisateurs.test.integration.ts
index 42a514276..761579419 100644
--- a/packages/api/src/api/graphql/utilisateurs.test.integration.ts
+++ b/packages/api/src/api/graphql/utilisateurs.test.integration.ts
@@ -1,14 +1,14 @@
-import { app } from '../../../tests/app'
+import { app } from '../../../tests/app.js'
 import {
   graphQLCall,
   queryImport,
   tokenCreate
-} from '../../../tests/_utils/index'
-import { userAdd } from '../../knex/user-add'
+} from '../../../tests/_utils/index.js'
+import { userAdd } from '../../knex/user-add.js'
 import request from 'supertest'
 import jwt from 'jsonwebtoken'
-import { dbManager } from '../../../tests/db-manager'
-import { Administrations } from 'camino-common/src/static/administrations'
+import { dbManager } from '../../../tests/db-manager.js'
+import { Administrations } from 'camino-common/src/static/administrations.js'
 import { Knex } from 'knex'
 import {
   expect,
diff --git a/packages/api/src/api/rest/_convert.ts b/packages/api/src/api/rest/_convert.ts
index 52bd5e5c8..9d704c175 100644
--- a/packages/api/src/api/rest/_convert.ts
+++ b/packages/api/src/api/rest/_convert.ts
@@ -1,6 +1,6 @@
 import xlsx from 'xlsx'
 
-import { IFormat, Index } from '../../types'
+import { IFormat, Index } from '../../types.js'
 
 const tableConvert = (
   section:
diff --git a/packages/api/src/api/rest/entreprises.test.integration.ts b/packages/api/src/api/rest/entreprises.test.integration.ts
index 73c4d216f..919d9532d 100644
--- a/packages/api/src/api/rest/entreprises.test.integration.ts
+++ b/packages/api/src/api/rest/entreprises.test.integration.ts
@@ -1,7 +1,7 @@
-import { newEntrepriseId } from 'camino-common/src/entreprise'
-import { dbManager } from '../../../tests/db-manager'
-import { restCall } from '../../../tests/_utils'
-import { entrepriseUpsert } from '../../database/queries/entreprises'
+import { newEntrepriseId } from 'camino-common/src/entreprise.js'
+import { dbManager } from '../../../tests/db-manager.js'
+import { restCall } from '../../../tests/_utils/index.js'
+import { entrepriseUpsert } from '../../database/queries/entreprises.js'
 import { afterAll, beforeAll, describe, test, expect } from 'vitest'
 
 beforeAll(async () => {
diff --git a/packages/api/src/api/rest/entreprises.test.ts b/packages/api/src/api/rest/entreprises.test.ts
index 59bd469eb..332e00fd7 100644
--- a/packages/api/src/api/rest/entreprises.test.ts
+++ b/packages/api/src/api/rest/entreprises.test.ts
@@ -1,8 +1,8 @@
-import { bodyBuilder, responseExtractor } from './entreprises'
-import { DEPARTEMENT_IDS } from 'camino-common/src/static/departement'
-import Titres from '../../database/models/titres'
+import { bodyBuilder, responseExtractor } from './entreprises.js'
+import { DEPARTEMENT_IDS } from 'camino-common/src/static/departement.js'
+import Titres from '../../database/models/titres.js'
 import { describe, expect, test } from 'vitest'
-import { newEntrepriseId } from 'camino-common/src/entreprise'
+import { newEntrepriseId } from 'camino-common/src/entreprise.js'
 
 const entreprise = {
   id: newEntrepriseId('entrepriseId'),
diff --git a/packages/api/src/api/rest/entreprises.ts b/packages/api/src/api/rest/entreprises.ts
index e8be5d9a1..2192e8508 100644
--- a/packages/api/src/api/rest/entreprises.ts
+++ b/packages/api/src/api/rest/entreprises.ts
@@ -1,14 +1,14 @@
-import { userGet } from '../../database/queries/utilisateurs'
+import { userGet } from '../../database/queries/utilisateurs.js'
 
 import express from 'express'
-import { ICommune, IContenuValeur, IEntreprise, IUser } from '../../types'
+import { ICommune, IContenuValeur, IEntreprise, IUser } from '../../types.js'
 import {
   Fiscalite,
   FiscaliteFrance,
   FiscaliteGuyane,
   fiscaliteVisible,
   isFiscaliteGuyane
-} from 'camino-common/src/fiscalite'
+} from 'camino-common/src/fiscalite.js'
 import { constants } from 'http2'
 import {
   apiOpenfiscaCalculate,
@@ -18,21 +18,21 @@ import {
   redevanceDepartementale,
   substanceFiscaleToInput,
   openfiscaSubstanceFiscaleUnite
-} from '../../tools/api-openfisca'
-import { titresGet } from '../../database/queries/titres'
-import { titresActivitesGet } from '../../database/queries/titres-activites'
-import { entrepriseGet } from '../../database/queries/entreprises'
-import TitresActivites from '../../database/models/titres-activites'
-import Titres from '../../database/models/titres'
-import { CustomResponse } from './express-type'
+} from '../../tools/api-openfisca/index.js'
+import { titresGet } from '../../database/queries/titres.js'
+import { titresActivitesGet } from '../../database/queries/titres-activites.js'
+import { entrepriseGet } from '../../database/queries/entreprises.js'
+import TitresActivites from '../../database/models/titres-activites.js'
+import Titres from '../../database/models/titres.js'
+import { CustomResponse } from './express-type.js'
 import {
   SubstanceFiscale,
   substancesFiscalesBySubstanceLegale
-} from 'camino-common/src/static/substancesFiscales'
-import { Departements } from 'camino-common/src/static/departement'
-import { isNotNullNorUndefined } from 'camino-common/src/typescript-tools'
-import { Regions } from 'camino-common/src/static/region'
-import { CaminoAnnee, isAnnee } from 'camino-common/src/date'
+} from 'camino-common/src/static/substancesFiscales.js'
+import { Departements } from 'camino-common/src/static/departement.js'
+import { isNotNullNorUndefined } from 'camino-common/src/typescript-tools.js'
+import { Regions } from 'camino-common/src/static/region.js'
+import { CaminoAnnee, isAnnee } from 'camino-common/src/date.js'
 
 const conversion = (
   substanceFiscale: SubstanceFiscale,
diff --git a/packages/api/src/api/rest/fichiers.ts b/packages/api/src/api/rest/fichiers.ts
index 4872f7aa6..d8c8d9e8c 100644
--- a/packages/api/src/api/rest/fichiers.ts
+++ b/packages/api/src/api/rest/fichiers.ts
@@ -4,13 +4,13 @@ import {
   IDocument,
   IDocumentRepertoire,
   IFormat
-} from '../../types'
+} from '../../types.js'
 
-import { documentGet } from '../../database/queries/documents'
-import { userGet } from '../../database/queries/utilisateurs'
-import { titreEtapeGet } from '../../database/queries/titres-etapes'
-import { documentRepertoireFind } from '../../tools/documents/document-repertoire-find'
-import { documentFilePathFind } from '../../tools/documents/document-path-find'
+import { documentGet } from '../../database/queries/documents.js'
+import { userGet } from '../../database/queries/utilisateurs.js'
+import { titreEtapeGet } from '../../database/queries/titres-etapes.js'
+import { documentRepertoireFind } from '../../tools/documents/document-repertoire-find.js'
+import { documentFilePathFind } from '../../tools/documents/document-path-find.js'
 
 import JSZip from 'jszip'
 import { statSync, readFileSync } from 'fs'
diff --git a/packages/api/src/api/rest/format/entreprises.ts b/packages/api/src/api/rest/format/entreprises.ts
index 7eee41723..0b966e08d 100644
--- a/packages/api/src/api/rest/format/entreprises.ts
+++ b/packages/api/src/api/rest/format/entreprises.ts
@@ -1,4 +1,4 @@
-import { IEntreprise } from '../../../types'
+import { IEntreprise } from '../../../types.js'
 
 const entreprisesFormatTable = (entreprises: IEntreprise[]) =>
   entreprises.map(entreprise => {
diff --git a/packages/api/src/api/rest/format/titres-activites.ts b/packages/api/src/api/rest/format/titres-activites.ts
index 5fb8d20c5..c913f237c 100644
--- a/packages/api/src/api/rest/format/titres-activites.ts
+++ b/packages/api/src/api/rest/format/titres-activites.ts
@@ -4,13 +4,13 @@ import {
   Index,
   ISection,
   ITitreActivite
-} from '../../../types'
+} from '../../../types.js'
 import {
   isSubstanceFiscale,
   SubstancesFiscale
-} from 'camino-common/src/static/substancesFiscales'
-import { UniteId, Unites } from 'camino-common/src/static/unites'
-import { getPeriode } from 'camino-common/src/static/frequence'
+} from 'camino-common/src/static/substancesFiscales.js'
+import { UniteId, Unites } from 'camino-common/src/static/unites.js'
+import { getPeriode } from 'camino-common/src/static/frequence.js'
 
 const titreActiviteContenuFormat = (contenu: IContenu, sections: ISection[]) =>
   sections.reduce((resSections: Index<IContenuValeur>, section) => {
diff --git a/packages/api/src/api/rest/format/titres-demarches.ts b/packages/api/src/api/rest/format/titres-demarches.ts
index 87f0c0e54..406c853e3 100644
--- a/packages/api/src/api/rest/format/titres-demarches.ts
+++ b/packages/api/src/api/rest/format/titres-demarches.ts
@@ -1,11 +1,11 @@
-import { ITitreDemarche, Index } from '../../../types'
+import { ITitreDemarche, Index } from '../../../types.js'
 
-import { titreEtapesSortDescByOrdre } from '../../../business/utils/titre-etapes-sort'
-import { getEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts'
-import { DemarchesStatuts } from 'camino-common/src/static/demarchesStatuts'
-import { isNotNullNorUndefined } from 'camino-common/src/typescript-tools'
-import { TitresStatuts } from 'camino-common/src/static/titresStatuts'
-import { ReferencesTypes } from 'camino-common/src/static/referencesTypes'
+import { titreEtapesSortDescByOrdre } from '../../../business/utils/titre-etapes-sort.js'
+import { getEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts.js'
+import { DemarchesStatuts } from 'camino-common/src/static/demarchesStatuts.js'
+import { isNotNullNorUndefined } from 'camino-common/src/typescript-tools.js'
+import { TitresStatuts } from 'camino-common/src/static/titresStatuts.js'
+import { ReferencesTypes } from 'camino-common/src/static/referencesTypes.js'
 
 const etapesDatesStatutsBuild = (titreDemarche: ITitreDemarche) => {
   if (!titreDemarche.etapes?.length) return null
diff --git a/packages/api/src/api/rest/format/titres.test.ts b/packages/api/src/api/rest/format/titres.test.ts
index 883bc0454..16cd858ca 100644
--- a/packages/api/src/api/rest/format/titres.test.ts
+++ b/packages/api/src/api/rest/format/titres.test.ts
@@ -1,5 +1,5 @@
-import { titreTerritoiresFind } from './titres'
-import { DEPARTEMENT_IDS } from 'camino-common/src/static/departement'
+import { titreTerritoiresFind } from './titres.js'
+import { DEPARTEMENT_IDS } from 'camino-common/src/static/departement.js'
 import { describe, expect, test } from 'vitest'
 describe('titreTerritoiresFind', () => {
   test('titreTerritoiresFind uniquement des communes', () => {
diff --git a/packages/api/src/api/rest/format/titres.ts b/packages/api/src/api/rest/format/titres.ts
index bf4a40e32..d3f9a1fc0 100644
--- a/packages/api/src/api/rest/format/titres.ts
+++ b/packages/api/src/api/rest/format/titres.ts
@@ -6,22 +6,22 @@ import {
   IContenuValeur,
   IContenu,
   ICommune
-} from '../../../types'
-import { Departements } from 'camino-common/src/static/departement'
-import { Regions } from 'camino-common/src/static/region'
-import { SubstancesLegale } from 'camino-common/src/static/substancesLegales'
+} from '../../../types.js'
+import { Departements } from 'camino-common/src/static/departement.js'
+import { Regions } from 'camino-common/src/static/region.js'
+import { SubstancesLegale } from 'camino-common/src/static/substancesLegales.js'
 import {
   isNotNullNorUndefined,
   onlyUnique
-} from 'camino-common/src/typescript-tools'
-import { TitresStatuts } from 'camino-common/src/static/titresStatuts'
-import { ReferencesTypes } from 'camino-common/src/static/referencesTypes'
+} from 'camino-common/src/typescript-tools.js'
+import { TitresStatuts } from 'camino-common/src/static/titresStatuts.js'
+import { ReferencesTypes } from 'camino-common/src/static/referencesTypes.js'
 import {
   getDepartementsBySecteurs,
   getFacadesComputed,
   SecteursMaritimes
-} from 'camino-common/src/static/facades'
-import { Administrations } from 'camino-common/src/static/administrations'
+} from 'camino-common/src/static/facades.js'
+import { Administrations } from 'camino-common/src/static/administrations.js'
 
 const getFacadesMaritimeCell = (
   secteursMaritime: SecteursMaritimes[],
diff --git a/packages/api/src/api/rest/format/utilisateurs.ts b/packages/api/src/api/rest/format/utilisateurs.ts
index 6b93e174d..f96567fbd 100644
--- a/packages/api/src/api/rest/format/utilisateurs.ts
+++ b/packages/api/src/api/rest/format/utilisateurs.ts
@@ -1,6 +1,6 @@
-import { IUtilisateur } from '../../../types'
-import { isAdministration } from 'camino-common/src/roles'
-import { Administrations } from 'camino-common/src/static/administrations'
+import { IUtilisateur } from '../../../types.js'
+import { isAdministration } from 'camino-common/src/roles.js'
+import { Administrations } from 'camino-common/src/static/administrations.js'
 
 export const utilisateursFormatTable = (utilisateurs: IUtilisateur[]) =>
   utilisateurs.map(utilisateur => {
diff --git a/packages/api/src/api/rest/index.ts b/packages/api/src/api/rest/index.ts
index 52d44238f..9a5a6ac40 100644
--- a/packages/api/src/api/rest/index.ts
+++ b/packages/api/src/api/rest/index.ts
@@ -3,33 +3,33 @@ import {
   ITitreColonneId,
   ITitreDemarcheColonneId,
   ITitreActiviteColonneId
-} from '../../types'
+} from '../../types.js'
 
-import { titreGet, titresGet } from '../../database/queries/titres'
-import { titresDemarchesGet } from '../../database/queries/titres-demarches'
-import { titresActivitesGet } from '../../database/queries/titres-activites'
-import { entreprisesGet } from '../../database/queries/entreprises'
-import { userGet } from '../../database/queries/utilisateurs'
+import { titreGet, titresGet } from '../../database/queries/titres.js'
+import { titresDemarchesGet } from '../../database/queries/titres-demarches.js'
+import { titresActivitesGet } from '../../database/queries/titres-activites.js'
+import { entreprisesGet } from '../../database/queries/entreprises.js'
+import { userGet } from '../../database/queries/utilisateurs.js'
 
-import { titreFormat, titresFormat } from '../_format/titres'
-import { titreDemarcheFormat } from '../_format/titres-demarches'
-import { titreActiviteFormat } from '../_format/titres-activites'
-import { entrepriseFormat } from '../_format/entreprises'
+import { titreFormat, titresFormat } from '../_format/titres.js'
+import { titreDemarcheFormat } from '../_format/titres-demarches.js'
+import { titreActiviteFormat } from '../_format/titres-activites.js'
+import { entrepriseFormat } from '../_format/entreprises.js'
 
-import { tableConvert } from './_convert'
-import { fileNameCreate } from '../../tools/file-name-create'
+import { tableConvert } from './_convert.js'
+import { fileNameCreate } from '../../tools/file-name-create.js'
 
 import {
   titresGeojsonFormat,
   titreGeojsonFormat,
   titresTableFormat
-} from './format/titres'
-import { titresDemarchesFormatTable } from './format/titres-demarches'
-import { titresActivitesFormatTable } from './format/titres-activites'
-import { entreprisesFormatTable } from './format/entreprises'
+} from './format/titres.js'
+import { titresDemarchesFormatTable } from './format/titres-demarches.js'
+import { titresActivitesFormatTable } from './format/titres-activites.js'
+import { entreprisesFormatTable } from './format/entreprises.js'
 
-import { matomo } from '../../tools/matomo'
-import { stringSplit } from '../../database/queries/_utils'
+import { matomo } from '../../tools/matomo.js'
+import { stringSplit } from '../../database/queries/_utils.js'
 
 const formatCheck = (formats: string[], format: string) => {
   if (!formats.includes(format)) {
diff --git a/packages/api/src/api/rest/statistiques/dgtm.ts b/packages/api/src/api/rest/statistiques/dgtm.ts
index a140836ba..15e3096e7 100644
--- a/packages/api/src/api/rest/statistiques/dgtm.ts
+++ b/packages/api/src/api/rest/statistiques/dgtm.ts
@@ -1,22 +1,25 @@
-import { AdministrationId } from 'camino-common/src/static/administrations'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
-import { getTitreTypeIdsByAdministration } from 'camino-common/src/static/administrationsTitresTypes'
+import { AdministrationId } from 'camino-common/src/static/administrations.js'
+import { TitreTypeId } from 'camino-common/src/static/titresTypes.js'
+import { getTitreTypeIdsByAdministration } from 'camino-common/src/static/administrationsTitresTypes.js'
 import {
   StatistiquesDGTM,
   TitreTypeIdDelai,
   titreTypeIdDelais
-} from 'camino-common/src/statistiques'
+} from 'camino-common/src/statistiques.js'
 import {
   CaminoAnnee,
   CaminoDate,
   getAnnee,
   daysBetween
-} from 'camino-common/src/date'
-import { knex } from '../../../knex'
-import { SDOMZoneId, SDOMZoneIds } from 'camino-common/src/static/sdom'
-import { ETAPES_TYPES, EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { SUBSTANCES_FISCALES_IDS } from 'camino-common/src/static/substancesFiscales'
-import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts'
+} from 'camino-common/src/date.js'
+import { knex } from '../../../knex.js'
+import { SDOMZoneId, SDOMZoneIds } from 'camino-common/src/static/sdom.js'
+import {
+  ETAPES_TYPES,
+  EtapeTypeId
+} from 'camino-common/src/static/etapesTypes.js'
+import { SUBSTANCES_FISCALES_IDS } from 'camino-common/src/static/substancesFiscales.js'
+import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts.js'
 
 const anneeDepartStats = 2015
 
diff --git a/packages/api/src/api/rest/statistiques/evolution-titres.ts b/packages/api/src/api/rest/statistiques/evolution-titres.ts
index a5662650e..b7f54b06e 100644
--- a/packages/api/src/api/rest/statistiques/evolution-titres.ts
+++ b/packages/api/src/api/rest/statistiques/evolution-titres.ts
@@ -1,14 +1,14 @@
-import { CaminoAnnee, valideAnnee } from 'camino-common/src/date'
-import { DemarchesStatutsIds } from 'camino-common/src/static/demarchesStatuts'
-import { DEMARCHES_TYPES_IDS } from 'camino-common/src/static/demarchesTypes'
-import { DepartementId } from 'camino-common/src/static/departement'
-import { DOMAINES_IDS } from 'camino-common/src/static/domaines'
-import { ETAPES_STATUTS } from 'camino-common/src/static/etapesStatuts'
-import { ETAPES_TYPES } from 'camino-common/src/static/etapesTypes'
-import { toTitreTypeId } from 'camino-common/src/static/titresTypes'
-import { TitreTypeTypeId } from 'camino-common/src/static/titresTypesTypes'
-import { EvolutionTitres } from 'camino-common/src/statistiques'
-import { knex } from '../../../knex'
+import { CaminoAnnee, toCaminoAnnee } from 'camino-common/src/date.js'
+import { DemarchesStatutsIds } from 'camino-common/src/static/demarchesStatuts.js'
+import { DEMARCHES_TYPES_IDS } from 'camino-common/src/static/demarchesTypes.js'
+import { DepartementId } from 'camino-common/src/static/departement.js'
+import { DOMAINES_IDS } from 'camino-common/src/static/domaines.js'
+import { ETAPES_STATUTS } from 'camino-common/src/static/etapesStatuts.js'
+import { ETAPES_TYPES } from 'camino-common/src/static/etapesTypes.js'
+import { toTitreTypeId } from 'camino-common/src/static/titresTypes.js'
+import { TitreTypeTypeId } from 'camino-common/src/static/titresTypesTypes.js'
+import { EvolutionTitres } from 'camino-common/src/statistiques.js'
+import { knex } from '../../../knex.js'
 
 export const evolutionTitres = async (
   titreTypeTypeId: TitreTypeTypeId,
@@ -18,7 +18,7 @@ export const evolutionTitres = async (
   let currentYear = new Date().getFullYear()
   const annee: Record<CaminoAnnee, number> = {}
   while (currentYear >= anneeDepart) {
-    annee[valideAnnee(currentYear)] = 0
+    annee[toCaminoAnnee(currentYear)] = 0
     currentYear--
   }
   const demarcheOctroiTypeIds = [
diff --git a/packages/api/src/api/rest/statistiques/guyane.ts b/packages/api/src/api/rest/statistiques/guyane.ts
index 6334f39a9..821facf9a 100644
--- a/packages/api/src/api/rest/statistiques/guyane.ts
+++ b/packages/api/src/api/rest/statistiques/guyane.ts
@@ -1,7 +1,7 @@
-import { DEPARTEMENT_IDS } from 'camino-common/src/static/departement'
-import { TITRES_TYPES_TYPES_IDS } from 'camino-common/src/static/titresTypesTypes'
-import { StatistiquesGuyaneRest } from 'camino-common/src/statistiques'
-import { evolutionTitres } from './evolution-titres'
+import { DEPARTEMENT_IDS } from 'camino-common/src/static/departement.js'
+import { TITRES_TYPES_TYPES_IDS } from 'camino-common/src/static/titresTypesTypes.js'
+import { StatistiquesGuyaneRest } from 'camino-common/src/statistiques.js'
+import { evolutionTitres } from './evolution-titres.js'
 
 export const getGuyaneStatsInside =
   async (): Promise<StatistiquesGuyaneRest> => {
diff --git a/packages/api/src/api/rest/statistiques/index.ts b/packages/api/src/api/rest/statistiques/index.ts
index 5a4678870..e15e041d6 100644
--- a/packages/api/src/api/rest/statistiques/index.ts
+++ b/packages/api/src/api/rest/statistiques/index.ts
@@ -1,18 +1,18 @@
-import { CustomResponse } from '../express-type'
+import { CustomResponse } from '../express-type.js'
 import express from 'express'
 import {
   StatistiquesMinerauxMetauxMetropole,
   StatistiquesDGTM,
   StatistiquesGuyaneRest
-} from 'camino-common/src/statistiques'
-import { getMinerauxMetauxMetropolesStatsInside } from './metaux-metropole'
+} from 'camino-common/src/statistiques.js'
+import { getMinerauxMetauxMetropolesStatsInside } from './metaux-metropole.js'
 
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
-import { userGet } from '../../../database/queries/utilisateurs'
-import { IUser } from '../../../types'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import { userGet } from '../../../database/queries/utilisateurs.js'
+import { IUser } from '../../../types.js'
 import { constants } from 'http2'
-import { getDGTMStatsInside } from './dgtm'
-import { getGuyaneStatsInside } from './guyane'
+import { getDGTMStatsInside } from './dgtm.js'
+import { getGuyaneStatsInside } from './guyane.js'
 
 export const getDGTMStats = async (
   req: express.Request,
diff --git a/packages/api/src/api/rest/statistiques/metaux-metropole.ts b/packages/api/src/api/rest/statistiques/metaux-metropole.ts
index 86a3aacc3..48747f301 100644
--- a/packages/api/src/api/rest/statistiques/metaux-metropole.ts
+++ b/packages/api/src/api/rest/statistiques/metaux-metropole.ts
@@ -3,35 +3,39 @@ import {
   StatistiquesMinerauxMetauxMetropole,
   StatistiquesMinerauxMetauxMetropoleSels,
   substancesFiscalesStats
-} from 'camino-common/src/statistiques'
-import { CaminoAnnee, valideAnnee, anneeSuivante } from 'camino-common/src/date'
-import { fromUniteFiscaleToUnite } from 'camino-common/src/static/unites'
-import { knex } from '../../../knex'
-import { userSuper } from '../../../database/user-super'
-import { titresGet } from '../../../database/queries/titres'
-import { TitresStatutIds } from 'camino-common/src/static/titresStatuts'
+} from 'camino-common/src/statistiques.js'
+import {
+  CaminoAnnee,
+  anneeSuivante,
+  toCaminoAnnee
+} from 'camino-common/src/date.js'
+import { fromUniteFiscaleToUnite } from 'camino-common/src/static/unites.js'
+import { knex } from '../../../knex.js'
+import { userSuper } from '../../../database/user-super.js'
+import { titresGet } from '../../../database/queries/titres.js'
+import { TitresStatutIds } from 'camino-common/src/static/titresStatuts.js'
 import {
   SubstanceFiscaleId,
   SubstancesFiscale,
   SUBSTANCES_FISCALES_IDS
-} from 'camino-common/src/static/substancesFiscales'
+} from 'camino-common/src/static/substancesFiscales.js'
 import {
   CodePostal,
   Departements,
   departementsMetropole,
   toDepartementId
-} from 'camino-common/src/static/departement'
-import { REGION_IDS } from 'camino-common/src/static/region'
+} from 'camino-common/src/static/departement.js'
+import { REGION_IDS } from 'camino-common/src/static/region.js'
 import {
   apiOpenfiscaCalculate,
   OpenfiscaRequest,
   redevanceCommunale,
   redevanceDepartementale,
   substanceFiscaleToInput
-} from '../../../tools/api-openfisca'
-import { onlyUnique } from 'camino-common/src/typescript-tools'
-import { TITRES_TYPES_TYPES_IDS } from 'camino-common/src/static/titresTypesTypes'
-import { evolutionTitres } from './evolution-titres'
+} from '../../../tools/api-openfisca/index.js'
+import { onlyUnique } from 'camino-common/src/typescript-tools.js'
+import { TITRES_TYPES_TYPES_IDS } from 'camino-common/src/static/titresTypesTypes.js'
+import { evolutionTitres } from './evolution-titres.js'
 
 export const getMinerauxMetauxMetropolesStatsInside =
   async (): Promise<StatistiquesMinerauxMetauxMetropole> => {
@@ -178,17 +182,17 @@ const buildSubstances = async (): Promise<
     {}
   )
   // 2022-09-30 Valeurs fournies par Laure dans mattermost : https://mattermost.incubateur.net/camino/pl/3n4y958n6idwbrr4me5rkma1oy
-  bauxiteResult[valideAnnee('2009')] = 178.7
-  bauxiteResult[valideAnnee('2010')] = 132.302
-  bauxiteResult[valideAnnee('2011')] = 117.7
-  bauxiteResult[valideAnnee('2012')] = 65.336
-  bauxiteResult[valideAnnee('2013')] = 109.602
-  bauxiteResult[valideAnnee('2014')] = 71.07
-  bauxiteResult[valideAnnee('2015')] = 80.578
-  bauxiteResult[valideAnnee('2016')] = 112.445
-  bauxiteResult[valideAnnee('2017')] = 131.012
-  bauxiteResult[valideAnnee('2018')] = 138.8
-  bauxiteResult[valideAnnee('2019')] = 120.76
+  bauxiteResult[toCaminoAnnee('2009')] = 178.7
+  bauxiteResult[toCaminoAnnee('2010')] = 132.302
+  bauxiteResult[toCaminoAnnee('2011')] = 117.7
+  bauxiteResult[toCaminoAnnee('2012')] = 65.336
+  bauxiteResult[toCaminoAnnee('2013')] = 109.602
+  bauxiteResult[toCaminoAnnee('2014')] = 71.07
+  bauxiteResult[toCaminoAnnee('2015')] = 80.578
+  bauxiteResult[toCaminoAnnee('2016')] = 112.445
+  bauxiteResult[toCaminoAnnee('2017')] = 131.012
+  bauxiteResult[toCaminoAnnee('2018')] = 138.8
+  bauxiteResult[toCaminoAnnee('2019')] = 120.76
 
   // TODO 2022-10-03 Problème de type postgres (jsonb ou numeric trop gros?), même avec du cast, on obtient des string
   const resultSel: {
@@ -254,7 +258,7 @@ const buildSubstances = async (): Promise<
   )
 
   // Valeurs fournies par Laure : https://trello.com/c/d6YDa4Ao/341-cas-france-relance-dashboard-grand-public-compl%C3%A8te-les-statistiques-v3-sel
-  selsStats.naca[valideAnnee(2009)] = {
+  selsStats.naca[toCaminoAnnee(2009)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 635.592,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 7.684,
     [REGION_IDS['Grand Est']]: 2692.7,
@@ -262,7 +266,7 @@ const buildSubstances = async (): Promise<
     [REGION_IDS["Provence-Alpes-Côte d'Azur"]]: 274.732,
     [REGION_IDS.Occitanie]: 867.001
   }
-  selsStats.naca[valideAnnee(2010)] = {
+  selsStats.naca[toCaminoAnnee(2010)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 579.385,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 11.645,
     [REGION_IDS['Grand Est']]: 2995.599,
@@ -270,7 +274,7 @@ const buildSubstances = async (): Promise<
     [REGION_IDS["Provence-Alpes-Côte d'Azur"]]: 500.564,
     [REGION_IDS.Occitanie]: 990.091
   }
-  selsStats.naca[valideAnnee(2011)] = {
+  selsStats.naca[toCaminoAnnee(2011)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 959.442,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 0,
     [REGION_IDS['Grand Est']]: 2959.7,
@@ -278,7 +282,7 @@ const buildSubstances = async (): Promise<
     [REGION_IDS["Provence-Alpes-Côte d'Azur"]]: 421.48,
     [REGION_IDS.Occitanie]: 958.849
   }
-  selsStats.naca[valideAnnee(2012)] = {
+  selsStats.naca[toCaminoAnnee(2012)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 936.78,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 0,
     [REGION_IDS['Grand Est']]: 2426.62,
@@ -286,7 +290,7 @@ const buildSubstances = async (): Promise<
     [REGION_IDS["Provence-Alpes-Côte d'Azur"]]: 1042.67,
     [REGION_IDS.Occitanie]: 797.099
   }
-  selsStats.naca[valideAnnee(2013)] = {
+  selsStats.naca[toCaminoAnnee(2013)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 907.994,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 0,
     [REGION_IDS['Grand Est']]: 2703.049,
@@ -294,7 +298,7 @@ const buildSubstances = async (): Promise<
     [REGION_IDS["Provence-Alpes-Côte d'Azur"]]: 1300.854,
     [REGION_IDS.Occitanie]: 1010.892
   }
-  selsStats.naca[valideAnnee(2014)] = {
+  selsStats.naca[toCaminoAnnee(2014)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 763.55,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 0,
     [REGION_IDS['Grand Est']]: 1552.197,
@@ -302,7 +306,7 @@ const buildSubstances = async (): Promise<
     [REGION_IDS["Provence-Alpes-Côte d'Azur"]]: 843.83,
     [REGION_IDS.Occitanie]: 1062.216
   }
-  selsStats.naca[valideAnnee(2015)] = {
+  selsStats.naca[toCaminoAnnee(2015)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 799.949,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 0,
     [REGION_IDS['Grand Est']]: 2444.74,
@@ -310,7 +314,7 @@ const buildSubstances = async (): Promise<
     [REGION_IDS["Provence-Alpes-Côte d'Azur"]]: 135.02,
     [REGION_IDS.Occitanie]: 1007.542
   }
-  selsStats.naca[valideAnnee(2016)] = {
+  selsStats.naca[toCaminoAnnee(2016)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 830.577,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 0,
     [REGION_IDS['Grand Est']]: 2377.175,
@@ -318,7 +322,7 @@ const buildSubstances = async (): Promise<
     [REGION_IDS["Provence-Alpes-Côte d'Azur"]]: 95.859,
     [REGION_IDS.Occitanie]: 926.388
   }
-  selsStats.naca[valideAnnee(2017)] = {
+  selsStats.naca[toCaminoAnnee(2017)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 869.676,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 0,
     [REGION_IDS['Grand Est']]: 2585.934,
@@ -326,7 +330,7 @@ const buildSubstances = async (): Promise<
     [REGION_IDS["Provence-Alpes-Côte d'Azur"]]: 91.718,
     [REGION_IDS.Occitanie]: 1082.021
   }
-  selsStats.naca[valideAnnee(2018)] = {
+  selsStats.naca[toCaminoAnnee(2018)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 870.718,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 0,
     [REGION_IDS['Grand Est']]: 2481.271,
@@ -334,7 +338,7 @@ const buildSubstances = async (): Promise<
     [REGION_IDS["Provence-Alpes-Côte d'Azur"]]: 150.524,
     [REGION_IDS.Occitanie]: 997.862
   }
-  selsStats.naca[valideAnnee(2019)] = {
+  selsStats.naca[toCaminoAnnee(2019)] = {
     [REGION_IDS['Auvergne-Rhône-Alpes']]: 792.394,
     [REGION_IDS['Bourgogne-Franche-Comté']]: 0,
     [REGION_IDS['Grand Est']]: 2537.412,
diff --git a/packages/api/src/api/rest/titres.test.integration.ts b/packages/api/src/api/rest/titres.test.integration.ts
index 07944ff0c..af77cc66d 100644
--- a/packages/api/src/api/rest/titres.test.integration.ts
+++ b/packages/api/src/api/rest/titres.test.integration.ts
@@ -1,16 +1,16 @@
-import { dbManager } from '../../../tests/db-manager'
-import { titreCreate } from '../../database/queries/titres'
-import { titreDemarcheCreate } from '../../database/queries/titres-demarches'
-import { titreEtapeCreate } from '../../database/queries/titres-etapes'
-import { userSuper } from '../../database/user-super'
-import { restCall, restPostCall } from '../../../tests/_utils'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
-import { ITitreDemarche, ITitreEtape } from '../../types'
-import { entreprisesUpsert } from '../../database/queries/entreprises'
+import { dbManager } from '../../../tests/db-manager.js'
+import { titreCreate } from '../../database/queries/titres.js'
+import { titreDemarcheCreate } from '../../database/queries/titres-demarches.js'
+import { titreEtapeCreate } from '../../database/queries/titres-etapes.js'
+import { userSuper } from '../../database/user-super.js'
+import { restCall, restPostCall } from '../../../tests/_utils/index.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import { ITitreDemarche, ITitreEtape } from '../../types.js'
+import { entreprisesUpsert } from '../../database/queries/entreprises.js'
 import { Knex } from 'knex'
-import { toCaminoDate } from 'camino-common/src/date'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { afterAll, beforeAll, describe, test, expect } from 'vitest'
-import { newEntrepriseId } from 'camino-common/src/entreprise'
+import { newEntrepriseId } from 'camino-common/src/entreprise.js'
 
 let knex: Knex<any, unknown[]>
 beforeAll(async () => {
diff --git a/packages/api/src/api/rest/titres.ts b/packages/api/src/api/rest/titres.ts
index 2ffbc83e4..2410af63e 100644
--- a/packages/api/src/api/rest/titres.ts
+++ b/packages/api/src/api/rest/titres.ts
@@ -1,44 +1,50 @@
-import { titreGet, titresGet } from '../../database/queries/titres'
+import { titreGet, titresGet } from '../../database/queries/titres.js'
 
-import { userGet } from '../../database/queries/utilisateurs'
+import { userGet } from '../../database/queries/utilisateurs.js'
 
 import {
   ADMINISTRATION_IDS,
   ADMINISTRATION_TYPE_IDS,
   AdministrationId,
   Administrations
-} from 'camino-common/src/static/administrations'
+} from 'camino-common/src/static/administrations.js'
 import express from 'express'
 import { constants } from 'http2'
-import { DOMAINES_IDS } from 'camino-common/src/static/domaines'
-import { TITRES_TYPES_TYPES_IDS } from 'camino-common/src/static/titresTypesTypes'
-import { ITitre, IUser, ITitreDemarche, IUtilisateur } from '../../types'
+import { DOMAINES_IDS } from 'camino-common/src/static/domaines.js'
+import { TITRES_TYPES_TYPES_IDS } from 'camino-common/src/static/titresTypesTypes.js'
+import { ITitre, IUser, ITitreDemarche, IUtilisateur } from '../../types.js'
 import {
   CommonTitreDREAL,
   CommonTitreONF,
   CommonTitrePTMG,
   TitreLink,
   TitreLinks
-} from 'camino-common/src/titres'
+} from 'camino-common/src/titres.js'
 import {
   demarcheDefinitionFind,
   isDemarcheDefinitionMachine
-} from '../../business/rules-demarches/definitions'
-import { CustomResponse } from './express-type'
-import { userSuper } from '../../database/user-super'
-import Utilisateurs from '../../database/models/utilisateurs'
-import { NotNullableKeys, onlyUnique } from 'camino-common/src/typescript-tools'
-import { isAdministration } from 'camino-common/src/roles'
-import TitresTitres from '../../database/models/titres--titres'
-import { titreAdministrationsGet } from '../_format/titres'
-import { canLinkTitres } from 'camino-common/src/permissions/titres'
-import { linkTitres } from '../../database/queries/titres-titres'
-import { checkTitreLinks } from '../../business/validations/titre-links-validate'
-import { toMachineEtapes } from '../../business/rules-demarches/machine-common'
-import { TitreReference } from 'camino-common/src/titres-references'
-import { DemarchesStatutsIds } from 'camino-common/src/static/demarchesStatuts'
-import { ETAPES_TYPES, EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { CaminoDate } from 'camino-common/src/date'
+} from '../../business/rules-demarches/definitions.js'
+import { CustomResponse } from './express-type.js'
+import { userSuper } from '../../database/user-super.js'
+import Utilisateurs from '../../database/models/utilisateurs.js'
+import {
+  NotNullableKeys,
+  onlyUnique
+} from 'camino-common/src/typescript-tools.js'
+import { isAdministration } from 'camino-common/src/roles.js'
+import TitresTitres from '../../database/models/titres--titres.js'
+import { titreAdministrationsGet } from '../_format/titres.js'
+import { canLinkTitres } from 'camino-common/src/permissions/titres.js'
+import { linkTitres } from '../../database/queries/titres-titres.js'
+import { checkTitreLinks } from '../../business/validations/titre-links-validate.js'
+import { toMachineEtapes } from '../../business/rules-demarches/machine-common.js'
+import { TitreReference } from 'camino-common/src/titres-references.js'
+import { DemarchesStatutsIds } from 'camino-common/src/static/demarchesStatuts.js'
+import {
+  ETAPES_TYPES,
+  EtapeTypeId
+} from 'camino-common/src/static/etapesTypes.js'
+import { CaminoDate } from 'camino-common/src/date.js'
 
 const etapesAMasquer = [
   ETAPES_TYPES.classementSansSuite,
diff --git a/packages/api/src/api/rest/upload.test.integration.ts b/packages/api/src/api/rest/upload.test.integration.ts
index 1770f2a00..dbffe8752 100644
--- a/packages/api/src/api/rest/upload.test.integration.ts
+++ b/packages/api/src/api/rest/upload.test.integration.ts
@@ -1,8 +1,8 @@
-import { dbManager } from '../../../tests/db-manager'
+import { dbManager } from '../../../tests/db-manager.js'
 import { vi, afterAll, beforeAll, describe, test, expect } from 'vitest'
-import { Role } from 'camino-common/src/roles'
-import { uploadAllowedMiddleware } from '../../server/upload'
-import { utilisateurCreate } from '../../database/queries/utilisateurs'
+import { Role } from 'camino-common/src/roles.js'
+import { uploadAllowedMiddleware } from '../../server/upload.js'
+import { utilisateurCreate } from '../../database/queries/utilisateurs.js'
 import { Request, Response } from 'express'
 
 console.info = vi.fn()
diff --git a/packages/api/src/api/rest/utilisateurs.ts b/packages/api/src/api/rest/utilisateurs.ts
index 53955025d..2a947500c 100644
--- a/packages/api/src/api/rest/utilisateurs.ts
+++ b/packages/api/src/api/rest/utilisateurs.ts
@@ -3,22 +3,22 @@ import {
   userGet,
   utilisateurGet,
   utilisateursGet
-} from '../../database/queries/utilisateurs'
+} from '../../database/queries/utilisateurs.js'
 import express from 'express'
-import { CustomResponse } from './express-type'
-import { IFormat, IUser, IUtilisateursColonneId } from '../../types'
+import { CustomResponse } from './express-type.js'
+import { IFormat, IUser, IUtilisateursColonneId } from '../../types.js'
 import { constants } from 'http2'
 import {
   isSubscribedToNewsLetter,
   newsletterSubscriberUpdate
-} from '../../tools/api-mailjet/newsletter'
-import { isRole } from 'camino-common/src/roles'
-import { utilisateursFormatTable } from './format/utilisateurs'
-import { tableConvert } from './_convert'
-import { fileNameCreate } from '../../tools/file-name-create'
-import { QGISToken } from 'camino-common/src/utilisateur'
-import { knex } from '../../knex'
-import { idGenerate } from '../../database/models/_format/id-create'
+} from '../../tools/api-mailjet/newsletter.js'
+import { isRole } from 'camino-common/src/roles.js'
+import { utilisateursFormatTable } from './format/utilisateurs.js'
+import { tableConvert } from './_convert.js'
+import { fileNameCreate } from '../../tools/file-name-create.js'
+import { QGISToken } from 'camino-common/src/utilisateur.js'
+import { knex } from '../../knex.js'
+import { idGenerate } from '../../database/models/_format/id-create.js'
 import bcrypt from 'bcryptjs'
 
 export const isSubscribedToNewsletter = async (
diff --git a/packages/api/src/business/_logs-update.ts b/packages/api/src/business/_logs-update.ts
index 7311247ee..8bf745254 100644
--- a/packages/api/src/business/_logs-update.ts
+++ b/packages/api/src/business/_logs-update.ts
@@ -1,4 +1,4 @@
-import { Index, IEntrepriseEtablissement, IEntreprise } from '../types'
+import { Index, IEntrepriseEtablissement, IEntreprise } from '../types.js'
 
 export const logsUpdate = ({
   titresEtapesOrdreUpdated,
diff --git a/packages/api/src/business/daily.ts b/packages/api/src/business/daily.ts
index d29821ada..cd9db3f86 100644
--- a/packages/api/src/business/daily.ts
+++ b/packages/api/src/business/daily.ts
@@ -1,25 +1,25 @@
-import { titresActivitesStatutIdsUpdate } from './processes/titres-activites-statut-ids-update'
-import { titresActivitesUpdate } from './processes/titres-activites-update'
-import { titresDatesUpdate } from './processes/titres-dates-update'
-import { titresDemarchesOrdreUpdate } from './processes/titres-demarches-ordre-update'
-import { titresDemarchesPublicUpdate } from './processes/titres-demarches-public-update'
-import { titresDemarchesStatutIdUpdate } from './processes/titres-demarches-statut-ids-update'
-import { titresEtapesAdministrationsLocalesUpdate } from './processes/titres-etapes-administrations-locales-update'
-import { titresEtapesOrdreUpdate } from './processes/titres-etapes-ordre-update'
-import { titresPhasesUpdate } from './processes/titres-phases-update'
-import { titresPointsReferencesCreate } from './processes/titres-points-references-create'
-import { titresPublicUpdate } from './processes/titres-public-update'
-import { titresPropsEtapesIdsUpdate } from './processes/titres-props-etapes-ids-update'
-import { titresContenusEtapesIdsUpdate } from './processes/titres-contenus-etapes-ids-update'
-import { titresStatutIdsUpdate } from './processes/titres-statut-ids-update'
-import { titresCoordonneesUpdate } from './processes/titres-coordonnees-update'
-import { titresEtapesHeritagePropsUpdate } from './processes/titres-etapes-heritage-props-update'
-import { titresEtapesHeritageContenuUpdate } from './processes/titres-etapes-heritage-contenu-update'
-import { titresActivitesPropsUpdate } from './processes/titres-activites-props-update'
-import { titresSlugsUpdate } from './processes/titres-slugs-update'
-import { logsUpdate } from './_logs-update'
-import { userSuper } from '../database/user-super'
-import { titresActivitesRelanceSend } from './processes/titres-activites-relance-send'
+import { titresActivitesStatutIdsUpdate } from './processes/titres-activites-statut-ids-update.js'
+import { titresActivitesUpdate } from './processes/titres-activites-update.js'
+import { titresDatesUpdate } from './processes/titres-dates-update.js'
+import { titresDemarchesOrdreUpdate } from './processes/titres-demarches-ordre-update.js'
+import { titresDemarchesPublicUpdate } from './processes/titres-demarches-public-update.js'
+import { titresDemarchesStatutIdUpdate } from './processes/titres-demarches-statut-ids-update.js'
+import { titresEtapesAdministrationsLocalesUpdate } from './processes/titres-etapes-administrations-locales-update.js'
+import { titresEtapesOrdreUpdate } from './processes/titres-etapes-ordre-update.js'
+import { titresPhasesUpdate } from './processes/titres-phases-update.js'
+import { titresPointsReferencesCreate } from './processes/titres-points-references-create.js'
+import { titresPublicUpdate } from './processes/titres-public-update.js'
+import { titresPropsEtapesIdsUpdate } from './processes/titres-props-etapes-ids-update.js'
+import { titresContenusEtapesIdsUpdate } from './processes/titres-contenus-etapes-ids-update.js'
+import { titresStatutIdsUpdate } from './processes/titres-statut-ids-update.js'
+import { titresCoordonneesUpdate } from './processes/titres-coordonnees-update.js'
+import { titresEtapesHeritagePropsUpdate } from './processes/titres-etapes-heritage-props-update.js'
+import { titresEtapesHeritageContenuUpdate } from './processes/titres-etapes-heritage-contenu-update.js'
+import { titresActivitesPropsUpdate } from './processes/titres-activites-props-update.js'
+import { titresSlugsUpdate } from './processes/titres-slugs-update.js'
+import { logsUpdate } from './_logs-update.js'
+import { userSuper } from '../database/user-super.js'
+import { titresActivitesRelanceSend } from './processes/titres-activites-relance-send.js'
 
 const daily = async () => {
   try {
diff --git a/packages/api/src/business/entreprises-guyane.ts b/packages/api/src/business/entreprises-guyane.ts
index e77bd81fd..b2a6cf8d8 100644
--- a/packages/api/src/business/entreprises-guyane.ts
+++ b/packages/api/src/business/entreprises-guyane.ts
@@ -2,11 +2,11 @@ import {
   toDepartementId,
   Departements,
   CodePostal
-} from 'camino-common/src/static/departement'
-import { PAYS_IDS } from 'camino-common/src/static/pays'
-import { Regions } from 'camino-common/src/static/region'
-import { knex } from '../knex'
-import { exploitantsGuyaneSubscriberUpdate } from '../tools/api-mailjet/newsletter'
+} from 'camino-common/src/static/departement.js'
+import { PAYS_IDS } from 'camino-common/src/static/pays.js'
+import { Regions } from 'camino-common/src/static/region.js'
+import { knex } from '../knex.js'
+import { exploitantsGuyaneSubscriberUpdate } from '../tools/api-mailjet/newsletter.js'
 
 interface Result {
   id: string
diff --git a/packages/api/src/business/matrices.test.ts b/packages/api/src/business/matrices.test.ts
index f7b9d8224..d1c2b4ef4 100644
--- a/packages/api/src/business/matrices.test.ts
+++ b/packages/api/src/business/matrices.test.ts
@@ -1,6 +1,6 @@
-import { buildMatrices } from './matrices'
-import { ITitre } from '../types'
-import { newEntrepriseId } from 'camino-common/src/entreprise'
+import { buildMatrices } from './matrices.js'
+import { ITitre } from '../types.js'
+import { newEntrepriseId } from 'camino-common/src/entreprise.js'
 import { describe, expect, test } from 'vitest'
 describe('matrices', () => {
   test('buildMatrices', () => {
diff --git a/packages/api/src/business/matrices.ts b/packages/api/src/business/matrices.ts
index 7a15e1a12..85c2f9c32 100644
--- a/packages/api/src/business/matrices.ts
+++ b/packages/api/src/business/matrices.ts
@@ -1,23 +1,23 @@
 import '../init'
-import { titresGet } from '../database/queries/titres'
-import { titresActivitesGet } from '../database/queries/titres-activites'
+import { titresGet } from '../database/queries/titres.js'
+import { titresActivitesGet } from '../database/queries/titres-activites.js'
 import {
   apiOpenfiscaCalculate,
   apiOpenfiscaConstantsFetch,
   OpenfiscaConstants,
   OpenfiscaResponse
-} from '../tools/api-openfisca'
-import { bodyBuilder, toFiscalite } from '../api/rest/entreprises'
-import { userSuper } from '../database/user-super'
-import { entreprisesGet } from '../database/queries/entreprises'
+} from '../tools/api-openfisca/index.js'
+import { bodyBuilder, toFiscalite } from '../api/rest/entreprises.js'
+import { userSuper } from '../database/user-super.js'
+import { entreprisesGet } from '../database/queries/entreprises.js'
 import {
   Fiscalite,
   fraisGestion,
   isFiscaliteGuyane
-} from 'camino-common/src/fiscalite'
+} from 'camino-common/src/fiscalite.js'
 import xlsx from 'xlsx'
-import { ICommune, ITitre } from '../types'
-import { Departements } from 'camino-common/src/static/departement'
+import { ICommune, ITitre } from '../types.js'
+import { Departements } from 'camino-common/src/static/departement.js'
 import fs from 'fs'
 import carbone from 'carbone'
 
diff --git a/packages/api/src/business/monthly.ts b/packages/api/src/business/monthly.ts
index 5631afd69..ec85502d7 100644
--- a/packages/api/src/business/monthly.ts
+++ b/packages/api/src/business/monthly.ts
@@ -1,7 +1,7 @@
-import { entreprisesUpdate } from './processes/entreprises-update'
-import { titresEtapesAreasUpdate } from './processes/titres-etapes-areas-update'
-import { updateTerritoires } from '../tools/territoires-update'
-import { subscribeUsersToGuyaneExploitants } from './entreprises-guyane'
+import { entreprisesUpdate } from './processes/entreprises-update.js'
+import { titresEtapesAreasUpdate } from './processes/titres-etapes-areas-update.js'
+import { updateTerritoires } from '../tools/territoires-update.js'
+import { subscribeUsersToGuyaneExploitants } from './entreprises-guyane.js'
 
 export const monthly = async () => {
   try {
diff --git a/packages/api/src/business/processes/__mocks__/entreprises-update.ts b/packages/api/src/business/processes/__mocks__/entreprises-update.ts
index 49513f3af..9b51a5831 100644
--- a/packages/api/src/business/processes/__mocks__/entreprises-update.ts
+++ b/packages/api/src/business/processes/__mocks__/entreprises-update.ts
@@ -1,5 +1,5 @@
-import Entreprises from '../../../database/models/entreprises'
-import EntreprisesEtablissements from '../../../database/models/entreprises-etablissements'
+import Entreprises from '../../../database/models/entreprises.js'
+import EntreprisesEtablissements from '../../../database/models/entreprises-etablissements.js'
 
 const dbEntreprisesCreees = [
   { id: 'pipo', legalSiren: undefined, nom: 'pipo' },
diff --git a/packages/api/src/business/processes/__mocks__/titre-activite-props-update.ts b/packages/api/src/business/processes/__mocks__/titre-activite-props-update.ts
index 17c8b2b1e..07ca2d436 100644
--- a/packages/api/src/business/processes/__mocks__/titre-activite-props-update.ts
+++ b/packages/api/src/business/processes/__mocks__/titre-activite-props-update.ts
@@ -1,4 +1,4 @@
-import Titres from '../../../database/models/titres'
+import Titres from '../../../database/models/titres.js'
 const activiteType = {
   frequenceId: 'tri'
 }
diff --git a/packages/api/src/business/processes/__mocks__/titre-fichiers-rename.ts b/packages/api/src/business/processes/__mocks__/titre-fichiers-rename.ts
index ddcccf38b..bb8e05ad1 100644
--- a/packages/api/src/business/processes/__mocks__/titre-fichiers-rename.ts
+++ b/packages/api/src/business/processes/__mocks__/titre-fichiers-rename.ts
@@ -1,4 +1,4 @@
-import { ITitre } from '../../../types'
+import { ITitre } from '../../../types.js'
 
 const titreNew = {
   id: 'new-titre-id',
diff --git a/packages/api/src/business/processes/__mocks__/titres-activites-statut-ids-update-activites.ts b/packages/api/src/business/processes/__mocks__/titres-activites-statut-ids-update-activites.ts
index b14625780..c87bdb657 100644
--- a/packages/api/src/business/processes/__mocks__/titres-activites-statut-ids-update-activites.ts
+++ b/packages/api/src/business/processes/__mocks__/titres-activites-statut-ids-update-activites.ts
@@ -1,4 +1,4 @@
-import TitresActivites from '../../../database/models/titres-activites'
+import TitresActivites from '../../../database/models/titres-activites.js'
 
 const titresActivitesDelaiDepasse = [
   {
diff --git a/packages/api/src/business/processes/__mocks__/titres-activites-update-titres.ts b/packages/api/src/business/processes/__mocks__/titres-activites-update-titres.ts
index d2e54dbd2..486a61957 100644
--- a/packages/api/src/business/processes/__mocks__/titres-activites-update-titres.ts
+++ b/packages/api/src/business/processes/__mocks__/titres-activites-update-titres.ts
@@ -1,5 +1,5 @@
-import ActivitesTypes from '../../../database/models/activites-types'
-import Titres from '../../../database/models/titres'
+import ActivitesTypes from '../../../database/models/activites-types.js'
+import Titres from '../../../database/models/titres.js'
 
 const titresSansActivite = [
   {
diff --git a/packages/api/src/business/processes/__mocks__/titres-demarches-ordre-update-demarches.ts b/packages/api/src/business/processes/__mocks__/titres-demarches-ordre-update-demarches.ts
index 4a747a852..e911d340a 100644
--- a/packages/api/src/business/processes/__mocks__/titres-demarches-ordre-update-demarches.ts
+++ b/packages/api/src/business/processes/__mocks__/titres-demarches-ordre-update-demarches.ts
@@ -1,4 +1,4 @@
-import Titres from '../../../database/models/titres'
+import Titres from '../../../database/models/titres.js'
 
 const titresDemarchesDesordonnees = [
   {
diff --git a/packages/api/src/business/processes/__mocks__/titres-demarches-public-update-demarches.ts b/packages/api/src/business/processes/__mocks__/titres-demarches-public-update-demarches.ts
index 25e8b6bd6..b055c0194 100644
--- a/packages/api/src/business/processes/__mocks__/titres-demarches-public-update-demarches.ts
+++ b/packages/api/src/business/processes/__mocks__/titres-demarches-public-update-demarches.ts
@@ -1,4 +1,4 @@
-import Titres from '../../../database/models/titres'
+import Titres from '../../../database/models/titres.js'
 
 const titresDemarchesPublicModifie = [
   {
diff --git a/packages/api/src/business/processes/__mocks__/titres-demarches-statut-ids-update-demarches.ts b/packages/api/src/business/processes/__mocks__/titres-demarches-statut-ids-update-demarches.ts
index a25052bdd..c8e788aad 100644
--- a/packages/api/src/business/processes/__mocks__/titres-demarches-statut-ids-update-demarches.ts
+++ b/packages/api/src/business/processes/__mocks__/titres-demarches-statut-ids-update-demarches.ts
@@ -1,4 +1,4 @@
-import Titres from '../../../database/models/titres'
+import Titres from '../../../database/models/titres.js'
 
 const titresDemarchesStatutModifie = [
   {
diff --git a/packages/api/src/business/processes/__mocks__/titres-etapes-administrations-locales-update-etapes.ts b/packages/api/src/business/processes/__mocks__/titres-etapes-administrations-locales-update-etapes.ts
index 60bff4e95..ba208bc92 100644
--- a/packages/api/src/business/processes/__mocks__/titres-etapes-administrations-locales-update-etapes.ts
+++ b/packages/api/src/business/processes/__mocks__/titres-etapes-administrations-locales-update-etapes.ts
@@ -1,4 +1,4 @@
-import TitresEtapes from '../../../database/models/titres-etapes'
+import TitresEtapes from '../../../database/models/titres-etapes.js'
 
 export const titresEtapesCommunesVides = [
   {
diff --git a/packages/api/src/business/processes/__mocks__/titres-etapes-ordre-update-demarches.ts b/packages/api/src/business/processes/__mocks__/titres-etapes-ordre-update-demarches.ts
index d650e7b52..09940e698 100644
--- a/packages/api/src/business/processes/__mocks__/titres-etapes-ordre-update-demarches.ts
+++ b/packages/api/src/business/processes/__mocks__/titres-etapes-ordre-update-demarches.ts
@@ -1,4 +1,4 @@
-import TitresDemarches from '../../../database/models/titres-demarches'
+import TitresDemarches from '../../../database/models/titres-demarches.js'
 
 const titresDemarchesEtapes = [
   {
diff --git a/packages/api/src/business/processes/__mocks__/titres-phases-update-titres.ts b/packages/api/src/business/processes/__mocks__/titres-phases-update-titres.ts
index 28b2b8ba6..5ea050fe5 100644
--- a/packages/api/src/business/processes/__mocks__/titres-phases-update-titres.ts
+++ b/packages/api/src/business/processes/__mocks__/titres-phases-update-titres.ts
@@ -1,5 +1,5 @@
-import Titres from '../../../database/models/titres'
-import { ITitrePhase } from '../../../types'
+import Titres from '../../../database/models/titres.js'
+import { ITitrePhase } from '../../../types.js'
 
 const titresSansPhase = [
   {
diff --git a/packages/api/src/business/processes/__mocks__/titres-public-update-titres.ts b/packages/api/src/business/processes/__mocks__/titres-public-update-titres.ts
index a436b4d6c..a4f1d55c2 100644
--- a/packages/api/src/business/processes/__mocks__/titres-public-update-titres.ts
+++ b/packages/api/src/business/processes/__mocks__/titres-public-update-titres.ts
@@ -1,4 +1,4 @@
-import Titres from '../../../database/models/titres'
+import Titres from '../../../database/models/titres.js'
 
 export const titresPublicModifie = [
   {
diff --git a/packages/api/src/business/processes/__mocks__/titres-statut-ids-update-titres.ts b/packages/api/src/business/processes/__mocks__/titres-statut-ids-update-titres.ts
index 3d91eb46e..aae30ef63 100644
--- a/packages/api/src/business/processes/__mocks__/titres-statut-ids-update-titres.ts
+++ b/packages/api/src/business/processes/__mocks__/titres-statut-ids-update-titres.ts
@@ -1,4 +1,4 @@
-import Titres from '../../../database/models/titres'
+import Titres from '../../../database/models/titres.js'
 
 const titresValideStatutIdAJour = [
   {
diff --git a/packages/api/src/business/processes/entreprises-update.test.ts b/packages/api/src/business/processes/entreprises-update.test.ts
index d07f6df58..4ad6fd0c2 100644
--- a/packages/api/src/business/processes/entreprises-update.test.ts
+++ b/packages/api/src/business/processes/entreprises-update.test.ts
@@ -1,10 +1,10 @@
-import { entreprisesUpdate } from './entreprises-update'
-import { entreprisesGet } from '../../database/queries/entreprises'
-import { entreprisesEtablissementsGet } from '../../database/queries/entreprises-etablissements'
+import { entreprisesUpdate } from './entreprises-update.js'
+import { entreprisesGet } from '../../database/queries/entreprises.js'
+import { entreprisesEtablissementsGet } from '../../database/queries/entreprises-etablissements.js'
 import {
   apiInseeEntreprisesGet,
   apiInseeEntreprisesEtablissementsGet
-} from '../../tools/api-insee'
+} from '../../tools/api-insee/index.js'
 
 import {
   dbEntreprisesCreees,
@@ -27,8 +27,8 @@ import {
   apiEntreprisesEtablissementsCreees,
   apiEntreprisesEtablissementsModifiees,
   apiEntreprisesEtablissementsSupprimeees
-} from './__mocks__/entreprises-update'
-import { IEntreprise, IEntrepriseEtablissement } from '../../types'
+} from './__mocks__/entreprises-update.js'
+import { IEntreprise, IEntrepriseEtablissement } from '../../types.js'
 import { vi, beforeEach, describe, expect, test } from 'vitest'
 
 const entreprisesUpdated: IEntreprise[] = []
diff --git a/packages/api/src/business/processes/entreprises-update.ts b/packages/api/src/business/processes/entreprises-update.ts
index b53debd6f..49b1e27d3 100644
--- a/packages/api/src/business/processes/entreprises-update.ts
+++ b/packages/api/src/business/processes/entreprises-update.ts
@@ -1,20 +1,20 @@
-import { IEntrepriseEtablissement, IEntreprise } from '../../types'
+import { IEntrepriseEtablissement, IEntreprise } from '../../types.js'
 
-import { objectsDiffer } from '../../tools/index'
+import { objectsDiffer } from '../../tools/index.js'
 import {
   entreprisesUpsert,
   entreprisesGet
-} from '../../database/queries/entreprises'
+} from '../../database/queries/entreprises.js'
 import {
   entreprisesEtablissementsUpsert,
   entreprisesEtablissementsDelete,
   entreprisesEtablissementsGet
-} from '../../database/queries/entreprises-etablissements'
+} from '../../database/queries/entreprises-etablissements.js'
 import {
   apiInseeEntreprisesEtablissementsGet,
   apiInseeEntreprisesGet
-} from '../../tools/api-insee'
-import { userSuper } from '../../database/user-super'
+} from '../../tools/api-insee/index.js'
+import { userSuper } from '../../database/user-super.js'
 
 const entreprisesEtablissementsToUpdateBuild = (
   entreprisesEtablissementsOld: IEntrepriseEtablissement[],
diff --git a/packages/api/src/business/processes/titres-activites-props-update.test.ts b/packages/api/src/business/processes/titres-activites-props-update.test.ts
index c1a87cb04..7e4dae96a 100644
--- a/packages/api/src/business/processes/titres-activites-props-update.test.ts
+++ b/packages/api/src/business/processes/titres-activites-props-update.test.ts
@@ -1,12 +1,12 @@
-import { titresActivitesPropsUpdate } from './titres-activites-props-update'
-import { titresActivitesUpsert } from '../../database/queries/titres-activites'
-import { titresGet } from '../../database/queries/titres'
-import { titreValideCheck } from '../utils/titre-valide-check'
+import { titresActivitesPropsUpdate } from './titres-activites-props-update.js'
+import { titresActivitesUpsert } from '../../database/queries/titres-activites.js'
+import { titresGet } from '../../database/queries/titres.js'
+import { titreValideCheck } from '../utils/titre-valide-check.js'
 import { vi, describe, expect, test, afterEach } from 'vitest'
 import {
   titresActivitesToUpdate,
   titresActivitesNotToUpdate
-} from './__mocks__/titre-activite-props-update'
+} from './__mocks__/titre-activite-props-update.js'
 
 vi.mock('../../database/queries/titres-activites', () => ({
   titresActivitesUpsert: vi.fn()
diff --git a/packages/api/src/business/processes/titres-activites-props-update.ts b/packages/api/src/business/processes/titres-activites-props-update.ts
index ecae75479..b0b0f7410 100644
--- a/packages/api/src/business/processes/titres-activites-props-update.ts
+++ b/packages/api/src/business/processes/titres-activites-props-update.ts
@@ -1,12 +1,11 @@
-import dateFormat from 'dateformat'
+import type { ITitreActivite } from '../../types.js'
 
-import { ITitreActivite } from '../../types'
-
-import { titresActivitesUpsert } from '../../database/queries/titres-activites'
-import { titresGet } from '../../database/queries/titres'
-import { titreValideCheck } from '../utils/titre-valide-check'
-import { userSuper } from '../../database/user-super'
-import { getMonth } from 'camino-common/src/static/frequence'
+import { titresActivitesUpsert } from '../../database/queries/titres-activites.js'
+import { titresGet } from '../../database/queries/titres.js'
+import { titreValideCheck } from '../utils/titre-valide-check.js'
+import { userSuper } from '../../database/user-super.js'
+import { getMonth } from 'camino-common/src/static/frequence.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 
 export const titresActivitesPropsUpdate = async (titresIds?: string[]) => {
   console.info()
@@ -30,13 +29,12 @@ export const titresActivitesPropsUpdate = async (titresIds?: string[]) => {
       if (!titre.activites?.length) return acc
 
       return titre.activites.reduce((acc, titreActivite) => {
-        const dateDebut = dateFormat(
+        const dateDebut = toCaminoDate(
           new Date(
             titreActivite.annee,
             getMonth(titreActivite.type?.frequenceId, titreActivite.periodeId),
             1
-          ),
-          'yyyy-mm-dd'
+          )
         )
 
         const titreIsValide =
diff --git a/packages/api/src/business/processes/titres-activites-relance-send.test.ts b/packages/api/src/business/processes/titres-activites-relance-send.test.ts
index cbfeba5a0..3f8eec283 100644
--- a/packages/api/src/business/processes/titres-activites-relance-send.test.ts
+++ b/packages/api/src/business/processes/titres-activites-relance-send.test.ts
@@ -1,10 +1,11 @@
-import { titresActivitesGet } from '../../database/queries/titres-activites'
+import { titresActivitesGet } from '../../database/queries/titres-activites.js'
 
-import TitresActivites from '../../database/models/titres-activites'
-import { titresActivitesRelanceSend } from './titres-activites-relance-send'
-import { emailsWithTemplateSend } from '../../tools/api-mailjet/emails'
-import { EmailTemplateId } from '../../tools/api-mailjet/types'
+import TitresActivites from '../../database/models/titres-activites.js'
+import { titresActivitesRelanceSend } from './titres-activites-relance-send.js'
+import { emailsWithTemplateSend } from '../../tools/api-mailjet/emails.js'
+import { EmailTemplateId } from '../../tools/api-mailjet/types.js'
 import { vi, describe, expect, test } from 'vitest'
+import { toCaminoDate } from 'camino-common/src/date.js'
 vi.mock('../../database/queries/titres-activites', () => ({
   titresActivitesGet: vi.fn()
 }))
@@ -37,7 +38,7 @@ describe('relance les opérateurs des activités qui vont se fermer automatiquem
       }
     ] as TitresActivites[])
     const titresActivites = await titresActivitesRelanceSend(
-      new Date('2022-03-18')
+      toCaminoDate('2022-03-18')
     )
 
     expect(emailsWithTemplateSendMock).toBeCalledWith(
diff --git a/packages/api/src/business/processes/titres-activites-relance-send.ts b/packages/api/src/business/processes/titres-activites-relance-send.ts
index 5365849ca..1e56c9754 100644
--- a/packages/api/src/business/processes/titres-activites-relance-send.ts
+++ b/packages/api/src/business/processes/titres-activites-relance-send.ts
@@ -1,15 +1,18 @@
-import dateFormat from 'dateformat'
-
-import { titresActivitesGet } from '../../database/queries/titres-activites'
-import { userSuper } from '../../database/user-super'
-import { dateAddDays, dateAddMonths } from '../../tools/date'
-import { emailsWithTemplateSend } from '../../tools/api-mailjet/emails'
-import { activitesUrlGet } from '../utils/urls-get'
-import { EmailTemplateId } from '../../tools/api-mailjet/types'
+import { titresActivitesGet } from '../../database/queries/titres-activites.js'
+import { userSuper } from '../../database/user-super.js'
+import { dateAddDays, dateAddMonths } from '../../tools/date.js'
+import { emailsWithTemplateSend } from '../../tools/api-mailjet/emails.js'
+import { activitesUrlGet } from '../utils/urls-get.js'
+import { EmailTemplateId } from '../../tools/api-mailjet/types.js'
+import {
+  anneePrecedente,
+  getAnnee,
+  getCurrent
+} from 'camino-common/src/date.js'
 
 export const ACTIVITES_DELAI_RELANCE_JOURS = 14
 
-export const titresActivitesRelanceSend = async (aujourdhui = new Date()) => {
+export const titresActivitesRelanceSend = async (aujourdhui = getCurrent()) => {
   console.info()
   console.info('relance des activités des titres…')
 
@@ -26,17 +29,11 @@ export const titresActivitesRelanceSend = async (aujourdhui = new Date()) => {
     userSuper
   )
 
-  const aujourdhuiFormatted = dateFormat(aujourdhui, 'yyyy-mm-dd')
-
-  const dateDelai = dateAddDays(
-    aujourdhuiFormatted,
-    ACTIVITES_DELAI_RELANCE_JOURS
-  )
+  const dateDelai = dateAddDays(aujourdhui, ACTIVITES_DELAI_RELANCE_JOURS)
 
   const titresActivitesRelanceToSend = activites.filter(
     ({ date }) => dateDelai === dateAddMonths(date, 3)
   )
-
   if (titresActivitesRelanceToSend.length) {
     // envoi d’email aux opérateurs pour les relancer ACTIVITES_DELAI_RELANCE_JOURS jours avant la fermeture automatique de l’activité
     const emails = new Set<string>()
@@ -50,7 +47,6 @@ export const titresActivitesRelanceSend = async (aujourdhui = new Date()) => {
         })
       )
     }
-
     if (emails.size) {
       await emailsWithTemplateSend(
         [...emails],
@@ -59,7 +55,7 @@ export const titresActivitesRelanceSend = async (aujourdhui = new Date()) => {
           activitesUrl: activitesUrlGet({
             typesIds,
             statutsIds,
-            annees: [aujourdhui.getFullYear() - 1]
+            annees: [anneePrecedente(getAnnee(aujourdhui))]
           })
         }
       )
diff --git a/packages/api/src/business/processes/titres-activites-statut-ids-update.test.ts b/packages/api/src/business/processes/titres-activites-statut-ids-update.test.ts
index 2bb64c39d..ef9f72682 100644
--- a/packages/api/src/business/processes/titres-activites-statut-ids-update.test.ts
+++ b/packages/api/src/business/processes/titres-activites-statut-ids-update.test.ts
@@ -1,10 +1,10 @@
-import { titresActivitesStatutIdsUpdate } from './titres-activites-statut-ids-update'
-import { titresActivitesGet } from '../../database/queries/titres-activites'
+import { titresActivitesStatutIdsUpdate } from './titres-activites-statut-ids-update.js'
+import { titresActivitesGet } from '../../database/queries/titres-activites.js'
 
 import {
   titresActivitesDelaiDepasse,
   titresActivitesDelaiNonDepasse
-} from './__mocks__/titres-activites-statut-ids-update-activites'
+} from './__mocks__/titres-activites-statut-ids-update-activites.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres-activites', () => ({
   titreActiviteUpdate: vi.fn().mockResolvedValue(true),
diff --git a/packages/api/src/business/processes/titres-activites-statut-ids-update.ts b/packages/api/src/business/processes/titres-activites-statut-ids-update.ts
index 5a50d224e..2d2ea2356 100644
--- a/packages/api/src/business/processes/titres-activites-statut-ids-update.ts
+++ b/packages/api/src/business/processes/titres-activites-statut-ids-update.ts
@@ -1,11 +1,10 @@
-import dateFormat from 'dateformat'
-
 import {
   titreActiviteUpdate,
   titresActivitesGet
-} from '../../database/queries/titres-activites'
-import { titreActiviteStatutIdFind } from '../rules/titre-activite-statut-id-find'
-import { userSuper } from '../../database/user-super'
+} from '../../database/queries/titres-activites.js'
+import { titreActiviteStatutIdFind } from '../rules/titre-activite-statut-id-find.js'
+import { userSuper } from '../../database/user-super.js'
+import { getCurrent } from 'camino-common/src/date.js'
 
 // met à jour le statut des activités d'un titre
 export const titresActivitesStatutIdsUpdate = async () => {
@@ -14,7 +13,7 @@ export const titresActivitesStatutIdsUpdate = async () => {
 
   const titresActivites = await titresActivitesGet({}, {}, userSuper)
 
-  const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd')
+  const aujourdhui = getCurrent()
 
   const titresActivitesUpdated = [] as string[]
   for (const titreActivite of titresActivites) {
diff --git a/packages/api/src/business/processes/titres-activites-update.test.ts b/packages/api/src/business/processes/titres-activites-update.test.ts
index d36456867..4e9c3c0d3 100644
--- a/packages/api/src/business/processes/titres-activites-update.test.ts
+++ b/packages/api/src/business/processes/titres-activites-update.test.ts
@@ -1,23 +1,23 @@
-import { ITitreActivite } from '../../types'
+import { ITitreActivite } from '../../types.js'
 
-import { titresActivitesUpdate } from './titres-activites-update'
-import { titreActiviteTypeCheck } from '../utils/titre-activite-type-check'
-import { anneesBuild } from '../../tools/annees-build'
-import { titresActivitesUpsert } from '../../database/queries/titres-activites'
-import { titresGet } from '../../database/queries/titres'
-import { activitesTypesGet } from '../../database/queries/metas-activites'
-import { titreActivitesBuild } from '../rules/titre-activites-build'
+import { titresActivitesUpdate } from './titres-activites-update.js'
+import { titreActiviteTypeCheck } from '../utils/titre-activite-type-check.js'
+import { anneesBuild } from '../../tools/annees-build.js'
+import { titresActivitesUpsert } from '../../database/queries/titres-activites.js'
+import { titresGet } from '../../database/queries/titres.js'
+import { activitesTypesGet } from '../../database/queries/metas-activites.js'
+import { titreActivitesBuild } from '../rules/titre-activites-build.js'
 
 import {
   titresToutesActivites,
   titreActivitesTypes,
   titresSansActivite
-} from './__mocks__/titres-activites-update-titres'
+} from './__mocks__/titres-activites-update-titres.js'
 import {
   emailsSend,
   emailsWithTemplateSend
-} from '../../tools/api-mailjet/emails'
-import { EmailTemplateId } from '../../tools/api-mailjet/types'
+} from '../../tools/api-mailjet/emails.js'
+import { EmailTemplateId } from '../../tools/api-mailjet/types.js'
 import { vi, afterEach, describe, expect, test } from 'vitest'
 
 vi.mock('../../database/queries/titres', () => ({
diff --git a/packages/api/src/business/processes/titres-activites-update.ts b/packages/api/src/business/processes/titres-activites-update.ts
index ff11f21bf..9fcfc890b 100644
--- a/packages/api/src/business/processes/titres-activites-update.ts
+++ b/packages/api/src/business/processes/titres-activites-update.ts
@@ -1,17 +1,16 @@
-import dateFormat from 'dateformat'
-
-import { ITitreActivite } from '../../types'
-
-import { titreActiviteTypeCheck } from '../utils/titre-activite-type-check'
-import { anneesBuild } from '../../tools/annees-build'
-import { titresActivitesUpsert } from '../../database/queries/titres-activites'
-import { titreActivitesBuild } from '../rules/titre-activites-build'
-import { titresGet } from '../../database/queries/titres'
-import { activitesTypesGet } from '../../database/queries/metas-activites'
-import { userSuper } from '../../database/user-super'
-import { emailsWithTemplateSend } from '../../tools/api-mailjet/emails'
-import { activitesUrlGet } from '../utils/urls-get'
-import { EmailTemplateId } from '../../tools/api-mailjet/types'
+import { ITitreActivite } from '../../types.js'
+
+import { titreActiviteTypeCheck } from '../utils/titre-activite-type-check.js'
+import { anneesBuild } from '../../tools/annees-build.js'
+import { titresActivitesUpsert } from '../../database/queries/titres-activites.js'
+import { titreActivitesBuild } from '../rules/titre-activites-build.js'
+import { titresGet } from '../../database/queries/titres.js'
+import { activitesTypesGet } from '../../database/queries/metas-activites.js'
+import { userSuper } from '../../database/user-super.js'
+import { emailsWithTemplateSend } from '../../tools/api-mailjet/emails.js'
+import { activitesUrlGet } from '../utils/urls-get.js'
+import { EmailTemplateId } from '../../tools/api-mailjet/types.js'
+import { getCurrent } from 'camino-common/src/date.js'
 
 export const titresActivitesUpdate = async (titresIds?: string[]) => {
   console.info()
@@ -43,7 +42,7 @@ export const titresActivitesUpdate = async (titresIds?: string[]) => {
     }
   })
 
-  const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd')
+  const aujourdhui = getCurrent()
 
   const titresActivitesCreated = activitesTypes.reduce(
     (acc: ITitreActivite[], activiteType) => {
diff --git a/packages/api/src/business/processes/titres-contenus-etapes-ids-update.test.ts b/packages/api/src/business/processes/titres-contenus-etapes-ids-update.test.ts
index 634411959..10f7006c9 100644
--- a/packages/api/src/business/processes/titres-contenus-etapes-ids-update.test.ts
+++ b/packages/api/src/business/processes/titres-contenus-etapes-ids-update.test.ts
@@ -1,9 +1,9 @@
-import { ITitreEtape } from '../../types'
+import { ITitreEtape } from '../../types.js'
 
-import { titresContenusEtapesIdsUpdate } from './titres-contenus-etapes-ids-update'
-import { titreContenuTitreEtapeFind } from '../rules/titre-prop-etape-find'
-import { titresGet } from '../../database/queries/titres'
-import Titres from '../../database/models/titres'
+import { titresContenusEtapesIdsUpdate } from './titres-contenus-etapes-ids-update.js'
+import { titreContenuTitreEtapeFind } from '../rules/titre-prop-etape-find.js'
+import { titresGet } from '../../database/queries/titres.js'
+import Titres from '../../database/models/titres.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres', () => ({
   titreUpdate: vi.fn().mockResolvedValue(true),
diff --git a/packages/api/src/business/processes/titres-contenus-etapes-ids-update.ts b/packages/api/src/business/processes/titres-contenus-etapes-ids-update.ts
index 8284368a5..010d183c6 100644
--- a/packages/api/src/business/processes/titres-contenus-etapes-ids-update.ts
+++ b/packages/api/src/business/processes/titres-contenus-etapes-ids-update.ts
@@ -1,7 +1,7 @@
-import { titresGet, titreUpdate } from '../../database/queries/titres'
-import { contenusTitreEtapesIdsFind } from '../utils/props-titre-etapes-ids-find'
-import { objectsDiffer } from '../../tools/index'
-import { userSuper } from '../../database/user-super'
+import { titresGet, titreUpdate } from '../../database/queries/titres.js'
+import { contenusTitreEtapesIdsFind } from '../utils/props-titre-etapes-ids-find.js'
+import { objectsDiffer } from '../../tools/index.js'
+import { userSuper } from '../../database/user-super.js'
 
 export const titresContenusEtapesIdsUpdate = async (titresIds?: string[]) => {
   console.info()
diff --git a/packages/api/src/business/processes/titres-coordonnees-update.test.ts b/packages/api/src/business/processes/titres-coordonnees-update.test.ts
index 1a0795786..9cb7de24b 100644
--- a/packages/api/src/business/processes/titres-coordonnees-update.test.ts
+++ b/packages/api/src/business/processes/titres-coordonnees-update.test.ts
@@ -1,7 +1,7 @@
-import { titreCoordonneesFind } from '../utils/titre-coordonnees-find'
-import { titresGet } from '../../database/queries/titres'
-import Titres from '../../database/models/titres'
-import { titresCoordonneesUpdate } from './titres-coordonnees-update'
+import { titreCoordonneesFind } from '../utils/titre-coordonnees-find.js'
+import { titresGet } from '../../database/queries/titres.js'
+import Titres from '../../database/models/titres.js'
+import { titresCoordonneesUpdate } from './titres-coordonnees-update.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres', () => ({
   titreUpdate: vi.fn().mockResolvedValue(true),
diff --git a/packages/api/src/business/processes/titres-coordonnees-update.ts b/packages/api/src/business/processes/titres-coordonnees-update.ts
index e35be20f0..c2cdef3dd 100644
--- a/packages/api/src/business/processes/titres-coordonnees-update.ts
+++ b/packages/api/src/business/processes/titres-coordonnees-update.ts
@@ -1,6 +1,6 @@
-import { titresGet, titreUpdate } from '../../database/queries/titres'
-import { userSuper } from '../../database/user-super'
-import { titreCoordonneesFind } from '../utils/titre-coordonnees-find'
+import { titresGet, titreUpdate } from '../../database/queries/titres.js'
+import { userSuper } from '../../database/user-super.js'
+import { titreCoordonneesFind } from '../utils/titre-coordonnees-find.js'
 
 export const titresCoordonneesUpdate = async (titresIds?: string[]) => {
   console.info()
diff --git a/packages/api/src/business/processes/titres-dates-update.test.ts b/packages/api/src/business/processes/titres-dates-update.test.ts
index b39f5da73..c9390ca21 100644
--- a/packages/api/src/business/processes/titres-dates-update.test.ts
+++ b/packages/api/src/business/processes/titres-dates-update.test.ts
@@ -1,10 +1,10 @@
-import { titresDatesUpdate } from './titres-dates-update'
-import { titreDateFinFind } from '../rules/titre-date-fin-find'
-import { titreDateDebutFind } from '../rules/titre-date-debut-find'
-import { titreDateDemandeFind } from '../rules/titre-date-demande-find'
-import { titresGet } from '../../database/queries/titres'
-import Titres from '../../database/models/titres'
-import { toCaminoDate } from 'camino-common/src/date'
+import { titresDatesUpdate } from './titres-dates-update.js'
+import { titreDateFinFind } from '../rules/titre-date-fin-find.js'
+import { titreDateDebutFind } from '../rules/titre-date-debut-find.js'
+import { titreDateDemandeFind } from '../rules/titre-date-demande-find.js'
+import { titresGet } from '../../database/queries/titres.js'
+import Titres from '../../database/models/titres.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres', () => ({
   titreUpdate: vi.fn().mockResolvedValue(true),
diff --git a/packages/api/src/business/processes/titres-dates-update.ts b/packages/api/src/business/processes/titres-dates-update.ts
index 5445930a2..336395463 100644
--- a/packages/api/src/business/processes/titres-dates-update.ts
+++ b/packages/api/src/business/processes/titres-dates-update.ts
@@ -1,9 +1,9 @@
-import { titresGet, titreUpdate } from '../../database/queries/titres'
-import { titreDateFinFind } from '../rules/titre-date-fin-find'
-import { titreDateDebutFind } from '../rules/titre-date-debut-find'
-import { titreDateDemandeFind } from '../rules/titre-date-demande-find'
-import { userSuper } from '../../database/user-super'
-import { DBTitre } from '../../database/models/titres'
+import { titresGet, titreUpdate } from '../../database/queries/titres.js'
+import { titreDateFinFind } from '../rules/titre-date-fin-find.js'
+import { titreDateDebutFind } from '../rules/titre-date-debut-find.js'
+import { titreDateDemandeFind } from '../rules/titre-date-demande-find.js'
+import { userSuper } from '../../database/user-super.js'
+import { DBTitre } from '../../database/models/titres.js'
 
 export const titresDatesUpdate = async (titresIds?: string[]) => {
   console.info()
diff --git a/packages/api/src/business/processes/titres-demarches-depot-create.test.ts b/packages/api/src/business/processes/titres-demarches-depot-create.test.ts
index 8a03f8318..d49e29f02 100644
--- a/packages/api/src/business/processes/titres-demarches-depot-create.test.ts
+++ b/packages/api/src/business/processes/titres-demarches-depot-create.test.ts
@@ -1,5 +1,5 @@
-import type { ITitre, ITitreEtape, ITitreDemarche } from '../../types'
-import { titreDemarcheDepotCheck } from './titres-demarches-depot-create'
+import type { ITitre, ITitreEtape, ITitreDemarche } from '../../types.js'
+import { titreDemarcheDepotCheck } from './titres-demarches-depot-create.js'
 
 import { describe, expect, test } from 'vitest'
 
diff --git a/packages/api/src/business/processes/titres-demarches-depot-create.ts b/packages/api/src/business/processes/titres-demarches-depot-create.ts
index c22a14e48..01be91255 100644
--- a/packages/api/src/business/processes/titres-demarches-depot-create.ts
+++ b/packages/api/src/business/processes/titres-demarches-depot-create.ts
@@ -1,18 +1,22 @@
-import type { ITitreDemarche, ITitreEntreprise, ITitreEtape } from '../../types'
-
-import { titreEtapeUpsert } from '../../database/queries/titres-etapes'
-import { titreDemarcheGet } from '../../database/queries/titres-demarches'
-import { userSuper } from '../../database/user-super'
-import dateFormat from 'dateformat'
-import titreEtapeUpdateTask from '../titre-etape-update'
-import { titreEtapeAdministrationsEmailsSend } from '../../api/graphql/resolvers/_titre-etape-email'
-import { demarcheDefinitionFind } from '../rules-demarches/definitions'
-import { titreUrlGet } from '../utils/urls-get'
-import { emailsWithTemplateSend } from '../../tools/api-mailjet/emails'
+import type {
+  ITitreDemarche,
+  ITitreEntreprise,
+  ITitreEtape
+} from '../../types.js'
+
+import { titreEtapeUpsert } from '../../database/queries/titres-etapes.js'
+import { titreDemarcheGet } from '../../database/queries/titres-demarches.js'
+import { userSuper } from '../../database/user-super.js'
+import titreEtapeUpdateTask from '../titre-etape-update.js'
+import { titreEtapeAdministrationsEmailsSend } from '../../api/graphql/resolvers/_titre-etape-email.js'
+import { demarcheDefinitionFind } from '../rules-demarches/definitions.js'
+import { titreUrlGet } from '../utils/urls-get.js'
+import { emailsWithTemplateSend } from '../../tools/api-mailjet/emails.js'
 import {
   EmailTemplateId,
   EmailAdministration
-} from '../../tools/api-mailjet/types'
+} from '../../tools/api-mailjet/types.js'
+import { getCurrent } from 'camino-common/src/date.js'
 
 const emailConfirmationDepotSend = async (
   emails: string[],
@@ -94,7 +98,7 @@ export const titreEtapeDepotCreate = async (titreDemarche: ITitreDemarche) => {
     titreDemarcheId: titreDemarche.id,
     typeId: 'mdp',
     statutId: 'fai',
-    date: dateFormat(new Date(), 'yyyy-mm-dd')
+    date: getCurrent()
   } as ITitreEtape
 
   titreEtapeDepot = await titreEtapeUpsert(
diff --git a/packages/api/src/business/processes/titres-demarches-ordre-update.test.ts b/packages/api/src/business/processes/titres-demarches-ordre-update.test.ts
index e278def6a..8417a2b52 100644
--- a/packages/api/src/business/processes/titres-demarches-ordre-update.test.ts
+++ b/packages/api/src/business/processes/titres-demarches-ordre-update.test.ts
@@ -1,10 +1,10 @@
-import { titresDemarchesOrdreUpdate } from './titres-demarches-ordre-update'
-import { titresGet } from '../../database/queries/titres'
+import { titresDemarchesOrdreUpdate } from './titres-demarches-ordre-update.js'
+import { titresGet } from '../../database/queries/titres.js'
 
 import {
   titresDemarchesDesordonnees,
   titresDemarchesOrdonnees
-} from './__mocks__/titres-demarches-ordre-update-demarches'
+} from './__mocks__/titres-demarches-ordre-update-demarches.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres', () => ({
   titresGet: vi.fn()
diff --git a/packages/api/src/business/processes/titres-demarches-ordre-update.ts b/packages/api/src/business/processes/titres-demarches-ordre-update.ts
index 31832560b..d5f346fc3 100644
--- a/packages/api/src/business/processes/titres-demarches-ordre-update.ts
+++ b/packages/api/src/business/processes/titres-demarches-ordre-update.ts
@@ -1,9 +1,9 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import { titreDemarcheUpdate } from '../../database/queries/titres-demarches'
-import { titresGet } from '../../database/queries/titres'
-import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc'
-import { userSuper } from '../../database/user-super'
+import { titreDemarcheUpdate } from '../../database/queries/titres-demarches.js'
+import { titresGet } from '../../database/queries/titres.js'
+import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc.js'
+import { userSuper } from '../../database/user-super.js'
 
 export const titresDemarchesOrdreUpdate = async (titresIds?: string[]) => {
   console.info()
diff --git a/packages/api/src/business/processes/titres-demarches-public-update.test.ts b/packages/api/src/business/processes/titres-demarches-public-update.test.ts
index 345adfb7a..888940f1c 100644
--- a/packages/api/src/business/processes/titres-demarches-public-update.test.ts
+++ b/packages/api/src/business/processes/titres-demarches-public-update.test.ts
@@ -1,10 +1,10 @@
-import { titresDemarchesPublicUpdate } from './titres-demarches-public-update'
-import { titresGet } from '../../database/queries/titres'
+import { titresDemarchesPublicUpdate } from './titres-demarches-public-update.js'
+import { titresGet } from '../../database/queries/titres.js'
 
 import {
   titresDemarchesPublicModifie,
   titresDemarchesPublicIdentique
-} from './__mocks__/titres-demarches-public-update-demarches'
+} from './__mocks__/titres-demarches-public-update-demarches.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres', () => ({
   titresGet: vi.fn()
diff --git a/packages/api/src/business/processes/titres-demarches-public-update.ts b/packages/api/src/business/processes/titres-demarches-public-update.ts
index efb753b76..226b7ba9b 100644
--- a/packages/api/src/business/processes/titres-demarches-public-update.ts
+++ b/packages/api/src/business/processes/titres-demarches-public-update.ts
@@ -1,8 +1,8 @@
-import { titreDemarcheUpdate } from '../../database/queries/titres-demarches'
-import { titreDemarchePublicFind } from '../rules/titre-demarche-public-find'
-import { titresGet } from '../../database/queries/titres'
-import { userSuper } from '../../database/user-super'
-import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort'
+import { titreDemarcheUpdate } from '../../database/queries/titres-demarches.js'
+import { titreDemarchePublicFind } from '../rules/titre-demarche-public-find.js'
+import { titresGet } from '../../database/queries/titres.js'
+import { userSuper } from '../../database/user-super.js'
+import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort.js'
 
 type ITitreDemarchePatch = {
   publicLecture: boolean
diff --git a/packages/api/src/business/processes/titres-demarches-statut-ids-update.test.ts b/packages/api/src/business/processes/titres-demarches-statut-ids-update.test.ts
index b59ae72d1..f7b748c5b 100644
--- a/packages/api/src/business/processes/titres-demarches-statut-ids-update.test.ts
+++ b/packages/api/src/business/processes/titres-demarches-statut-ids-update.test.ts
@@ -1,11 +1,11 @@
-import { titresDemarchesStatutIdUpdate } from './titres-demarches-statut-ids-update'
-import { titresGet } from '../../database/queries/titres'
+import { titresDemarchesStatutIdUpdate } from './titres-demarches-statut-ids-update.js'
+import { titresGet } from '../../database/queries/titres.js'
 
 import {
   titresDemarchesStatutModifie,
   titresDemarchesStatutIdentique,
   titresDemarchesSansEtape
-} from './__mocks__/titres-demarches-statut-ids-update-demarches'
+} from './__mocks__/titres-demarches-statut-ids-update-demarches.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres-demarches', () => ({
   titreDemarcheUpdate: vi.fn().mockResolvedValue(true)
diff --git a/packages/api/src/business/processes/titres-demarches-statut-ids-update.ts b/packages/api/src/business/processes/titres-demarches-statut-ids-update.ts
index d505dcfdd..d95a50dcd 100644
--- a/packages/api/src/business/processes/titres-demarches-statut-ids-update.ts
+++ b/packages/api/src/business/processes/titres-demarches-statut-ids-update.ts
@@ -1,8 +1,8 @@
-import { titresGet } from '../../database/queries/titres'
-import { titreDemarcheUpdate } from '../../database/queries/titres-demarches'
-import { userSuper } from '../../database/user-super'
-import { titreDemarcheStatutIdFind } from '../rules/titre-demarche-statut-id-find'
-import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort'
+import { titresGet } from '../../database/queries/titres.js'
+import { titreDemarcheUpdate } from '../../database/queries/titres-demarches.js'
+import { userSuper } from '../../database/user-super.js'
+import { titreDemarcheStatutIdFind } from '../rules/titre-demarche-statut-id-find.js'
+import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort.js'
 
 // met à jour le statut des démarches d'un titre
 export const titresDemarchesStatutIdUpdate = async (titresIds?: string[]) => {
diff --git a/packages/api/src/business/processes/titres-etapes-administrations-locales-update.test.ts b/packages/api/src/business/processes/titres-etapes-administrations-locales-update.test.ts
index a7481d1e5..a637419fb 100644
--- a/packages/api/src/business/processes/titres-etapes-administrations-locales-update.test.ts
+++ b/packages/api/src/business/processes/titres-etapes-administrations-locales-update.test.ts
@@ -1,14 +1,14 @@
-import { titresEtapesAdministrationsLocalesUpdate } from './titres-etapes-administrations-locales-update'
-import { titresEtapesGet } from '../../database/queries/titres-etapes'
+import { titresEtapesAdministrationsLocalesUpdate } from './titres-etapes-administrations-locales-update.js'
+import { titresEtapesGet } from '../../database/queries/titres-etapes.js'
 
 import {
   titresEtapesCommunesVides,
   titresEtapesCommunesMemeCommune
-} from './__mocks__/titres-etapes-administrations-locales-update-etapes'
-import { ICommune, ITitreEtape } from '../../types'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
-import { toCaminoDate } from 'camino-common/src/date'
+} from './__mocks__/titres-etapes-administrations-locales-update-etapes.js'
+import { ICommune, ITitreEtape } from '../../types.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres-etapes', () => ({
   titresEtapesGet: vi.fn()
diff --git a/packages/api/src/business/processes/titres-etapes-administrations-locales-update.ts b/packages/api/src/business/processes/titres-etapes-administrations-locales-update.ts
index 95cc6b66b..a15821fa2 100644
--- a/packages/api/src/business/processes/titres-etapes-administrations-locales-update.ts
+++ b/packages/api/src/business/processes/titres-etapes-administrations-locales-update.ts
@@ -1,21 +1,21 @@
-import { IAdministration, ITitreEtape, ICommune } from '../../types'
+import { IAdministration, ITitreEtape, ICommune } from '../../types.js'
 
-import { titresEtapesGet } from '../../database/queries/titres-etapes'
-import { userSuper } from '../../database/user-super'
+import { titresEtapesGet } from '../../database/queries/titres-etapes.js'
+import { userSuper } from '../../database/user-super.js'
 import {
   DepartementId,
   Departements
-} from 'camino-common/src/static/departement'
+} from 'camino-common/src/static/departement.js'
 import {
   getDepartementsBySecteurs,
   SecteursMaritimes
-} from 'camino-common/src/static/facades'
-import { onlyUnique } from 'camino-common/src/typescript-tools'
+} from 'camino-common/src/static/facades.js'
+import { onlyUnique } from 'camino-common/src/typescript-tools.js'
 import {
   AdministrationId,
   sortedAdministrations
-} from 'camino-common/src/static/administrations'
-import { knex } from '../../knex'
+} from 'camino-common/src/static/administrations.js'
+import { knex } from '../../knex.js'
 
 interface ITitreEtapeAdministrationLocale {
   titreEtapeAdministrationsLocalesOld: AdministrationId[]
diff --git a/packages/api/src/business/processes/titres-etapes-areas-update.test.integration.ts b/packages/api/src/business/processes/titres-etapes-areas-update.test.integration.ts
index 4b1d5ec08..3388460c2 100644
--- a/packages/api/src/business/processes/titres-etapes-areas-update.test.integration.ts
+++ b/packages/api/src/business/processes/titres-etapes-areas-update.test.integration.ts
@@ -1,23 +1,23 @@
-import { dbManager } from '../../../tests/db-manager'
+import { dbManager } from '../../../tests/db-manager.js'
 import { Knex } from 'knex'
-import Titres from '../../database/models/titres'
-import TitresDemarches from '../../database/models/titres-demarches'
-import TitresEtapes from '../../database/models/titres-etapes'
-import TitresPoints from '../../database/models/titres-points'
-import { titresEtapesAreasUpdate } from './titres-etapes-areas-update'
-import TitresCommunes from '../../database/models/titres-communes'
+import Titres from '../../database/models/titres.js'
+import TitresDemarches from '../../database/models/titres-demarches.js'
+import TitresEtapes from '../../database/models/titres-etapes.js'
+import TitresPoints from '../../database/models/titres-points.js'
+import { titresEtapesAreasUpdate } from './titres-etapes-areas-update.js'
+import TitresCommunes from '../../database/models/titres-communes.js'
 import {
   BaisieuxPerimetre,
   foret2BranchesPerimetre,
   foretReginaPerimetre,
   SaintEliePerimetre,
   SinnamaryPerimetre
-} from './__mocks__/titres-etapes-areas-update'
-import TitresForets from '../../database/models/titres-forets'
-import TitresSDOMZones from '../../database/models/titres--sdom-zones'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { SDOMZoneIds } from 'camino-common/src/static/sdom'
-import { toCaminoDate } from 'camino-common/src/date'
+} from './__mocks__/titres-etapes-areas-update.js'
+import TitresForets from '../../database/models/titres-forets.js'
+import TitresSDOMZones from '../../database/models/titres--sdom-zones.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { SDOMZoneIds } from 'camino-common/src/static/sdom.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { vi, beforeAll, afterAll, describe, test, expect } from 'vitest'
 console.info = vi.fn()
 console.error = vi.fn()
diff --git a/packages/api/src/business/processes/titres-etapes-areas-update.ts b/packages/api/src/business/processes/titres-etapes-areas-update.ts
index ac13b6345..595398295 100644
--- a/packages/api/src/business/processes/titres-etapes-areas-update.ts
+++ b/packages/api/src/business/processes/titres-etapes-areas-update.ts
@@ -4,19 +4,19 @@ import {
   geojsonIntersectsSecteursMaritime,
   geojsonIntersectsForets,
   geojsonIntersectsSDOM
-} from '../../tools/geojson'
-import { titresEtapesGet } from '../../database/queries/titres-etapes'
-import TitresCommunes from '../../database/models/titres-communes'
-import TitresForets from '../../database/models/titres-forets'
-import { userSuper } from '../../database/user-super'
-import TitresSDOMZones from '../../database/models/titres--sdom-zones'
-import { Feature } from '@turf/helpers'
-import TitresEtapes from '../../database/models/titres-etapes'
+} from '../../tools/geojson.js'
+import { titresEtapesGet } from '../../database/queries/titres-etapes.js'
+import TitresCommunes from '../../database/models/titres-communes.js'
+import TitresForets from '../../database/models/titres-forets.js'
+import { userSuper } from '../../database/user-super.js'
+import TitresSDOMZones from '../../database/models/titres--sdom-zones.js'
+import { Feature } from 'geojson'
+import TitresEtapes from '../../database/models/titres-etapes.js'
 import {
   getSecteurMaritime,
   SecteursMaritimes
-} from 'camino-common/src/static/facades'
-import { knex } from '../../knex'
+} from 'camino-common/src/static/facades.js'
+import { knex } from '../../knex.js'
 
 /**
  * Met à jour tous les territoires d’une liste d’étapes
diff --git a/packages/api/src/business/processes/titres-etapes-heritage-contenu-update.ts b/packages/api/src/business/processes/titres-etapes-heritage-contenu-update.ts
index d4d93492c..3f9161c39 100644
--- a/packages/api/src/business/processes/titres-etapes-heritage-contenu-update.ts
+++ b/packages/api/src/business/processes/titres-etapes-heritage-contenu-update.ts
@@ -1,16 +1,16 @@
-import { ITitreEtape, IUtilisateur } from '../../types'
+import { ITitreEtape, IUtilisateur } from '../../types.js'
 
-import { titreEtapeUpdate } from '../../database/queries/titres-etapes'
-import { titresDemarchesGet } from '../../database/queries/titres-demarches'
+import { titreEtapeUpdate } from '../../database/queries/titres-etapes.js'
+import { titresDemarchesGet } from '../../database/queries/titres-demarches.js'
 import {
   etapeSectionsDictionaryBuild,
   titreEtapeHeritageContenuFind
-} from '../utils/titre-etape-heritage-contenu-find'
-import { userSuper } from '../../database/user-super'
+} from '../utils/titre-etape-heritage-contenu-find.js'
+import { userSuper } from '../../database/user-super.js'
 import {
   titreEtapesSortAscByOrdre,
   titreEtapesSortDescByOrdre
-} from '../utils/titre-etapes-sort'
+} from '../utils/titre-etapes-sort.js'
 
 export const titresEtapesHeritageContenuUpdate = async (
   user: IUtilisateur,
diff --git a/packages/api/src/business/processes/titres-etapes-heritage-props-update.ts b/packages/api/src/business/processes/titres-etapes-heritage-props-update.ts
index f70e43556..d427979eb 100644
--- a/packages/api/src/business/processes/titres-etapes-heritage-props-update.ts
+++ b/packages/api/src/business/processes/titres-etapes-heritage-props-update.ts
@@ -1,10 +1,10 @@
-import { ITitreEtape, IUtilisateur } from '../../types'
+import { ITitreEtape, IUtilisateur } from '../../types.js'
 
-import { titreEtapeUpsert } from '../../database/queries/titres-etapes'
-import { titresDemarchesGet } from '../../database/queries/titres-demarches'
-import { titreEtapeHeritagePropsFind } from '../utils/titre-etape-heritage-props-find'
-import { userSuper } from '../../database/user-super'
-import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort'
+import { titreEtapeUpsert } from '../../database/queries/titres-etapes.js'
+import { titresDemarchesGet } from '../../database/queries/titres-demarches.js'
+import { titreEtapeHeritagePropsFind } from '../utils/titre-etape-heritage-props-find.js'
+import { userSuper } from '../../database/user-super.js'
+import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort.js'
 
 export const titresEtapesHeritagePropsUpdate = async (
   user: IUtilisateur,
diff --git a/packages/api/src/business/processes/titres-etapes-ordre-update.test.ts b/packages/api/src/business/processes/titres-etapes-ordre-update.test.ts
index c446433ec..986195c60 100644
--- a/packages/api/src/business/processes/titres-etapes-ordre-update.test.ts
+++ b/packages/api/src/business/processes/titres-etapes-ordre-update.test.ts
@@ -1,13 +1,13 @@
-import { titresEtapesOrdreUpdate } from './titres-etapes-ordre-update'
-import { titreEtapeUpdate } from '../../database/queries/titres-etapes'
-import { titresDemarchesGet } from '../../database/queries/titres-demarches'
+import { titresEtapesOrdreUpdate } from './titres-etapes-ordre-update.js'
+import { titreEtapeUpdate } from '../../database/queries/titres-etapes.js'
+import { titresDemarchesGet } from '../../database/queries/titres-demarches.js'
 
 import {
   titresDemarchesEtapes,
   titresDemarchesEtapesVides
-} from './__mocks__/titres-etapes-ordre-update-demarches'
-import TitresDemarches from '../../database/models/titres-demarches'
-import { userSuper } from '../../database/user-super'
+} from './__mocks__/titres-etapes-ordre-update-demarches.js'
+import TitresDemarches from '../../database/models/titres-demarches.js'
+import { userSuper } from '../../database/user-super.js'
 import { vi, afterEach, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres-etapes', () => ({
   titreEtapeUpdate: vi.fn().mockResolvedValue(true)
diff --git a/packages/api/src/business/processes/titres-etapes-ordre-update.ts b/packages/api/src/business/processes/titres-etapes-ordre-update.ts
index dd057a775..b635ca0fe 100644
--- a/packages/api/src/business/processes/titres-etapes-ordre-update.ts
+++ b/packages/api/src/business/processes/titres-etapes-ordre-update.ts
@@ -1,9 +1,9 @@
-import { IUtilisateur } from '../../types'
+import { IUtilisateur } from '../../types.js'
 
-import { titreEtapeUpdate } from '../../database/queries/titres-etapes'
-import { titreEtapesSortAscByDate } from '../utils/titre-etapes-sort'
-import { titresDemarchesGet } from '../../database/queries/titres-demarches'
-import { userSuper } from '../../database/user-super'
+import { titreEtapeUpdate } from '../../database/queries/titres-etapes.js'
+import { titreEtapesSortAscByDate } from '../utils/titre-etapes-sort.js'
+import { titresDemarchesGet } from '../../database/queries/titres-demarches.js'
+import { userSuper } from '../../database/user-super.js'
 
 export const titresEtapesOrdreUpdate = async (
   user: IUtilisateur,
diff --git a/packages/api/src/business/processes/titres-phases-update.test.ts b/packages/api/src/business/processes/titres-phases-update.test.ts
index 148a117d0..69cf863c2 100644
--- a/packages/api/src/business/processes/titres-phases-update.test.ts
+++ b/packages/api/src/business/processes/titres-phases-update.test.ts
@@ -1,9 +1,9 @@
-import { titresPhasesUpdate } from './titres-phases-update'
+import { titresPhasesUpdate } from './titres-phases-update.js'
 import {
   titrePhasesUpsert,
   titrePhasesDelete
-} from '../../database/queries/titres-phases'
-import { titresGet } from '../../database/queries/titres'
+} from '../../database/queries/titres-phases.js'
+import { titresGet } from '../../database/queries/titres.js'
 
 import {
   titresSansPhase,
@@ -12,7 +12,7 @@ import {
   titresUnePhaseSansChangement,
   titresUnePhaseMiseAJour,
   titrePhase
-} from './__mocks__/titres-phases-update-titres'
+} from './__mocks__/titres-phases-update-titres.js'
 import { vi, afterEach, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres-phases', () => ({
   titrePhasesUpsert: vi.fn().mockResolvedValue(true),
diff --git a/packages/api/src/business/processes/titres-phases-update.ts b/packages/api/src/business/processes/titres-phases-update.ts
index e129b89f6..2f8308b65 100644
--- a/packages/api/src/business/processes/titres-phases-update.ts
+++ b/packages/api/src/business/processes/titres-phases-update.ts
@@ -1,13 +1,13 @@
-import { ITitrePhase } from '../../types'
-import dateFormat from 'dateformat'
+import { ITitrePhase } from '../../types.js'
 
 import {
   titrePhasesUpsert,
   titrePhasesDelete
-} from '../../database/queries/titres-phases'
-import { titrePhasesFind } from '../rules/titre-phases-find'
-import { titresGet } from '../../database/queries/titres'
-import { userSuper } from '../../database/user-super'
+} from '../../database/queries/titres-phases.js'
+import { titrePhasesFind } from '../rules/titre-phases-find.js'
+import { titresGet } from '../../database/queries/titres.js'
+import { userSuper } from '../../database/user-super.js'
+import { getCurrent } from 'camino-common/src/date.js'
 
 // retourne une phase parmi les titrePhases en fonction de son id
 const titrePhaseEqualFind = (
@@ -100,7 +100,7 @@ export const titresPhasesUpdate = async (titresIds?: string[]) => {
     userSuper
   )
 
-  const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd')
+  const aujourdhui = getCurrent()
   const titresPhasesIdsUpdated = []
   const titresPhasesIdsDeleted = []
 
diff --git a/packages/api/src/business/processes/titres-points-references-create.test.ts b/packages/api/src/business/processes/titres-points-references-create.test.ts
index 85716ca0b..6b86ac2d2 100644
--- a/packages/api/src/business/processes/titres-points-references-create.test.ts
+++ b/packages/api/src/business/processes/titres-points-references-create.test.ts
@@ -1,9 +1,9 @@
-import { titresPointsReferencesCreate } from './titres-points-references-create'
+import { titresPointsReferencesCreate } from './titres-points-references-create.js'
 import {
   titresPointsGet,
   titrePointReferenceCreate
-} from '../../database/queries/titres-points'
-import TitresPoints from '../../database/models/titres-points'
+} from '../../database/queries/titres-points.js'
+import TitresPoints from '../../database/models/titres-points.js'
 import { vi, afterEach, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres-points', () => ({
   titrePointReferenceCreate: vi.fn().mockResolvedValue(true),
diff --git a/packages/api/src/business/processes/titres-points-references-create.ts b/packages/api/src/business/processes/titres-points-references-create.ts
index 8eac3d163..1b6d790bf 100644
--- a/packages/api/src/business/processes/titres-points-references-create.ts
+++ b/packages/api/src/business/processes/titres-points-references-create.ts
@@ -1,9 +1,9 @@
-import { ITitrePoint, ITitrePointReference } from '../../types'
+import { ITitrePoint, ITitrePointReference } from '../../types.js'
 
 import {
   titrePointReferenceCreate,
   titresPointsGet
-} from '../../database/queries/titres-points'
+} from '../../database/queries/titres-points.js'
 
 const titreEtapePointsReferencesNewFind = (titrePoints: ITitrePoint[]) =>
   titrePoints.reduce((acc: ITitrePointReference[], titrePoint) => {
diff --git a/packages/api/src/business/processes/titres-props-etapes-ids-update.test.ts b/packages/api/src/business/processes/titres-props-etapes-ids-update.test.ts
index 8d7895e4e..e698a3cf7 100644
--- a/packages/api/src/business/processes/titres-props-etapes-ids-update.test.ts
+++ b/packages/api/src/business/processes/titres-props-etapes-ids-update.test.ts
@@ -1,9 +1,9 @@
-import { ITitreEtape } from '../../types'
+import { ITitreEtape } from '../../types.js'
 
-import { titresPropsEtapesIdsUpdate } from './titres-props-etapes-ids-update'
-import { titrePropTitreEtapeFind } from '../rules/titre-prop-etape-find'
-import { titresGet } from '../../database/queries/titres'
-import Titres from '../../database/models/titres'
+import { titresPropsEtapesIdsUpdate } from './titres-props-etapes-ids-update.js'
+import { titrePropTitreEtapeFind } from '../rules/titre-prop-etape-find.js'
+import { titresGet } from '../../database/queries/titres.js'
+import Titres from '../../database/models/titres.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres', () => ({
   titreUpdate: vi.fn().mockResolvedValue(true),
diff --git a/packages/api/src/business/processes/titres-props-etapes-ids-update.ts b/packages/api/src/business/processes/titres-props-etapes-ids-update.ts
index 639a2e738..fec780da4 100644
--- a/packages/api/src/business/processes/titres-props-etapes-ids-update.ts
+++ b/packages/api/src/business/processes/titres-props-etapes-ids-update.ts
@@ -1,9 +1,9 @@
-import { IPropsTitreEtapesIds, propsTitreEtapeIdKeys } from '../../types'
+import { IPropsTitreEtapesIds, propsTitreEtapeIdKeys } from '../../types.js'
 
-import { titresGet, titreUpdate } from '../../database/queries/titres'
-import { titrePropTitreEtapeFind } from '../rules/titre-prop-etape-find'
-import { objectsDiffer } from '../../tools/index'
-import { userSuper } from '../../database/user-super'
+import { titresGet, titreUpdate } from '../../database/queries/titres.js'
+import { titrePropTitreEtapeFind } from '../rules/titre-prop-etape-find.js'
+import { objectsDiffer } from '../../tools/index.js'
+import { userSuper } from '../../database/user-super.js'
 
 export const titresPropsEtapesIdsUpdate = async (titresIds?: string[]) => {
   console.info()
diff --git a/packages/api/src/business/processes/titres-public-update.test.ts b/packages/api/src/business/processes/titres-public-update.test.ts
index 53d45b66c..1fe0e1cf6 100644
--- a/packages/api/src/business/processes/titres-public-update.test.ts
+++ b/packages/api/src/business/processes/titres-public-update.test.ts
@@ -1,10 +1,10 @@
-import { titresPublicUpdate } from './titres-public-update'
-import { titresGet } from '../../database/queries/titres'
+import { titresPublicUpdate } from './titres-public-update.js'
+import { titresGet } from '../../database/queries/titres.js'
 
 import {
   titresPublicModifie,
   titresPublicIdentique
-} from './__mocks__/titres-public-update-titres'
+} from './__mocks__/titres-public-update-titres.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres', () => ({
   __esModule: true,
diff --git a/packages/api/src/business/processes/titres-public-update.ts b/packages/api/src/business/processes/titres-public-update.ts
index 8fb96c076..5de48def9 100644
--- a/packages/api/src/business/processes/titres-public-update.ts
+++ b/packages/api/src/business/processes/titres-public-update.ts
@@ -1,6 +1,6 @@
-import { titrePublicFind } from 'camino-common/src/static/titresTypesTypes_domaine_titresStatuts'
-import { titresGet, titreUpdate } from '../../database/queries/titres'
-import { userSuper } from '../../database/user-super'
+import { titrePublicFind } from 'camino-common/src/static/titresTypesTypes_domaine_titresStatuts.js'
+import { titresGet, titreUpdate } from '../../database/queries/titres.js'
+import { userSuper } from '../../database/user-super.js'
 
 type ITitrePatch = {
   publicLecture: boolean
diff --git a/packages/api/src/business/processes/titres-slugs-update.test.ts b/packages/api/src/business/processes/titres-slugs-update.test.ts
index ffd385da8..887c7a7c1 100644
--- a/packages/api/src/business/processes/titres-slugs-update.test.ts
+++ b/packages/api/src/business/processes/titres-slugs-update.test.ts
@@ -1,8 +1,8 @@
-import Titres from '../../database/models/titres'
-import { titresSlugsUpdate } from './titres-slugs-update'
+import Titres from '../../database/models/titres.js'
+import { titresSlugsUpdate } from './titres-slugs-update.js'
 
-import { titreSlugAndRelationsUpdate } from '../utils/titre-slug-and-relations-update'
-import { titresGet } from '../../database/queries/titres'
+import { titreSlugAndRelationsUpdate } from '../utils/titre-slug-and-relations-update.js'
+import { titresGet } from '../../database/queries/titres.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../utils/titre-slug-and-relations-update', () => ({
   __esModule: true,
diff --git a/packages/api/src/business/processes/titres-slugs-update.ts b/packages/api/src/business/processes/titres-slugs-update.ts
index 2dbb0e26d..2284fabf5 100644
--- a/packages/api/src/business/processes/titres-slugs-update.ts
+++ b/packages/api/src/business/processes/titres-slugs-update.ts
@@ -1,9 +1,9 @@
-import { Index, ITitre } from '../../types'
+import { Index, ITitre } from '../../types.js'
 
-import { titresGet } from '../../database/queries/titres'
-import { userSuper } from '../../database/user-super'
+import { titresGet } from '../../database/queries/titres.js'
+import { userSuper } from '../../database/user-super.js'
 
-import { titreSlugAndRelationsUpdate } from '../utils/titre-slug-and-relations-update'
+import { titreSlugAndRelationsUpdate } from '../utils/titre-slug-and-relations-update.js'
 
 // met à jour les slugs de titre
 const titreSlugsUpdate = async (titre: ITitre) => {
diff --git a/packages/api/src/business/processes/titres-statut-ids-update.test.ts b/packages/api/src/business/processes/titres-statut-ids-update.test.ts
index 39905e591..769f3c43a 100644
--- a/packages/api/src/business/processes/titres-statut-ids-update.test.ts
+++ b/packages/api/src/business/processes/titres-statut-ids-update.test.ts
@@ -1,10 +1,10 @@
-import { titresStatutIdsUpdate } from './titres-statut-ids-update'
-import { titresGet } from '../../database/queries/titres'
+import { titresStatutIdsUpdate } from './titres-statut-ids-update.js'
+import { titresGet } from '../../database/queries/titres.js'
 
 import {
   titresValideStatutIdAJour,
   titresEchuStatutIdObselete
-} from './__mocks__/titres-statut-ids-update-titres'
+} from './__mocks__/titres-statut-ids-update-titres.js'
 import { vi, describe, expect, test } from 'vitest'
 vi.mock('../../database/queries/titres', () => ({
   __esModule: true,
diff --git a/packages/api/src/business/processes/titres-statut-ids-update.ts b/packages/api/src/business/processes/titres-statut-ids-update.ts
index 08d9a93c1..ff8482512 100644
--- a/packages/api/src/business/processes/titres-statut-ids-update.ts
+++ b/packages/api/src/business/processes/titres-statut-ids-update.ts
@@ -1,8 +1,7 @@
-import dateFormat from 'dateformat'
-
-import { titresGet, titreUpdate } from '../../database/queries/titres'
-import { titreStatutIdFind } from '../rules/titre-statut-id-find'
-import { userSuper } from '../../database/user-super'
+import { titresGet, titreUpdate } from '../../database/queries/titres.js'
+import { titreStatutIdFind } from '../rules/titre-statut-id-find.js'
+import { userSuper } from '../../database/user-super.js'
+import { getCurrent } from 'camino-common/src/date.js'
 
 export const titresStatutIdsUpdate = async (titresIds?: string[]) => {
   console.info()
@@ -23,7 +22,7 @@ export const titresStatutIdsUpdate = async (titresIds?: string[]) => {
   )
 
   const titresUpdated = [] as string[]
-  const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd')
+  const aujourdhui = getCurrent()
 
   for (const titre of titres) {
     const titreStatutId = titreStatutIdFind(
diff --git a/packages/api/src/business/rules-demarches/_utils.test.ts b/packages/api/src/business/rules-demarches/_utils.test.ts
index 560cba37a..cb42e11a9 100644
--- a/packages/api/src/business/rules-demarches/_utils.test.ts
+++ b/packages/api/src/business/rules-demarches/_utils.test.ts
@@ -11,18 +11,18 @@ import {
   ITitreType,
   IContenu,
   ITitreTypeDemarcheTypeEtapeType
-} from '../../types'
+} from '../../types.js'
 
-import { titreDemarcheEtatValidate } from '../validations/titre-demarche-etat-validate'
+import { titreDemarcheEtatValidate } from '../validations/titre-demarche-etat-validate.js'
 import {
   demarcheDefinitionFind,
   isDemarcheDefinitionRestriction
-} from './definitions'
-import { titreContenuFormat } from '../../database/models/_format/titre-contenu'
-import { contenusTitreEtapesIdsFind } from '../utils/props-titre-etapes-ids-find'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+} from './definitions.js'
+import { titreContenuFormat } from '../../database/models/_format/titre-contenu.js'
+import { contenusTitreEtapesIdsFind } from '../utils/props-titre-etapes-ids-find.js'
+import { TitreTypeId } from 'camino-common/src/static/titresTypes.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { vi, expect, test } from 'vitest'
 test('teste EtatsValidate', () => {
   const octEtatsValidate = demarcheEtatsValidate('ren', 'arm', '2021-01-01')
diff --git a/packages/api/src/business/rules-demarches/arm/oct.machine.test.ts b/packages/api/src/business/rules-demarches/arm/oct.machine.test.ts
index 0cf54883d..feca8bf3f 100644
--- a/packages/api/src/business/rules-demarches/arm/oct.machine.test.ts
+++ b/packages/api/src/business/rules-demarches/arm/oct.machine.test.ts
@@ -1,17 +1,20 @@
-import { ArmOctMachine } from './oct.machine'
+import { ArmOctMachine } from './oct.machine.js'
 import { interpret } from 'xstate'
 import {
   interpretMachine,
   orderAndInterpretMachine as commonOrderAndInterpretMachine
-} from '../machine-test-helper'
-import { IContenu } from '../../../types'
+} from '../machine-test-helper.js'
+import { IContenu } from '../../../types.js'
 import {
   EtapeStatutId,
   ETAPES_STATUTS
-} from 'camino-common/src/static/etapesStatuts'
-import { ETAPES_TYPES, EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { Etape } from '../machine-common'
-import { toCaminoDate } from 'camino-common/src/date'
+} from 'camino-common/src/static/etapesStatuts.js'
+import {
+  ETAPES_TYPES,
+  EtapeTypeId
+} from 'camino-common/src/static/etapesTypes.js'
+import { Etape } from '../machine-common.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { describe, expect, test } from 'vitest'
 const etapesProd = require('./oct.cas.json')
 const orderAndInterpretMachine = (etapes: readonly Etape[]) => {
diff --git a/packages/api/src/business/rules-demarches/arm/oct.machine.ts b/packages/api/src/business/rules-demarches/arm/oct.machine.ts
index 335835ea1..e4db2797a 100644
--- a/packages/api/src/business/rules-demarches/arm/oct.machine.ts
+++ b/packages/api/src/business/rules-demarches/arm/oct.machine.ts
@@ -1,9 +1,9 @@
 import { assign, createMachine } from 'xstate'
-import { IContenu } from '../../../types'
-import { EtapesTypesEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts'
-import { CaminoMachine } from '../machine-helper'
-import { CaminoCommonContext, DBEtat, Etape, tags } from '../machine-common'
-import { DemarchesStatutsIds } from 'camino-common/src/static/demarchesStatuts'
+import { IContenu } from '../../../types.js'
+import { EtapesTypesEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts.js'
+import { CaminoMachine } from '../machine-helper.js'
+import { CaminoCommonContext, DBEtat, Etape, tags } from '../machine-common.js'
+import { DemarchesStatutsIds } from 'camino-common/src/static/demarchesStatuts.js'
 
 type FaireDemandeEvent = {
   mecanise: boolean
diff --git a/packages/api/src/business/rules-demarches/arm/ren-pro.test.ts b/packages/api/src/business/rules-demarches/arm/ren-pro.test.ts
index b7ab1ca5d..cd7b50e54 100644
--- a/packages/api/src/business/rules-demarches/arm/ren-pro.test.ts
+++ b/packages/api/src/business/rules-demarches/arm/ren-pro.test.ts
@@ -1,5 +1,5 @@
-import { toCaminoDate } from 'camino-common/src/date'
-import { demarcheEtatsValidate } from '../_utils.test'
+import { toCaminoDate } from 'camino-common/src/date.js'
+import { demarcheEtatsValidate } from '../_utils.test.js'
 import { describe, expect, test } from 'vitest'
 describe('vérifie l’arbre de renonciation et de prolongation d’ARM', () => {
   const renProEtatsValidate = demarcheEtatsValidate('ren', 'arm', '2020-01-01')
diff --git a/packages/api/src/business/rules-demarches/arm/ren-pro.ts b/packages/api/src/business/rules-demarches/arm/ren-pro.ts
index c0ace51bf..9936294a1 100644
--- a/packages/api/src/business/rules-demarches/arm/ren-pro.ts
+++ b/packages/api/src/business/rules-demarches/arm/ren-pro.ts
@@ -1,5 +1,5 @@
-import { IDemarcheDefinitionRestrictions } from '../definitions'
-import { etatComplementsGet, etatInformationsGet } from '../etat-cycles'
+import { IDemarcheDefinitionRestrictions } from '../definitions.js'
+import { etatComplementsGet, etatInformationsGet } from '../etat-cycles.js'
 
 // https://cacoo.com/diagrams/nStw2pYe0PKBs1lp/B1B05
 const restrictionsArmRenPro: IDemarcheDefinitionRestrictions = {
diff --git a/packages/api/src/business/rules-demarches/arm/ret.test.ts b/packages/api/src/business/rules-demarches/arm/ret.test.ts
index 09c7edbd5..9e2db3cdc 100644
--- a/packages/api/src/business/rules-demarches/arm/ret.test.ts
+++ b/packages/api/src/business/rules-demarches/arm/ret.test.ts
@@ -1,5 +1,5 @@
-import { toCaminoDate } from 'camino-common/src/date'
-import { demarcheEtatsValidate } from '../_utils.test'
+import { toCaminoDate } from 'camino-common/src/date.js'
+import { demarcheEtatsValidate } from '../_utils.test.js'
 import { describe, expect, test } from 'vitest'
 describe('vérifie l’arbre de retrait d’ARM', () => {
   const retEtatsValidate = demarcheEtatsValidate('ret', 'arm', '2020-01-01')
diff --git a/packages/api/src/business/rules-demarches/arm/ret.ts b/packages/api/src/business/rules-demarches/arm/ret.ts
index 3e9c1cbea..d8c006a9b 100644
--- a/packages/api/src/business/rules-demarches/arm/ret.ts
+++ b/packages/api/src/business/rules-demarches/arm/ret.ts
@@ -1,5 +1,5 @@
-import { IDemarcheDefinitionRestrictions } from '../definitions'
-import { etatInformationsGet } from '../etat-cycles'
+import { IDemarcheDefinitionRestrictions } from '../definitions.js'
+import { etatInformationsGet } from '../etat-cycles.js'
 
 // https://cacoo.com/diagrams/VxMVdNkolhMQbKtv/B1B05
 const restrictionsArmRet: IDemarcheDefinitionRestrictions = {
diff --git a/packages/api/src/business/rules-demarches/axm/oct.machine.test.ts b/packages/api/src/business/rules-demarches/axm/oct.machine.test.ts
index 163c74a49..a19751e0f 100644
--- a/packages/api/src/business/rules-demarches/axm/oct.machine.test.ts
+++ b/packages/api/src/business/rules-demarches/axm/oct.machine.test.ts
@@ -1,11 +1,11 @@
 import {
   interpretMachine,
   orderAndInterpretMachine
-} from '../machine-test-helper'
-import { AxmOctMachine } from './oct.machine'
-import { EtapesTypesEtapesStatuts as ETES } from 'camino-common/src/static/etapesTypesEtapesStatuts'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
-import { toCaminoDate } from 'camino-common/src/date'
+} from '../machine-test-helper.js'
+import { AxmOctMachine } from './oct.machine.js'
+import { EtapesTypesEtapesStatuts as ETES } from 'camino-common/src/static/etapesTypesEtapesStatuts.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { describe, expect, test } from 'vitest'
 const etapesProd = require('./oct.cas.json')
 
diff --git a/packages/api/src/business/rules-demarches/axm/oct.machine.ts b/packages/api/src/business/rules-demarches/axm/oct.machine.ts
index c29a0cdb8..4d9fd03a8 100644
--- a/packages/api/src/business/rules-demarches/axm/oct.machine.ts
+++ b/packages/api/src/business/rules-demarches/axm/oct.machine.ts
@@ -1,9 +1,9 @@
 import { assign, createMachine } from 'xstate'
-import { CaminoMachine } from '../machine-helper'
-import { CaminoCommonContext, DBEtat, tags } from '../machine-common'
-import { EtapesTypesEtapesStatuts as ETES } from 'camino-common/src/static/etapesTypesEtapesStatuts'
-import { DemarchesStatutsIds } from 'camino-common/src/static/demarchesStatuts'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
+import { CaminoMachine } from '../machine-helper.js'
+import { CaminoCommonContext, DBEtat, tags } from '../machine-common.js'
+import { EtapesTypesEtapesStatuts as ETES } from 'camino-common/src/static/etapesTypesEtapesStatuts.js'
+import { DemarchesStatutsIds } from 'camino-common/src/static/demarchesStatuts.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
 
 // FIXME
 // ? vérifier la visibilité classement sans suite (@laure)
diff --git a/packages/api/src/business/rules-demarches/definitions.test.ts b/packages/api/src/business/rules-demarches/definitions.test.ts
index 10c9ed219..9207e0c10 100644
--- a/packages/api/src/business/rules-demarches/definitions.test.ts
+++ b/packages/api/src/business/rules-demarches/definitions.test.ts
@@ -1,9 +1,9 @@
 import {
   isDemarcheDefinitionMachine,
   isDemarcheDefinitionRestriction
-} from './definitions'
-import { restrictionsArmRet } from './arm/ret'
-import { ArmOctMachine } from './arm/oct.machine'
+} from './definitions.js'
+import { restrictionsArmRet } from './arm/ret.js'
+import { ArmOctMachine } from './arm/oct.machine.js'
 import { expect, test } from 'vitest'
 
 test('isDemarcheDefinitionMachine', () => {
diff --git a/packages/api/src/business/rules-demarches/definitions.ts b/packages/api/src/business/rules-demarches/definitions.ts
index 3fe455e59..92e7b58d2 100644
--- a/packages/api/src/business/rules-demarches/definitions.ts
+++ b/packages/api/src/business/rules-demarches/definitions.ts
@@ -1,13 +1,13 @@
-import { DemarcheId, IContenuValeur, ITitreEtape } from '../../types'
-
-import { restrictionsArmRet } from './arm/ret'
-import { restrictionsArmRenPro } from './arm/ren-pro'
-import { etatsDefinitionPrmOct } from './prm/oct'
-import { titreDemarcheDepotDemandeDateFind } from '../rules/titre-demarche-depot-demande-date-find'
-import { CaminoMachines } from './machines'
-import { ArmOctMachine } from './arm/oct.machine'
-import { AxmOctMachine } from './axm/oct.machine'
-import { newDemarcheId } from '../../database/models/_format/id-create'
+import { DemarcheId, IContenuValeur, ITitreEtape } from '../../types.js'
+
+import { restrictionsArmRet } from './arm/ret.js'
+import { restrictionsArmRenPro } from './arm/ren-pro.js'
+import { etatsDefinitionPrmOct } from './prm/oct.js'
+import { titreDemarcheDepotDemandeDateFind } from '../rules/titre-demarche-depot-demande-date-find.js'
+import { CaminoMachines } from './machines.js'
+import { ArmOctMachine } from './arm/oct.machine.js'
+import { AxmOctMachine } from './axm/oct.machine.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
 
 export interface IEtapeTypeIdCondition {
   etapeTypeId?: string
diff --git a/packages/api/src/business/rules-demarches/etat-cycles.ts b/packages/api/src/business/rules-demarches/etat-cycles.ts
index baf61bff6..52719446f 100644
--- a/packages/api/src/business/rules-demarches/etat-cycles.ts
+++ b/packages/api/src/business/rules-demarches/etat-cycles.ts
@@ -1,4 +1,4 @@
-import { IDemarcheDefinitionRestrictionsElements } from './definitions'
+import { IDemarcheDefinitionRestrictionsElements } from './definitions.js'
 
 const etatCycleGet = (
   etapeTypeIdDefinition: IDemarcheDefinitionRestrictionsElements,
diff --git a/packages/api/src/business/rules-demarches/machine-common.test.ts b/packages/api/src/business/rules-demarches/machine-common.test.ts
index f82327eb0..0b44ed0c2 100644
--- a/packages/api/src/business/rules-demarches/machine-common.test.ts
+++ b/packages/api/src/business/rules-demarches/machine-common.test.ts
@@ -1,7 +1,7 @@
-import { toCaminoDate } from 'camino-common/src/date'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { ITitreEtape } from '../../types'
-import { toMachineEtapes } from './machine-common'
+import { toCaminoDate } from 'camino-common/src/date.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { ITitreEtape } from '../../types.js'
+import { toMachineEtapes } from './machine-common.js'
 import { describe, expect, test } from 'vitest'
 describe('toMachineEtapes', () => {
   test('transforme une étape de la bdd en étape de machine', () => {
diff --git a/packages/api/src/business/rules-demarches/machine-common.ts b/packages/api/src/business/rules-demarches/machine-common.ts
index c1567c3f6..d0ac07432 100644
--- a/packages/api/src/business/rules-demarches/machine-common.ts
+++ b/packages/api/src/business/rules-demarches/machine-common.ts
@@ -1,17 +1,17 @@
-import { IContenu, ITitreEtape } from '../../types'
+import { IContenu, ITitreEtape } from '../../types.js'
 import {
   EtapeStatutId,
   EtapeStatutKey,
   isStatut
-} from 'camino-common/src/static/etapesStatuts'
+} from 'camino-common/src/static/etapesStatuts.js'
 import {
   EtapeTypeId,
   isEtapeTypeId
-} from 'camino-common/src/static/etapesTypes'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
-import { EtapeTypeEtapeStatut } from 'camino-common/src/static/etapesTypesEtapesStatuts'
-import { DemarcheStatutId } from 'camino-common/src/static/demarchesStatuts'
-import { CaminoDate } from 'camino-common/src/date'
+} from 'camino-common/src/static/etapesTypes.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import { EtapeTypeEtapeStatut } from 'camino-common/src/static/etapesTypesEtapesStatuts.js'
+import { DemarcheStatutId } from 'camino-common/src/static/demarchesStatuts.js'
+import { CaminoDate } from 'camino-common/src/date.js'
 
 export interface Etape {
   // TODO 2022-07-28 : ceci pourrait être réduit en utilisant les états de 'trad'
diff --git a/packages/api/src/business/rules-demarches/machine-helper.test.ts b/packages/api/src/business/rules-demarches/machine-helper.test.ts
index 5d8581d33..9eaa83372 100644
--- a/packages/api/src/business/rules-demarches/machine-helper.test.ts
+++ b/packages/api/src/business/rules-demarches/machine-helper.test.ts
@@ -1,6 +1,6 @@
-import { toCaminoDate } from 'camino-common/src/date'
-import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations'
-import { ArmOctMachine } from './arm/oct.machine'
+import { toCaminoDate } from 'camino-common/src/date.js'
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import { ArmOctMachine } from './arm/oct.machine.js'
 import { describe, expect, test } from 'vitest'
 const machine = new ArmOctMachine()
 describe('isEtapesOk', () => {
diff --git a/packages/api/src/business/rules-demarches/machine-helper.ts b/packages/api/src/business/rules-demarches/machine-helper.ts
index 969728b4a..5ba36289a 100644
--- a/packages/api/src/business/rules-demarches/machine-helper.ts
+++ b/packages/api/src/business/rules-demarches/machine-helper.ts
@@ -7,7 +7,7 @@ import {
   StateMachine,
   TypegenDisabled
 } from 'xstate'
-import { EventObject } from 'xstate/lib/types'
+import { EventObject } from 'xstate/lib/types.js'
 import {
   CaminoCommonContext,
   DBEtat,
@@ -15,11 +15,11 @@ import {
   Intervenant,
   intervenants,
   tags
-} from './machine-common'
+} from './machine-common.js'
 import {
   DemarchesStatutsIds,
   DemarcheStatutId
-} from 'camino-common/src/static/demarchesStatuts'
+} from 'camino-common/src/static/demarchesStatuts.js'
 
 export abstract class CaminoMachine<
   CaminoContext extends CaminoCommonContext,
diff --git a/packages/api/src/business/rules-demarches/machine-test-helper.ts b/packages/api/src/business/rules-demarches/machine-test-helper.ts
index ee52c1270..bd521a73e 100644
--- a/packages/api/src/business/rules-demarches/machine-test-helper.ts
+++ b/packages/api/src/business/rules-demarches/machine-test-helper.ts
@@ -1,7 +1,7 @@
-import { Etape } from './machine-common'
-import { EventObject } from 'xstate/lib/types'
+import { Etape } from './machine-common.js'
+import { EventObject } from 'xstate/lib/types.js'
 import { interpret } from 'xstate'
-import { CaminoMachine } from './machine-helper'
+import { CaminoMachine } from './machine-helper.js'
 import { expect } from 'vitest'
 interface CustomMatchers<R = unknown> {
   canOnlyTransitionTo<T extends EventObject>(
diff --git a/packages/api/src/business/rules-demarches/machines.ts b/packages/api/src/business/rules-demarches/machines.ts
index 43c39863e..5812f3bdd 100644
--- a/packages/api/src/business/rules-demarches/machines.ts
+++ b/packages/api/src/business/rules-demarches/machines.ts
@@ -1,4 +1,4 @@
-import { ArmOctMachine } from './arm/oct.machine'
-import { AxmOctMachine } from './axm/oct.machine'
+import { ArmOctMachine } from './arm/oct.machine.js'
+import { AxmOctMachine } from './axm/oct.machine.js'
 
 export type CaminoMachines = ArmOctMachine | AxmOctMachine
diff --git a/packages/api/src/business/rules-demarches/prm/oct.test.ts b/packages/api/src/business/rules-demarches/prm/oct.test.ts
index df06f17ab..2bd33206e 100644
--- a/packages/api/src/business/rules-demarches/prm/oct.test.ts
+++ b/packages/api/src/business/rules-demarches/prm/oct.test.ts
@@ -1,5 +1,5 @@
-import { toCaminoDate } from 'camino-common/src/date'
-import { demarcheEtatsValidate } from '../_utils.test'
+import { toCaminoDate } from 'camino-common/src/date.js'
+import { demarcheEtatsValidate } from '../_utils.test.js'
 import { describe, expect, test } from 'vitest'
 describe('vérifie l’arbre d’octroi d’une PRM', () => {
   const octEtatsValidate = demarcheEtatsValidate('oct', 'prm', '2020-01-01')
diff --git a/packages/api/src/business/rules-demarches/prm/oct.ts b/packages/api/src/business/rules-demarches/prm/oct.ts
index 1c9eca90b..eae2f9771 100644
--- a/packages/api/src/business/rules-demarches/prm/oct.ts
+++ b/packages/api/src/business/rules-demarches/prm/oct.ts
@@ -1,6 +1,6 @@
 // https://cacoo.com/diagrams/mdAnl7m9V2ViBlxA/C4063
 
-import { IDemarcheDefinitionRestrictions } from '../definitions'
+import { IDemarcheDefinitionRestrictions } from '../definitions.js'
 
 const etatsDefinitionPrmOct: IDemarcheDefinitionRestrictions = {
   mfr: {
diff --git a/packages/api/src/business/rules/__mocks__/titre-activite-statut-id-find-activites.ts b/packages/api/src/business/rules/__mocks__/titre-activite-statut-id-find-activites.ts
index f5e3bb5ba..9a29dfeee 100644
--- a/packages/api/src/business/rules/__mocks__/titre-activite-statut-id-find-activites.ts
+++ b/packages/api/src/business/rules/__mocks__/titre-activite-statut-id-find-activites.ts
@@ -1,4 +1,4 @@
-import { ITitreActivite } from '../../../types'
+import { ITitreActivite } from '../../../types.js'
 
 const titreActiviteFermee = {
   statutId: 'fer',
diff --git a/packages/api/src/business/rules/__mocks__/titre-activites-build-titres.ts b/packages/api/src/business/rules/__mocks__/titre-activites-build-titres.ts
index 0675bcf3a..f7e736d51 100644
--- a/packages/api/src/business/rules/__mocks__/titre-activites-build-titres.ts
+++ b/packages/api/src/business/rules/__mocks__/titre-activites-build-titres.ts
@@ -1,6 +1,6 @@
-import { IActiviteType, ITitreDemarche } from '../../../types'
-import { SubstancesFiscale } from 'camino-common/src/static/substancesFiscales'
-import { UNITES } from 'camino-common/src/static/unites'
+import { IActiviteType, ITitreDemarche } from '../../../types.js'
+import { SubstancesFiscale } from 'camino-common/src/static/substancesFiscales.js'
+import { UNITES } from 'camino-common/src/static/unites.js'
 
 const activiteTypeGra = {
   id: 'gra',
diff --git a/packages/api/src/business/rules/__mocks__/titre-date-debut-find-demarches.ts b/packages/api/src/business/rules/__mocks__/titre-date-debut-find-demarches.ts
index e2fd576e4..b0c3f9af1 100644
--- a/packages/api/src/business/rules/__mocks__/titre-date-debut-find-demarches.ts
+++ b/packages/api/src/business/rules/__mocks__/titre-date-debut-find-demarches.ts
@@ -1,4 +1,4 @@
-import { ITitreDemarche } from '../../../types'
+import { ITitreDemarche } from '../../../types.js'
 
 const titreDemarchesDpu = [
   {
diff --git a/packages/api/src/business/rules/__mocks__/titre-date-demande-find-demarches.ts b/packages/api/src/business/rules/__mocks__/titre-date-demande-find-demarches.ts
index bba745f7f..478e793e2 100644
--- a/packages/api/src/business/rules/__mocks__/titre-date-demande-find-demarches.ts
+++ b/packages/api/src/business/rules/__mocks__/titre-date-demande-find-demarches.ts
@@ -1,5 +1,5 @@
-import { ITitreDemarche } from '../../../types'
-import { newDemarcheId } from '../../../database/models/_format/id-create'
+import { ITitreDemarche } from '../../../types.js'
+import { newDemarcheId } from '../../../database/models/_format/id-create.js'
 
 const titreDemarcheOctEtapeMen = [
   {
diff --git a/packages/api/src/business/rules/__mocks__/titre-date-fin-find-demarches.ts b/packages/api/src/business/rules/__mocks__/titre-date-fin-find-demarches.ts
index 2c041f2c7..9595341a7 100644
--- a/packages/api/src/business/rules/__mocks__/titre-date-fin-find-demarches.ts
+++ b/packages/api/src/business/rules/__mocks__/titre-date-fin-find-demarches.ts
@@ -1,4 +1,4 @@
-import { ITitreDemarche } from '../../../types'
+import { ITitreDemarche } from '../../../types.js'
 
 const titreDemarchesProAccOctAcc = [
   {
diff --git a/packages/api/src/business/rules/__mocks__/titre-demarche-date-fin-duree-find-demarches.ts b/packages/api/src/business/rules/__mocks__/titre-demarche-date-fin-duree-find-demarches.ts
index f90ad75f1..710606fac 100644
--- a/packages/api/src/business/rules/__mocks__/titre-demarche-date-fin-duree-find-demarches.ts
+++ b/packages/api/src/business/rules/__mocks__/titre-demarche-date-fin-duree-find-demarches.ts
@@ -1,6 +1,6 @@
-import { ITitreDemarche } from '../../../types'
-import { newDemarcheId } from '../../../database/models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+import { ITitreDemarche } from '../../../types.js'
+import { newDemarcheId } from '../../../database/models/_format/id-create.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 
 const titreDemarchesOctDateFin = [
   {
diff --git a/packages/api/src/business/rules/__mocks__/titre-phases-find-demarches.ts b/packages/api/src/business/rules/__mocks__/titre-phases-find-demarches.ts
index 1ca55735f..105d0bb70 100644
--- a/packages/api/src/business/rules/__mocks__/titre-phases-find-demarches.ts
+++ b/packages/api/src/business/rules/__mocks__/titre-phases-find-demarches.ts
@@ -1,5 +1,5 @@
-import { ITitreDemarche } from '../../../types'
-import { newDemarcheId } from '../../../database/models/_format/id-create'
+import { ITitreDemarche } from '../../../types.js'
+import { newDemarcheId } from '../../../database/models/_format/id-create.js'
 
 const titreDemarcheOctDpuAcc = {
   id: 'h-cx-courdemanges-1988-oct01',
diff --git a/packages/api/src/business/rules/__mocks__/titre-prop-etape-find-demarches.ts b/packages/api/src/business/rules/__mocks__/titre-prop-etape-find-demarches.ts
index 50cef8a98..1d5084b7e 100644
--- a/packages/api/src/business/rules/__mocks__/titre-prop-etape-find-demarches.ts
+++ b/packages/api/src/business/rules/__mocks__/titre-prop-etape-find-demarches.ts
@@ -1,9 +1,9 @@
-import { toCaminoDate } from 'camino-common/src/date'
-import { ETAPES_STATUTS } from 'camino-common/src/static/etapesStatuts'
-import { ETAPES_TYPES } from 'camino-common/src/static/etapesTypes'
-import { TitresStatutIds } from 'camino-common/src/static/titresStatuts'
-import { newDemarcheId } from '../../../database/models/_format/id-create'
-import { ITitreDemarche, ITitreEtape, ITitrePhase } from '../../../types'
+import { toCaminoDate } from 'camino-common/src/date.js'
+import { ETAPES_STATUTS } from 'camino-common/src/static/etapesStatuts.js'
+import { ETAPES_TYPES } from 'camino-common/src/static/etapesTypes.js'
+import { TitresStatutIds } from 'camino-common/src/static/titresStatuts.js'
+import { newDemarcheId } from '../../../database/models/_format/id-create.js'
+import { ITitreDemarche, ITitreEtape, ITitrePhase } from '../../../types.js'
 
 const titreDemarchesOctPointsMut = {
   statutId: TitresStatutIds.Valide,
diff --git a/packages/api/src/business/rules/__mocks__/titre-statut-id-find-titres.ts b/packages/api/src/business/rules/__mocks__/titre-statut-id-find-titres.ts
index cf6865e64..3be30af25 100644
--- a/packages/api/src/business/rules/__mocks__/titre-statut-id-find-titres.ts
+++ b/packages/api/src/business/rules/__mocks__/titre-statut-id-find-titres.ts
@@ -1,6 +1,6 @@
-import { ITitreDemarche } from '../../../types'
-import { newDemarcheId } from '../../../database/models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+import { ITitreDemarche } from '../../../types.js'
+import { newDemarcheId } from '../../../database/models/_format/id-create.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 
 const titreDemarchesIndefini: ITitreDemarche[] = [
   { statutId: 'ind', type: { id: 'oct' } }
diff --git a/packages/api/src/business/rules/titre-activite-statut-id-find.test.ts b/packages/api/src/business/rules/titre-activite-statut-id-find.test.ts
index a66c9a0cc..1f36ec2c7 100644
--- a/packages/api/src/business/rules/titre-activite-statut-id-find.test.ts
+++ b/packages/api/src/business/rules/titre-activite-statut-id-find.test.ts
@@ -1,11 +1,11 @@
-import { titreActiviteStatutIdFind } from './titre-activite-statut-id-find'
+import { titreActiviteStatutIdFind } from './titre-activite-statut-id-find.js'
 import { describe, expect, test } from 'vitest'
 import {
   titreActiviteFermee,
   titreActiviteDeposee,
   titreActiviteAbsenteDelaiDepasse,
   titreActiviteEnCoursDelaiNonDepasse
-} from './__mocks__/titre-activite-statut-id-find-activites'
+} from './__mocks__/titre-activite-statut-id-find-activites.js'
 
 describe("statut d'une activité", () => {
   test('une activité dont le statut est “fermé" garde le statut "fermé"', () => {
diff --git a/packages/api/src/business/rules/titre-activite-statut-id-find.ts b/packages/api/src/business/rules/titre-activite-statut-id-find.ts
index e5fe4818a..c7965b075 100644
--- a/packages/api/src/business/rules/titre-activite-statut-id-find.ts
+++ b/packages/api/src/business/rules/titre-activite-statut-id-find.ts
@@ -1,5 +1,5 @@
-import { ITitreActivite } from '../../types'
-import { dateAddMonths } from '../../tools/date'
+import { ITitreActivite } from '../../types.js'
+import { dateAddMonths } from '../../tools/date.js'
 
 /**
  * Trouve le statut d'une activité
diff --git a/packages/api/src/business/rules/titre-activites-build.test.ts b/packages/api/src/business/rules/titre-activites-build.test.ts
index 2f23f5f28..ce1ce2e04 100644
--- a/packages/api/src/business/rules/titre-activites-build.test.ts
+++ b/packages/api/src/business/rules/titre-activites-build.test.ts
@@ -1,6 +1,6 @@
-import { IActiviteType, ITitreActivite, ITitreDemarche } from '../../types'
+import { IActiviteType, ITitreActivite, ITitreDemarche } from '../../types.js'
 
-import { titreActivitesBuild } from './titre-activites-build'
+import { titreActivitesBuild } from './titre-activites-build.js'
 
 import {
   titreActivitesGra,
@@ -8,7 +8,7 @@ import {
   activiteTypeGra,
   activiteTypeGrp,
   titreDemarches
-} from './__mocks__/titre-activites-build-titres'
+} from './__mocks__/titre-activites-build-titres.js'
 import { describe, expect, test } from 'vitest'
 describe("construction des activités d'un titre", () => {
   const aujourdhui = '2021-01-01'
diff --git a/packages/api/src/business/rules/titre-activites-build.ts b/packages/api/src/business/rules/titre-activites-build.ts
index cb0b01f32..48e8f4fa9 100644
--- a/packages/api/src/business/rules/titre-activites-build.ts
+++ b/packages/api/src/business/rules/titre-activites-build.ts
@@ -1,28 +1,27 @@
-import dateFormat from 'dateformat'
-
 import {
   IActiviteType,
   ITitreActivite,
   ISection,
   ISectionElement,
   ITitreDemarche
-} from '../../types'
+} from '../../types.js'
 
-import { titreEtapePropFind } from './titre-etape-prop-find'
-import { titreActiviteValideCheck } from '../utils/titre-activite-valide-check'
+import { titreEtapePropFind } from './titre-etape-prop-find.js'
+import { titreActiviteValideCheck } from '../utils/titre-activite-valide-check.js'
 import {
   SubstanceFiscale,
   substancesFiscalesBySubstanceLegale
-} from 'camino-common/src/static/substancesFiscales'
-import { UNITES, Unites } from 'camino-common/src/static/unites'
-import { sortedDevises } from 'camino-common/src/static/devise'
-import { exhaustiveCheck } from '../../tools/exhaustive-type-check'
+} from 'camino-common/src/static/substancesFiscales.js'
+import { UNITES, Unites } from 'camino-common/src/static/unites.js'
+import { sortedDevises } from 'camino-common/src/static/devise.js'
+import { exhaustiveCheck } from '../../tools/exhaustive-type-check.js'
 import {
   FrequenceId,
   Frequences,
   getNumberOfMonths
-} from 'camino-common/src/static/frequence'
-import { SubstanceLegaleId } from 'camino-common/src/static/substancesLegales'
+} from 'camino-common/src/static/frequence.js'
+import { SubstanceLegaleId } from 'camino-common/src/static/substancesLegales.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 
 const substancesFiscalesFind = (
   substances: SubstanceLegaleId[]
@@ -197,9 +196,8 @@ const titreActiviteBuild = (
 
   // la date de fin de l'activité est le premier jour du mois
   // du début de la période suivante, en fonction de la fréquence
-  const date = dateFormat(
-    new Date(annee, periodeId * getNumberOfMonths(frequenceId), 1),
-    'yyyy-mm-dd'
+  const date = toCaminoDate(
+    new Date(annee, periodeId * getNumberOfMonths(frequenceId), 1)
   )
 
   const titreActiviteIsValide = titreActiviteValideCheck(
diff --git a/packages/api/src/business/rules/titre-date-debut-find.test.ts b/packages/api/src/business/rules/titre-date-debut-find.test.ts
index 610f07c09..81e638cb0 100644
--- a/packages/api/src/business/rules/titre-date-debut-find.test.ts
+++ b/packages/api/src/business/rules/titre-date-debut-find.test.ts
@@ -1,4 +1,4 @@
-import { titreDateDebutFind } from './titre-date-debut-find'
+import { titreDateDebutFind } from './titre-date-debut-find.js'
 
 import {
   titreDemarchesDpu,
@@ -9,7 +9,7 @@ import {
   titreDemarchesSansOctroi,
   titreDemarchesSansDateDebut,
   titreDemarchesDateUndefined
-} from './__mocks__/titre-date-debut-find-demarches'
+} from './__mocks__/titre-date-debut-find-demarches.js'
 import { describe, expect, test } from 'vitest'
 describe("date de début d'une démarche", () => {
   test("retourne la date de la première étape d'octroi d'une dpu dont le statut est acceptée", () => {
diff --git a/packages/api/src/business/rules/titre-date-debut-find.ts b/packages/api/src/business/rules/titre-date-debut-find.ts
index 747aa367e..4c08fe359 100644
--- a/packages/api/src/business/rules/titre-date-debut-find.ts
+++ b/packages/api/src/business/rules/titre-date-debut-find.ts
@@ -1,12 +1,12 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc'
+import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc.js'
 import {
   titreEtapesSortDescByOrdre,
   titreEtapesSortAscByOrdre
-} from '../utils/titre-etapes-sort'
-import { titreEtapePublicationCheck } from './titre-etape-publication-check'
-import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes'
+} from '../utils/titre-etapes-sort.js'
+import { titreEtapePublicationCheck } from './titre-etape-publication-check.js'
+import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes.js'
 
 const titreDemarcheDateDebutFind = (
   titreDemarche: ITitreDemarche,
diff --git a/packages/api/src/business/rules/titre-date-demande-find.test.ts b/packages/api/src/business/rules/titre-date-demande-find.test.ts
index bfff8b7e1..a5473162b 100644
--- a/packages/api/src/business/rules/titre-date-demande-find.test.ts
+++ b/packages/api/src/business/rules/titre-date-demande-find.test.ts
@@ -1,10 +1,10 @@
-import { titreDateDemandeFind } from './titre-date-demande-find'
+import { titreDateDemandeFind } from './titre-date-demande-find.js'
 
 import {
   titreDemarcheOctEtapeMen,
   titreDemarcheOctSansEtapes,
   titreDemarcheOctSansEtapeMen
-} from './__mocks__/titre-date-demande-find-demarches'
+} from './__mocks__/titre-date-demande-find-demarches.js'
 import { describe, expect, test } from 'vitest'
 describe("cherche la date de demande initiale d'un titre", () => {
   test("retourne null si le titre n'a pas de démarches", () => {
diff --git a/packages/api/src/business/rules/titre-date-demande-find.ts b/packages/api/src/business/rules/titre-date-demande-find.ts
index 00b1e9933..ef5be847b 100644
--- a/packages/api/src/business/rules/titre-date-demande-find.ts
+++ b/packages/api/src/business/rules/titre-date-demande-find.ts
@@ -1,8 +1,8 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc'
-import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort'
-import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes'
+import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc.js'
+import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort.js'
+import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes.js'
 
 const titreDateDemandeFind = (titreDemarches: ITitreDemarche[]) => {
   // trouve la démarche génératrice du titre
diff --git a/packages/api/src/business/rules/titre-date-fin-find.test.ts b/packages/api/src/business/rules/titre-date-fin-find.test.ts
index 4a79b34e2..292363c34 100644
--- a/packages/api/src/business/rules/titre-date-fin-find.test.ts
+++ b/packages/api/src/business/rules/titre-date-fin-find.test.ts
@@ -1,11 +1,11 @@
-import { titreDateFinFind } from './titre-date-fin-find'
+import { titreDateFinFind } from './titre-date-fin-find.js'
 
 import {
   titreDemarchesProAccOctAcc,
   titreDemarchesProTerOctAcc,
   titreDemarchesProRejOctAcc,
   titreDemarchesProRejOctRej
-} from './__mocks__/titre-date-fin-find-demarches'
+} from './__mocks__/titre-date-fin-find-demarches.js'
 import { describe, expect, test } from 'vitest'
 describe("cherche la date de fin d'une démarche", () => {
   test("la date de fin de validité d'un titre est celle de la dernière démarche dont le statut est acceptée", () => {
diff --git a/packages/api/src/business/rules/titre-date-fin-find.ts b/packages/api/src/business/rules/titre-date-fin-find.ts
index 6a0174464..ddcbdaf34 100644
--- a/packages/api/src/business/rules/titre-date-fin-find.ts
+++ b/packages/api/src/business/rules/titre-date-fin-find.ts
@@ -1,7 +1,7 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc'
-import titreDemarcheDateFinAndDureeFind from './titre-demarche-date-fin-duree-find'
+import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc.js'
+import titreDemarcheDateFinAndDureeFind from './titre-demarche-date-fin-duree-find.js'
 
 export const titreDateFinFind = (titreDemarches: ITitreDemarche[]) => {
   // la dernière démarche dont le statut est acceptée ou terminée
diff --git a/packages/api/src/business/rules/titre-demarche-annulation-date-fin-find.test.ts b/packages/api/src/business/rules/titre-demarche-annulation-date-fin-find.test.ts
index 6c9b5c487..57023a294 100644
--- a/packages/api/src/business/rules/titre-demarche-annulation-date-fin-find.test.ts
+++ b/packages/api/src/business/rules/titre-demarche-annulation-date-fin-find.test.ts
@@ -1,8 +1,8 @@
-import { ITitreEtape } from '../../types'
-import { titreDemarcheAnnulationDateFinFind } from './titre-demarche-annulation-date-fin-find'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+import { ITitreEtape } from '../../types.js'
+import { titreDemarcheAnnulationDateFinFind } from './titre-demarche-annulation-date-fin-find.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { describe, expect, test } from 'vitest'
 describe("date de fin d'une démarche d'annulation", () => {
   test.each<EtapeTypeId>(['dex', 'dux', 'dim'])(
diff --git a/packages/api/src/business/rules/titre-demarche-annulation-date-fin-find.ts b/packages/api/src/business/rules/titre-demarche-annulation-date-fin-find.ts
index bb7dc776e..07159206b 100644
--- a/packages/api/src/business/rules/titre-demarche-annulation-date-fin-find.ts
+++ b/packages/api/src/business/rules/titre-demarche-annulation-date-fin-find.ts
@@ -1,10 +1,10 @@
-import { CaminoDate } from 'camino-common/src/date'
+import { CaminoDate } from 'camino-common/src/date.js'
 
 import {
   titreEtapesSortAscByOrdre,
   titreEtapesSortDescByOrdre
-} from '../utils/titre-etapes-sort'
-import { TitreEtapePhaseFind } from './titre-demarche-date-fin-duree-find'
+} from '../utils/titre-etapes-sort.js'
+import { TitreEtapePhaseFind } from './titre-demarche-date-fin-duree-find.js'
 
 /**
  * Retourne la date de fin d'une démarche d'annulation
diff --git a/packages/api/src/business/rules/titre-demarche-date-fin-duree-find.test.ts b/packages/api/src/business/rules/titre-demarche-date-fin-duree-find.test.ts
index ecf14b43d..2f8ee1039 100644
--- a/packages/api/src/business/rules/titre-demarche-date-fin-duree-find.test.ts
+++ b/packages/api/src/business/rules/titre-demarche-date-fin-duree-find.test.ts
@@ -1,4 +1,4 @@
-import titreDemarcheDateFinAndDureeFind from './titre-demarche-date-fin-duree-find'
+import titreDemarcheDateFinAndDureeFind from './titre-demarche-date-fin-duree-find.js'
 
 import {
   titreDemarchesOctDateFin,
@@ -16,7 +16,7 @@ import {
   titreDemarchesRenPointsVideDex,
   titreDemarchesRenPointsVideNiDpuNiDex,
   titreDemarchesOctIhiDureeZero
-} from './__mocks__/titre-demarche-date-fin-duree-find-demarches'
+} from './__mocks__/titre-demarche-date-fin-duree-find-demarches.js'
 import { describe, expect, test } from 'vitest'
 describe("retourne la date de fin et la durée d'une démarche", () => {
   test("la date de fin d'une démarche d'octroi est celle de la dernière étape dont la date de fin est renseignée", () => {
diff --git a/packages/api/src/business/rules/titre-demarche-date-fin-duree-find.ts b/packages/api/src/business/rules/titre-demarche-date-fin-duree-find.ts
index 68ca10ef1..a128ac2ee 100644
--- a/packages/api/src/business/rules/titre-demarche-date-fin-duree-find.ts
+++ b/packages/api/src/business/rules/titre-demarche-date-fin-duree-find.ts
@@ -1,13 +1,14 @@
-import { ITitreDemarche, ITitreEtape } from '../../types'
+import { ITitreDemarche, ITitreEtape } from '../../types.js'
 
 import {
   titreEtapesSortAscByOrdre,
   titreEtapesSortDescByOrdre
-} from '../utils/titre-etapes-sort'
+} from '../utils/titre-etapes-sort.js'
 
-import { titreDemarcheAnnulationDateFinFind } from './titre-demarche-annulation-date-fin-find'
-import { dateAddMonths, datesSubtract } from '../../tools/date'
-import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes'
+import { titreDemarcheAnnulationDateFinFind } from './titre-demarche-annulation-date-fin-find.js'
+import { dateAddMonths, datesSubtract } from '../../tools/date.js'
+import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 
 // entrée
 // - les démarches d'un titre
@@ -183,7 +184,7 @@ const titreDemarcheOctroiDateFinAndDureeFind = (
     // la date de fin par défaut est fixée au 31 décembre 2018,
     // selon l'article L144-4 du code minier :
     // https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000023501962&idArticle=LEGIARTI000023504741
-    dateFin = '2018-12-31'
+    dateFin = toCaminoDate('2018-12-31')
     // on calcule la durée que sépare la date de début et la date de fin
     duree = datesSubtract(dateDebut, dateFin!)
     // on met à jour la date de fin avec la durée accumulée
diff --git a/packages/api/src/business/rules/titre-demarche-depot-demande-date-find.ts b/packages/api/src/business/rules/titre-demarche-depot-demande-date-find.ts
index 078b18eec..1c8e4320f 100644
--- a/packages/api/src/business/rules/titre-demarche-depot-demande-date-find.ts
+++ b/packages/api/src/business/rules/titre-demarche-depot-demande-date-find.ts
@@ -1,4 +1,4 @@
-import { ITitreEtape } from '../../types'
+import { ITitreEtape } from '../../types.js'
 
 // si il y a un dépot de la demande
 // -> retourne la date de cette étape
diff --git a/packages/api/src/business/rules/titre-demarche-octroi-date-debut-find.test.ts b/packages/api/src/business/rules/titre-demarche-octroi-date-debut-find.test.ts
index 70a35d45a..302598e49 100644
--- a/packages/api/src/business/rules/titre-demarche-octroi-date-debut-find.test.ts
+++ b/packages/api/src/business/rules/titre-demarche-octroi-date-debut-find.test.ts
@@ -1,6 +1,6 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import titreDemarcheOctroiDateDebutFind from './titre-demarche-octroi-date-debut-find'
+import titreDemarcheOctroiDateDebutFind from './titre-demarche-octroi-date-debut-find.js'
 import { describe, expect, test } from 'vitest'
 describe("trouve la date d'octroi d'un titre", () => {
   test("retourne 0000 si le titre n'a pas de démarches", () => {
diff --git a/packages/api/src/business/rules/titre-demarche-octroi-date-debut-find.ts b/packages/api/src/business/rules/titre-demarche-octroi-date-debut-find.ts
index 2bad1a64b..5e2778abc 100644
--- a/packages/api/src/business/rules/titre-demarche-octroi-date-debut-find.ts
+++ b/packages/api/src/business/rules/titre-demarche-octroi-date-debut-find.ts
@@ -1,8 +1,8 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc'
-import { titreEtapesSortDescByOrdre } from '../utils/titre-etapes-sort'
-import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes'
+import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc.js'
+import { titreEtapesSortDescByOrdre } from '../utils/titre-etapes-sort.js'
+import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes.js'
 
 const titreDemarcheOctroiDateDebutFind = (
   titreDemarches?: ITitreDemarche[] | null
diff --git a/packages/api/src/business/rules/titre-demarche-phase-check.test.ts b/packages/api/src/business/rules/titre-demarche-phase-check.test.ts
index 042779af2..49ba66397 100644
--- a/packages/api/src/business/rules/titre-demarche-phase-check.test.ts
+++ b/packages/api/src/business/rules/titre-demarche-phase-check.test.ts
@@ -1,5 +1,5 @@
-import { ITitreEtape } from '../../types'
-import { titreDemarchePhaseCheck } from './titre-demarche-phase-check'
+import { ITitreEtape } from '../../types.js'
+import { titreDemarchePhaseCheck } from './titre-demarche-phase-check.js'
 import { describe, expect, test } from 'vitest'
 describe('retourne si la démarche donne lieu à une étape ou non', () => {
   test('une démarche sans étape ne donne pas lieu à une phase', () => {
diff --git a/packages/api/src/business/rules/titre-demarche-phase-check.ts b/packages/api/src/business/rules/titre-demarche-phase-check.ts
index 9b81665da..b420ec4e2 100644
--- a/packages/api/src/business/rules/titre-demarche-phase-check.ts
+++ b/packages/api/src/business/rules/titre-demarche-phase-check.ts
@@ -1,10 +1,10 @@
-import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort'
-import { titreEtapePublicationCheck } from './titre-etape-publication-check'
+import { titreEtapesSortAscByOrdre } from '../utils/titre-etapes-sort.js'
+import { titreEtapePublicationCheck } from './titre-etape-publication-check.js'
 import {
   DemarcheTypeId,
   isDemarcheTypeWithPhase
-} from 'camino-common/src/static/demarchesTypes'
-import { TitreEtapePhaseFind } from './titre-demarche-date-fin-duree-find'
+} from 'camino-common/src/static/demarchesTypes.js'
+import { TitreEtapePhaseFind } from './titre-demarche-date-fin-duree-find.js'
 
 /**
  * Vérifie si la démarche donne lieu à une phase
diff --git a/packages/api/src/business/rules/titre-demarche-public-find.test.ts b/packages/api/src/business/rules/titre-demarche-public-find.test.ts
index 8d86fb570..f23241dc8 100644
--- a/packages/api/src/business/rules/titre-demarche-public-find.test.ts
+++ b/packages/api/src/business/rules/titre-demarche-public-find.test.ts
@@ -1,9 +1,9 @@
-import { ITitreDemarche, ITitreEtape } from '../../types'
+import { ITitreDemarche, ITitreEtape } from '../../types.js'
 
-import { titreDemarchePublicFind } from './titre-demarche-public-find'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+import { titreDemarchePublicFind } from './titre-demarche-public-find.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { describe, expect, test } from 'vitest'
 const etapesBuild = (etapesProps: Partial<ITitreEtape>[]) =>
   etapesProps.map(
diff --git a/packages/api/src/business/rules/titre-demarche-public-find.ts b/packages/api/src/business/rules/titre-demarche-public-find.ts
index 8044c0caf..d5dcbc282 100644
--- a/packages/api/src/business/rules/titre-demarche-public-find.ts
+++ b/packages/api/src/business/rules/titre-demarche-public-find.ts
@@ -1,5 +1,5 @@
-import { ITitreEtape, IEtapeType, ITitreDemarche } from '../../types'
-import { titreInSurvieProvisoire } from './titre-statut-id-find'
+import { ITitreEtape, IEtapeType, ITitreDemarche } from '../../types.js'
+import { titreInSurvieProvisoire } from './titre-statut-id-find.js'
 const titreDemarchePublicLectureFind = (
   publicLecture: boolean,
   demarcheTypeId: string,
diff --git a/packages/api/src/business/rules/titre-demarche-statut-id-find.test.ts b/packages/api/src/business/rules/titre-demarche-statut-id-find.test.ts
index e5f797fdb..dac2b5e6b 100644
--- a/packages/api/src/business/rules/titre-demarche-statut-id-find.test.ts
+++ b/packages/api/src/business/rules/titre-demarche-statut-id-find.test.ts
@@ -1,14 +1,14 @@
-import { ITitreEtape, TitreEtapesTravauxTypes as Travaux } from '../../types'
+import { ITitreEtape, TitreEtapesTravauxTypes as Travaux } from '../../types.js'
 
-import { titreDemarcheStatutIdFind } from './titre-demarche-statut-id-find'
+import { titreDemarcheStatutIdFind } from './titre-demarche-statut-id-find.js'
 import {
   DemarchesStatutsIds as Demarches,
   DemarcheStatutId
-} from 'camino-common/src/static/demarchesStatuts'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+} from 'camino-common/src/static/demarchesStatuts.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { describe, expect, test } from 'vitest'
-import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts'
+import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts.js'
 const etapesBuild = (etapesProps: Partial<ITitreEtape>[]) =>
   etapesProps.map(
     (etapeProps, i) =>
diff --git a/packages/api/src/business/rules/titre-demarche-statut-id-find.ts b/packages/api/src/business/rules/titre-demarche-statut-id-find.ts
index 074aa3b11..e33555ece 100644
--- a/packages/api/src/business/rules/titre-demarche-statut-id-find.ts
+++ b/packages/api/src/business/rules/titre-demarche-statut-id-find.ts
@@ -2,19 +2,19 @@ import {
   DemarcheId,
   ITitreEtape,
   TitreEtapesTravauxTypes as Travaux
-} from '../../types'
+} from '../../types.js'
 
-import { titreEtapesSortDescByOrdre } from '../utils/titre-etapes-sort'
-import { titreEtapePublicationCheck } from './titre-etape-publication-check'
+import { titreEtapesSortDescByOrdre } from '../utils/titre-etapes-sort.js'
+import { titreEtapePublicationCheck } from './titre-etape-publication-check.js'
 import {
   demarcheDefinitionFind,
   isDemarcheDefinitionMachine
-} from '../rules-demarches/definitions'
-import { toMachineEtapes } from '../rules-demarches/machine-common'
+} from '../rules-demarches/definitions.js'
+import { toMachineEtapes } from '../rules-demarches/machine-common.js'
 import {
   DemarcheStatutId,
   DemarchesStatutsIds
-} from 'camino-common/src/static/demarchesStatuts'
+} from 'camino-common/src/static/demarchesStatuts.js'
 
 const titreEtapesDecisivesCommunesTypes = ['css', 'rtd', 'abd', 'and']
 
diff --git a/packages/api/src/business/rules/titre-etape-prop-find.test.ts b/packages/api/src/business/rules/titre-etape-prop-find.test.ts
index 759c5c48e..b5ec13418 100644
--- a/packages/api/src/business/rules/titre-etape-prop-find.test.ts
+++ b/packages/api/src/business/rules/titre-etape-prop-find.test.ts
@@ -1,6 +1,6 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import { titreEtapePropFind } from './titre-etape-prop-find'
+import { titreEtapePropFind } from './titre-etape-prop-find.js'
 import { vi, describe, expect, test } from 'vitest'
 console.error = vi.fn()
 
diff --git a/packages/api/src/business/rules/titre-etape-prop-find.ts b/packages/api/src/business/rules/titre-etape-prop-find.ts
index 03a211fe1..9ee3c3d4c 100644
--- a/packages/api/src/business/rules/titre-etape-prop-find.ts
+++ b/packages/api/src/business/rules/titre-etape-prop-find.ts
@@ -1,10 +1,10 @@
-import { ITitreDemarche, IPropId } from '../../types'
+import { ITitreDemarche, IPropId } from '../../types.js'
 
-import { propValueFind } from '../utils/prop-value-find'
-import { titreDemarchesEtapesRebuild } from '../utils/titre-demarches-etapes-rebuild'
+import { propValueFind } from '../utils/prop-value-find.js'
+import { titreDemarchesEtapesRebuild } from '../utils/titre-demarches-etapes-rebuild.js'
 
-import { titrePropTitreEtapeFind } from './titre-prop-etape-find'
-import { titreStatutIdFind } from './titre-statut-id-find'
+import { titrePropTitreEtapeFind } from './titre-prop-etape-find.js'
+import { titreStatutIdFind } from './titre-statut-id-find.js'
 
 /**
  * Trouve la propriété d'un titre à une date donnée
diff --git a/packages/api/src/business/rules/titre-etape-publication-check.test.ts b/packages/api/src/business/rules/titre-etape-publication-check.test.ts
index 5b96a3a19..25bff4bb6 100644
--- a/packages/api/src/business/rules/titre-etape-publication-check.test.ts
+++ b/packages/api/src/business/rules/titre-etape-publication-check.test.ts
@@ -1,4 +1,4 @@
-import { titreEtapePublicationCheck } from './titre-etape-publication-check'
+import { titreEtapePublicationCheck } from './titre-etape-publication-check.js'
 import { describe, expect, test } from 'vitest'
 describe("étape de publication d'une étape", () => {
   test('une étape de dpu est une étape de publication', () => {
diff --git a/packages/api/src/business/rules/titre-phases-find.test.ts b/packages/api/src/business/rules/titre-phases-find.test.ts
index 10238db2f..4c5f28478 100644
--- a/packages/api/src/business/rules/titre-phases-find.test.ts
+++ b/packages/api/src/business/rules/titre-phases-find.test.ts
@@ -1,5 +1,5 @@
-import { ITitreDemarche } from '../../types'
-import { titrePhasesFind } from './titre-phases-find'
+import { ITitreDemarche } from '../../types.js'
+import { titrePhasesFind } from './titre-phases-find.js'
 import {
   titreDemarcheOctDpuAcc,
   titreDemarcheOctDpuInexistante,
@@ -9,9 +9,9 @@ import {
   titreDemarchesOctProlongation,
   titreDemarchesOctAnnulation,
   titreDemarchesOctAnnulationSansPoints
-} from './__mocks__/titre-phases-find-demarches'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+} from './__mocks__/titre-phases-find-demarches.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { describe, expect, test } from 'vitest'
 
 describe("phases d'une démarche", () => {
diff --git a/packages/api/src/business/rules/titre-phases-find.ts b/packages/api/src/business/rules/titre-phases-find.ts
index 6947076cd..30c6fe03e 100644
--- a/packages/api/src/business/rules/titre-phases-find.ts
+++ b/packages/api/src/business/rules/titre-phases-find.ts
@@ -1,16 +1,16 @@
-import { ITitrePhase } from '../../types'
+import { ITitrePhase } from '../../types.js'
 
 import titreDemarcheDateFinAndDureeFind, {
   TitreDemarchePhaseFind
-} from './titre-demarche-date-fin-duree-find'
-import { titreDemarchePhaseCheck } from './titre-demarche-phase-check'
+} from './titre-demarche-date-fin-duree-find.js'
+import { titreDemarchePhaseCheck } from './titre-demarche-phase-check.js'
 import {
   titreEtapesSortAscByOrdre,
   titreEtapesSortDescByOrdre
-} from '../utils/titre-etapes-sort'
-import { titreEtapePublicationCheck } from './titre-etape-publication-check'
-import { titreDemarcheAnnulationDateFinFind } from './titre-demarche-annulation-date-fin-find'
-import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes'
+} from '../utils/titre-etapes-sort.js'
+import { titreEtapePublicationCheck } from './titre-etape-publication-check.js'
+import { titreDemarcheAnnulationDateFinFind } from './titre-demarche-annulation-date-fin-find.js'
+import { isDemarcheTypeOctroi } from 'camino-common/src/static/demarchesTypes.js'
 
 /**
  * trouve une démarche acceptée ou terminée qui est
diff --git a/packages/api/src/business/rules/titre-prop-etape-find.test.ts b/packages/api/src/business/rules/titre-prop-etape-find.test.ts
index 661f94c3d..cb7eda371 100644
--- a/packages/api/src/business/rules/titre-prop-etape-find.test.ts
+++ b/packages/api/src/business/rules/titre-prop-etape-find.test.ts
@@ -1,9 +1,9 @@
-import { ITitreDemarche, IPropId } from '../../types'
+import { ITitreDemarche, IPropId } from '../../types.js'
 
 import {
   titreContenuTitreEtapeFind,
   titrePropTitreEtapeFind
-} from './titre-prop-etape-find'
+} from './titre-prop-etape-find.js'
 
 import {
   titreDemarchesOctPointsMut,
@@ -20,9 +20,9 @@ import {
   titreDemarchesMutPointsMod,
   titreDemarchesProModPhaseEch,
   titreDemarchesOctTitulairesACO
-} from './__mocks__/titre-prop-etape-find-demarches'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+} from './__mocks__/titre-prop-etape-find-demarches.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { describe, expect, test } from 'vitest'
 
 describe("id de l'étape d'une propriété valide (dé-normalise)", () => {
diff --git a/packages/api/src/business/rules/titre-prop-etape-find.ts b/packages/api/src/business/rules/titre-prop-etape-find.ts
index 23dbb2109..bd9113e6e 100644
--- a/packages/api/src/business/rules/titre-prop-etape-find.ts
+++ b/packages/api/src/business/rules/titre-prop-etape-find.ts
@@ -5,22 +5,27 @@
 import {
   DemarchesStatutsIds,
   DemarcheStatutId
-} from 'camino-common/src/static/demarchesStatuts'
+} from 'camino-common/src/static/demarchesStatuts.js'
 import {
   DEMARCHES_TYPES_IDS,
   DemarcheTypeId,
   isDemarcheTypeOctroi
-} from 'camino-common/src/static/demarchesTypes'
-import { PHASES_STATUTS_IDS } from 'camino-common/src/static/phasesStatuts'
+} from 'camino-common/src/static/demarchesTypes.js'
+import { PHASES_STATUTS_IDS } from 'camino-common/src/static/phasesStatuts.js'
 import {
   TitresStatutIds,
   TitreStatutId
-} from 'camino-common/src/static/titresStatuts'
-import { ITitreDemarche, ITitreEtape, IPropId, IContenuId } from '../../types'
-
-import { propValueFind } from '../utils/prop-value-find'
-import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc'
-import { titreEtapesSortDescByOrdre } from '../utils/titre-etapes-sort'
+} from 'camino-common/src/static/titresStatuts.js'
+import {
+  ITitreDemarche,
+  ITitreEtape,
+  IPropId,
+  IContenuId
+} from '../../types.js'
+
+import { propValueFind } from '../utils/prop-value-find.js'
+import titreDemarchesSortAsc from '../utils/titre-elements-sort-asc.js'
+import { titreEtapesSortDescByOrdre } from '../utils/titre-etapes-sort.js'
 
 const etapeAmodiataireFind = (
   titreEtape: ITitreEtape,
diff --git a/packages/api/src/business/rules/titre-statut-id-find.test.ts b/packages/api/src/business/rules/titre-statut-id-find.test.ts
index 8b574e711..0e0a25351 100644
--- a/packages/api/src/business/rules/titre-statut-id-find.test.ts
+++ b/packages/api/src/business/rules/titre-statut-id-find.test.ts
@@ -1,4 +1,4 @@
-import { titreStatutIdFind } from './titre-statut-id-find'
+import { titreStatutIdFind } from './titre-statut-id-find.js'
 
 import {
   titreDemarchesIndefini,
@@ -11,9 +11,9 @@ import {
   titreDemarchesOctroiRetire,
   titreDemarchesInstruction,
   titrePERDemarchesProlongation
-} from './__mocks__/titre-statut-id-find-titres'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+} from './__mocks__/titre-statut-id-find-titres.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { describe, expect, test } from 'vitest'
 
 describe("statut d'un titre", () => {
diff --git a/packages/api/src/business/rules/titre-statut-id-find.ts b/packages/api/src/business/rules/titre-statut-id-find.ts
index 66bc1c149..bc1b9e77d 100644
--- a/packages/api/src/business/rules/titre-statut-id-find.ts
+++ b/packages/api/src/business/rules/titre-statut-id-find.ts
@@ -1,7 +1,7 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import { titreDateFinFind } from './titre-date-fin-find'
-import { DemarchesStatutsIds } from 'camino-common/src/static/demarchesStatuts'
+import { titreDateFinFind } from './titre-date-fin-find.js'
+import { DemarchesStatutsIds } from 'camino-common/src/static/demarchesStatuts.js'
 
 export const titreStatutIdFind = (
   aujourdhui: string,
diff --git a/packages/api/src/business/titre-demarche-update.ts b/packages/api/src/business/titre-demarche-update.ts
index 1a935a6f9..8769c4efa 100644
--- a/packages/api/src/business/titre-demarche-update.ts
+++ b/packages/api/src/business/titre-demarche-update.ts
@@ -1,19 +1,19 @@
-import { titreGet } from '../database/queries/titres'
+import { titreGet } from '../database/queries/titres.js'
 
-import { titresDemarchesPublicUpdate } from './processes/titres-demarches-public-update'
-import { titresActivitesUpdate } from './processes/titres-activites-update'
-import { titresStatutIdsUpdate } from './processes/titres-statut-ids-update'
-import { titresPropsEtapesIdsUpdate } from './processes/titres-props-etapes-ids-update'
-import { titresContenusEtapesIdsUpdate } from './processes/titres-contenus-etapes-ids-update'
-import { titresPhasesUpdate } from './processes/titres-phases-update'
-import { titresDatesUpdate } from './processes/titres-dates-update'
-import { titresDemarchesOrdreUpdate } from './processes/titres-demarches-ordre-update'
-import { titresPublicUpdate } from './processes/titres-public-update'
-import { titresSlugsUpdate } from './processes/titres-slugs-update'
-import { logsUpdate } from './_logs-update'
-import { titresCoordonneesUpdate } from './processes/titres-coordonnees-update'
-import { titresActivitesPropsUpdate } from './processes/titres-activites-props-update'
-import { userSuper } from '../database/user-super'
+import { titresDemarchesPublicUpdate } from './processes/titres-demarches-public-update.js'
+import { titresActivitesUpdate } from './processes/titres-activites-update.js'
+import { titresStatutIdsUpdate } from './processes/titres-statut-ids-update.js'
+import { titresPropsEtapesIdsUpdate } from './processes/titres-props-etapes-ids-update.js'
+import { titresContenusEtapesIdsUpdate } from './processes/titres-contenus-etapes-ids-update.js'
+import { titresPhasesUpdate } from './processes/titres-phases-update.js'
+import { titresDatesUpdate } from './processes/titres-dates-update.js'
+import { titresDemarchesOrdreUpdate } from './processes/titres-demarches-ordre-update.js'
+import { titresPublicUpdate } from './processes/titres-public-update.js'
+import { titresSlugsUpdate } from './processes/titres-slugs-update.js'
+import { logsUpdate } from './_logs-update.js'
+import { titresCoordonneesUpdate } from './processes/titres-coordonnees-update.js'
+import { titresActivitesPropsUpdate } from './processes/titres-activites-props-update.js'
+import { userSuper } from '../database/user-super.js'
 
 const titreDemarcheUpdate = async (
   titreDemarcheId: string | null,
diff --git a/packages/api/src/business/titre-etape-update.ts b/packages/api/src/business/titre-etape-update.ts
index 059348173..75cce577a 100644
--- a/packages/api/src/business/titre-etape-update.ts
+++ b/packages/api/src/business/titre-etape-update.ts
@@ -1,27 +1,27 @@
-import { IUtilisateur } from '../types'
-import { titreDemarcheGet } from '../database/queries/titres-demarches'
-
-import { titresActivitesUpdate } from './processes/titres-activites-update'
-import { titresDatesUpdate } from './processes/titres-dates-update'
-import { titresDemarchesPublicUpdate } from './processes/titres-demarches-public-update'
-import { titresDemarchesStatutIdUpdate } from './processes/titres-demarches-statut-ids-update'
-import { titresEtapesHeritagePropsUpdate } from './processes/titres-etapes-heritage-props-update'
-import { titresEtapesHeritageContenuUpdate } from './processes/titres-etapes-heritage-contenu-update'
-import { titresDemarchesOrdreUpdate } from './processes/titres-demarches-ordre-update'
-import { titresEtapesAreasUpdate } from './processes/titres-etapes-areas-update'
-import { titresEtapesOrdreUpdate } from './processes/titres-etapes-ordre-update'
-import { titresStatutIdsUpdate } from './processes/titres-statut-ids-update'
-import { titresPhasesUpdate } from './processes/titres-phases-update'
-import { titresEtapesAdministrationsLocalesUpdate } from './processes/titres-etapes-administrations-locales-update'
-import { titresPropsEtapesIdsUpdate } from './processes/titres-props-etapes-ids-update'
-import { titresContenusEtapesIdsUpdate } from './processes/titres-contenus-etapes-ids-update'
-import { titresSlugsUpdate } from './processes/titres-slugs-update'
-import { titresPublicUpdate } from './processes/titres-public-update'
-import { logsUpdate } from './_logs-update'
-import { titresCoordonneesUpdate } from './processes/titres-coordonnees-update'
-import { titresActivitesPropsUpdate } from './processes/titres-activites-props-update'
-import { userSuper } from '../database/user-super'
-import { titresEtapesDepotCreate } from './processes/titres-demarches-depot-create'
+import { IUtilisateur } from '../types.js'
+import { titreDemarcheGet } from '../database/queries/titres-demarches.js'
+
+import { titresActivitesUpdate } from './processes/titres-activites-update.js'
+import { titresDatesUpdate } from './processes/titres-dates-update.js'
+import { titresDemarchesPublicUpdate } from './processes/titres-demarches-public-update.js'
+import { titresDemarchesStatutIdUpdate } from './processes/titres-demarches-statut-ids-update.js'
+import { titresEtapesHeritagePropsUpdate } from './processes/titres-etapes-heritage-props-update.js'
+import { titresEtapesHeritageContenuUpdate } from './processes/titres-etapes-heritage-contenu-update.js'
+import { titresDemarchesOrdreUpdate } from './processes/titres-demarches-ordre-update.js'
+import { titresEtapesAreasUpdate } from './processes/titres-etapes-areas-update.js'
+import { titresEtapesOrdreUpdate } from './processes/titres-etapes-ordre-update.js'
+import { titresStatutIdsUpdate } from './processes/titres-statut-ids-update.js'
+import { titresPhasesUpdate } from './processes/titres-phases-update.js'
+import { titresEtapesAdministrationsLocalesUpdate } from './processes/titres-etapes-administrations-locales-update.js'
+import { titresPropsEtapesIdsUpdate } from './processes/titres-props-etapes-ids-update.js'
+import { titresContenusEtapesIdsUpdate } from './processes/titres-contenus-etapes-ids-update.js'
+import { titresSlugsUpdate } from './processes/titres-slugs-update.js'
+import { titresPublicUpdate } from './processes/titres-public-update.js'
+import { logsUpdate } from './_logs-update.js'
+import { titresCoordonneesUpdate } from './processes/titres-coordonnees-update.js'
+import { titresActivitesPropsUpdate } from './processes/titres-activites-props-update.js'
+import { userSuper } from '../database/user-super.js'
+import { titresEtapesDepotCreate } from './processes/titres-demarches-depot-create.js'
 
 const titreEtapeUpdate = async (
   titreEtapeId: string | null,
diff --git a/packages/api/src/business/titre-update.ts b/packages/api/src/business/titre-update.ts
index 825887f53..effcd1786 100644
--- a/packages/api/src/business/titre-update.ts
+++ b/packages/api/src/business/titre-update.ts
@@ -1,7 +1,7 @@
-import { titresActivitesUpdate } from './processes/titres-activites-update'
-import { titresPublicUpdate } from './processes/titres-public-update'
-import { titresSlugsUpdate } from './processes/titres-slugs-update'
-import { logsUpdate } from './_logs-update'
+import { titresActivitesUpdate } from './processes/titres-activites-update.js'
+import { titresPublicUpdate } from './processes/titres-public-update.js'
+import { titresSlugsUpdate } from './processes/titres-slugs-update.js'
+import { logsUpdate } from './_logs-update.js'
 
 const titreUpdate = async (titreId: string) => {
   try {
diff --git a/packages/api/src/business/utils/__mocks__/titre-activite-type-check.ts b/packages/api/src/business/utils/__mocks__/titre-activite-type-check.ts
index ae1d360ae..1bbb5da13 100644
--- a/packages/api/src/business/utils/__mocks__/titre-activite-type-check.ts
+++ b/packages/api/src/business/utils/__mocks__/titre-activite-type-check.ts
@@ -1,4 +1,7 @@
-import { ActiviteTypeReduced, TitreReduced } from '../titre-activite-type-check'
+import {
+  ActiviteTypeReduced,
+  TitreReduced
+} from '../titre-activite-type-check.js'
 
 const activiteTypeMAxmPxmGuyane: ActiviteTypeReduced = {
   titresTypes: [{ id: 'axm' }, { id: 'pxm' }],
diff --git a/packages/api/src/business/utils/__mocks__/titre-coordonnees-find.ts b/packages/api/src/business/utils/__mocks__/titre-coordonnees-find.ts
index 9422800a1..0815ddac8 100644
--- a/packages/api/src/business/utils/__mocks__/titre-coordonnees-find.ts
+++ b/packages/api/src/business/utils/__mocks__/titre-coordonnees-find.ts
@@ -1,4 +1,4 @@
-import { ITitrePoint } from '../../../types'
+import { ITitrePoint } from '../../../types.js'
 
 export const titrePoints = [
   {
diff --git a/packages/api/src/business/utils/__mocks__/titre-demarches-asc-sort-demarches.ts b/packages/api/src/business/utils/__mocks__/titre-demarches-asc-sort-demarches.ts
index 5bedb2937..60ed8f2b5 100644
--- a/packages/api/src/business/utils/__mocks__/titre-demarches-asc-sort-demarches.ts
+++ b/packages/api/src/business/utils/__mocks__/titre-demarches-asc-sort-demarches.ts
@@ -1,4 +1,4 @@
-import { ITitreDemarche } from '../../../types'
+import { ITitreDemarche } from '../../../types.js'
 
 const titreDemarchesNoEtapesSortedAsc = [
   {
diff --git a/packages/api/src/business/utils/__mocks__/titre-valide-check-demarches.ts b/packages/api/src/business/utils/__mocks__/titre-valide-check-demarches.ts
index 6694dd1f4..6d4d7f086 100644
--- a/packages/api/src/business/utils/__mocks__/titre-valide-check-demarches.ts
+++ b/packages/api/src/business/utils/__mocks__/titre-valide-check-demarches.ts
@@ -1,4 +1,4 @@
-import { ITitreDemarche } from '../../../types'
+import { ITitreDemarche } from '../../../types.js'
 
 export const titreDemarches = [
   { statutId: 'dep', type: {} },
diff --git a/packages/api/src/business/utils/contenu-element-file-process.test.ts b/packages/api/src/business/utils/contenu-element-file-process.test.ts
index bf5062974..3e2e1e24a 100644
--- a/packages/api/src/business/utils/contenu-element-file-process.test.ts
+++ b/packages/api/src/business/utils/contenu-element-file-process.test.ts
@@ -2,18 +2,23 @@ import { FileUpload } from 'graphql-upload'
 import { ReadStream } from 'fs'
 import { afterEach, vi, describe, test, expect } from 'vitest'
 
-import { IContenu, IContenuElement, ISection, ITitreEtape } from '../../types'
+import {
+  IContenu,
+  IContenuElement,
+  ISection,
+  ITitreEtape
+} from '../../types.js'
 
 import {
   contenuElementFilesCreate,
   contenuElementFilesDelete,
   sectionsContenuAndFilesGet
-} from './contenu-element-file-process'
+} from './contenu-element-file-process.js'
 
-import { objectClone } from '../../tools/index'
-import dirCreate from '../../tools/dir-create'
-import fileStreamCreate from '../../tools/file-stream-create'
-import fileDelete from '../../tools/file-delete'
+import { objectClone } from '../../tools/index.js'
+import dirCreate from '../../tools/dir-create.js'
+import fileStreamCreate from '../../tools/file-stream-create.js'
+import fileDelete from '../../tools/file-delete.js'
 
 vi.mock('../../tools/dir-create', () => ({
   __esModule: true,
diff --git a/packages/api/src/business/utils/contenu-element-file-process.ts b/packages/api/src/business/utils/contenu-element-file-process.ts
index 741ecee06..1428782fb 100644
--- a/packages/api/src/business/utils/contenu-element-file-process.ts
+++ b/packages/api/src/business/utils/contenu-element-file-process.ts
@@ -10,11 +10,11 @@ import {
   ISection,
   ISectionElement,
   ITitreEtape
-} from '../../types'
+} from '../../types.js'
 
-import dirCreate from '../../tools/dir-create'
-import fileStreamCreate from '../../tools/file-stream-create'
-import fileDelete from '../../tools/file-delete'
+import dirCreate from '../../tools/dir-create.js'
+import fileStreamCreate from '../../tools/file-stream-create.js'
+import fileDelete from '../../tools/file-delete.js'
 
 const sectionElementContenuAndFilesGet = (
   contenuValeur: IContenuValeur,
diff --git a/packages/api/src/business/utils/prop-value-find.ts b/packages/api/src/business/utils/prop-value-find.ts
index ea445c7f7..34a034c67 100644
--- a/packages/api/src/business/utils/prop-value-find.ts
+++ b/packages/api/src/business/utils/prop-value-find.ts
@@ -1,4 +1,4 @@
-import { ITitreEtape, IPropId } from '../../types'
+import { ITitreEtape, IPropId } from '../../types.js'
 
 export const propValueFind = (titreEtape: ITitreEtape, propId: IPropId) => {
   const value = titreEtape[propId]
diff --git a/packages/api/src/business/utils/props-titre-etapes-ids-find.test.ts b/packages/api/src/business/utils/props-titre-etapes-ids-find.test.ts
index f10ba7abb..805b9ae9d 100644
--- a/packages/api/src/business/utils/props-titre-etapes-ids-find.test.ts
+++ b/packages/api/src/business/utils/props-titre-etapes-ids-find.test.ts
@@ -1,5 +1,5 @@
-import { contenusTitreEtapesIdsFind } from './props-titre-etapes-ids-find'
-import { newDemarcheId } from '../../database/models/_format/id-create'
+import { contenusTitreEtapesIdsFind } from './props-titre-etapes-ids-find.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
 import { describe, test, expect } from 'vitest'
 
 describe("liste des propriétés et les étapes qui en sont à l'origine", () => {
diff --git a/packages/api/src/business/utils/props-titre-etapes-ids-find.ts b/packages/api/src/business/utils/props-titre-etapes-ids-find.ts
index 1e2060b17..7585386b0 100644
--- a/packages/api/src/business/utils/props-titre-etapes-ids-find.ts
+++ b/packages/api/src/business/utils/props-titre-etapes-ids-find.ts
@@ -1,11 +1,11 @@
-import { TitreStatutId } from 'camino-common/src/static/titresStatuts'
+import { TitreStatutId } from 'camino-common/src/static/titresStatuts.js'
 import {
   ITitreDemarche,
   IContenusTitreEtapesIds,
   IContenuId
-} from '../../types'
+} from '../../types.js'
 
-import { titreContenuTitreEtapeFind } from '../rules/titre-prop-etape-find'
+import { titreContenuTitreEtapeFind } from '../rules/titre-prop-etape-find.js'
 
 export const contenusTitreEtapesIdsFind = (
   titreStatutId: TitreStatutId,
diff --git a/packages/api/src/business/utils/titre-activite-type-check.test.ts b/packages/api/src/business/utils/titre-activite-type-check.test.ts
index 566b0a724..5ad5c7eb1 100644
--- a/packages/api/src/business/utils/titre-activite-type-check.test.ts
+++ b/packages/api/src/business/utils/titre-activite-type-check.test.ts
@@ -1,4 +1,4 @@
-import { titreActiviteTypeCheck } from './titre-activite-type-check'
+import { titreActiviteTypeCheck } from './titre-activite-type-check.js'
 
 import {
   activiteTypeMAxmPxmGuyane,
@@ -9,7 +9,7 @@ import {
   titreMAxmMetropole,
   titreMPrmMetropole,
   titrePrwSansPays
-} from './__mocks__/titre-activite-type-check'
+} from './__mocks__/titre-activite-type-check.js'
 import { describe, test, expect } from 'vitest'
 
 describe("vérifie si un titre a des activités d'un certain type", () => {
diff --git a/packages/api/src/business/utils/titre-activite-type-check.ts b/packages/api/src/business/utils/titre-activite-type-check.ts
index 6dbb557e1..50f0bba3a 100644
--- a/packages/api/src/business/utils/titre-activite-type-check.ts
+++ b/packages/api/src/business/utils/titre-activite-type-check.ts
@@ -1,9 +1,9 @@
-import { IActiviteTypePays, ICommune, ITitreType } from '../../types'
+import { IActiviteTypePays, ICommune, ITitreType } from '../../types.js'
 import {
   Departements,
   isDepartementId
-} from 'camino-common/src/static/departement'
-import { Regions } from 'camino-common/src/static/region'
+} from 'camino-common/src/static/departement.js'
+import { Regions } from 'camino-common/src/static/region.js'
 
 /**
  * Vérifie que le titre peut recevoir un type d'activité
diff --git a/packages/api/src/business/utils/titre-activite-valide-check.test.ts b/packages/api/src/business/utils/titre-activite-valide-check.test.ts
index 7780b08df..9a26e8c24 100644
--- a/packages/api/src/business/utils/titre-activite-valide-check.test.ts
+++ b/packages/api/src/business/utils/titre-activite-valide-check.test.ts
@@ -1,8 +1,8 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import { titreActiviteValideCheck } from './titre-activite-valide-check'
+import { titreActiviteValideCheck } from './titre-activite-valide-check.js'
 
-import { titreValideCheck } from './titre-valide-check'
+import { titreValideCheck } from './titre-valide-check.js'
 
 import { vi, describe, test, expect } from 'vitest'
 
diff --git a/packages/api/src/business/utils/titre-activite-valide-check.ts b/packages/api/src/business/utils/titre-activite-valide-check.ts
index d13dfe5e3..a17def2e5 100644
--- a/packages/api/src/business/utils/titre-activite-valide-check.ts
+++ b/packages/api/src/business/utils/titre-activite-valide-check.ts
@@ -1,8 +1,7 @@
-import dateFormat from 'dateformat'
+import { toCaminoDate } from 'camino-common/src/date.js'
+import { ITitreDemarche } from '../../types.js'
 
-import { ITitreDemarche } from '../../types'
-
-import { titreValideCheck } from './titre-valide-check'
+import { titreValideCheck } from './titre-valide-check.js'
 
 /**
  * Vérifie si une activité doit exister
@@ -29,10 +28,7 @@ export const titreActiviteValideCheck = (
   if (date > aujourdhui) return false
 
   // si le titre est valide pendant la durée de l'activité
-  const dateDebut = dateFormat(
-    new Date(annee, (periodeId - 1) * months, 1),
-    'yyyy-mm-dd'
-  )
+  const dateDebut = toCaminoDate(new Date(annee, (periodeId - 1) * months, 1))
 
   // le titre n'est pas valide pour cette période
   // on ne crée pas l'activité
diff --git a/packages/api/src/business/utils/titre-coordonnees-find.test.ts b/packages/api/src/business/utils/titre-coordonnees-find.test.ts
index e63e74306..7aa180eaa 100644
--- a/packages/api/src/business/utils/titre-coordonnees-find.test.ts
+++ b/packages/api/src/business/utils/titre-coordonnees-find.test.ts
@@ -1,7 +1,7 @@
-import { titreCoordonneesFind } from './titre-coordonnees-find'
-import { geojsonCenter } from '../../tools/geojson'
+import { titreCoordonneesFind } from './titre-coordonnees-find.js'
+import { geojsonCenter } from '../../tools/geojson.js'
 
-import { titrePoints } from './__mocks__/titre-coordonnees-find'
+import { titrePoints } from './__mocks__/titre-coordonnees-find.js'
 import { vi, describe, test, expect } from 'vitest'
 
 vi.mock('../../tools/geojson', () => ({
diff --git a/packages/api/src/business/utils/titre-coordonnees-find.ts b/packages/api/src/business/utils/titre-coordonnees-find.ts
index 8348dea32..1aceae05c 100644
--- a/packages/api/src/business/utils/titre-coordonnees-find.ts
+++ b/packages/api/src/business/utils/titre-coordonnees-find.ts
@@ -1,6 +1,6 @@
-import { ITitrePoint } from '../../types'
+import { ITitrePoint } from '../../types.js'
 
-import { geojsonCenter } from '../../tools/geojson'
+import { geojsonCenter } from '../../tools/geojson.js'
 
 export const titreCoordonneesFind = (titrePoints?: ITitrePoint[] | null) => {
   if (!titrePoints?.length) return null
diff --git a/packages/api/src/business/utils/titre-demarches-etapes-rebuild.ts b/packages/api/src/business/utils/titre-demarches-etapes-rebuild.ts
index d20812868..8336f337b 100644
--- a/packages/api/src/business/utils/titre-demarches-etapes-rebuild.ts
+++ b/packages/api/src/business/utils/titre-demarches-etapes-rebuild.ts
@@ -1,6 +1,6 @@
-import { ITitreDemarche, ITitreEtape } from '../../types'
-import { titreDemarchePhaseCheck } from '../rules/titre-demarche-phase-check'
-import { titreDemarcheStatutIdFind } from '../rules/titre-demarche-statut-id-find'
+import { ITitreDemarche, ITitreEtape } from '../../types.js'
+import { titreDemarchePhaseCheck } from '../rules/titre-demarche-phase-check.js'
+import { titreDemarcheStatutIdFind } from '../rules/titre-demarche-statut-id-find.js'
 
 /**
  * Filtre les étapes antérieures à une date
diff --git a/packages/api/src/business/utils/titre-elements-sort-asc.test.ts b/packages/api/src/business/utils/titre-elements-sort-asc.test.ts
index 1d4906d87..b43760d9b 100644
--- a/packages/api/src/business/utils/titre-elements-sort-asc.test.ts
+++ b/packages/api/src/business/utils/titre-elements-sort-asc.test.ts
@@ -1,4 +1,4 @@
-import titreDemarchesSortAsc from './titre-elements-sort-asc'
+import titreDemarchesSortAsc from './titre-elements-sort-asc.js'
 import {
   titreDemarchesNoEtapesSortedAsc,
   titreDemarchesNoEtapesSortedDesc,
@@ -9,7 +9,7 @@ import {
   titreDemarchesSortedAscResult,
   titreDemarchesSortedDescEqual,
   titreDemarchesSortedDescEqualResult
-} from './__mocks__/titre-demarches-asc-sort-demarches'
+} from './__mocks__/titre-demarches-asc-sort-demarches.js'
 import { describe, test, expect } from 'vitest'
 
 describe('trie les démarches', () => {
diff --git a/packages/api/src/business/utils/titre-elements-sort-asc.ts b/packages/api/src/business/utils/titre-elements-sort-asc.ts
index c6d7cfc1d..30f339f50 100644
--- a/packages/api/src/business/utils/titre-elements-sort-asc.ts
+++ b/packages/api/src/business/utils/titre-elements-sort-asc.ts
@@ -1,7 +1,7 @@
 // classe les démarches selon la date de leur première étape
 // puis par ordre si les dates sont identiques
-import { ITitreDemarche } from '../../types'
-import { titreEtapesSortAscByOrdre } from './titre-etapes-sort'
+import { ITitreDemarche } from '../../types.js'
+import { titreEtapesSortAscByOrdre } from './titre-etapes-sort.js'
 
 const titreDemarcheSortAsc = (titreElements: ITitreDemarche[]) =>
   titreElements.slice().sort((a, b) => {
diff --git a/packages/api/src/business/utils/titre-etape-demarche-etape-type-find.test.ts b/packages/api/src/business/utils/titre-etape-demarche-etape-type-find.test.ts
index e95ca765c..85c9afcb5 100644
--- a/packages/api/src/business/utils/titre-etape-demarche-etape-type-find.test.ts
+++ b/packages/api/src/business/utils/titre-etape-demarche-etape-type-find.test.ts
@@ -1,5 +1,5 @@
-import { titreEtapeDemarcheEtapeTypeFind } from './titre-etape-demarche-etape-type-find'
-import { IDemarcheType } from '../../types'
+import { titreEtapeDemarcheEtapeTypeFind } from './titre-etape-demarche-etape-type-find.js'
+import { IDemarcheType } from '../../types.js'
 import { describe, test, expect } from 'vitest'
 
 const demarcheType = {
diff --git a/packages/api/src/business/utils/titre-etape-demarche-etape-type-find.ts b/packages/api/src/business/utils/titre-etape-demarche-etape-type-find.ts
index e3bc98344..e1c079764 100644
--- a/packages/api/src/business/utils/titre-etape-demarche-etape-type-find.ts
+++ b/packages/api/src/business/utils/titre-etape-demarche-etape-type-find.ts
@@ -1,5 +1,5 @@
-import { IEtapeType } from '../../types'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
+import { IEtapeType } from '../../types.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
 
 export const titreEtapeDemarcheEtapeTypeFind = (
   etapeTypeId: EtapeTypeId,
diff --git a/packages/api/src/business/utils/titre-etape-heritage-contenu-find.test.ts b/packages/api/src/business/utils/titre-etape-heritage-contenu-find.test.ts
index 1eddd68ab..199a8736b 100644
--- a/packages/api/src/business/utils/titre-etape-heritage-contenu-find.test.ts
+++ b/packages/api/src/business/utils/titre-etape-heritage-contenu-find.test.ts
@@ -5,16 +5,16 @@ import {
   Index,
   ISection,
   ITitreEtape
-} from '../../types'
+} from '../../types.js'
 
-import { objectClone } from '../../tools/index'
+import { objectClone } from '../../tools/index.js'
 
-import { etapeTypeSectionsFormat } from '../../api/_format/etapes-types'
+import { etapeTypeSectionsFormat } from '../../api/_format/etapes-types.js'
 import {
   etapeSectionsDictionaryBuild,
   heritageContenuFind,
   titreEtapeHeritageContenuFind
-} from './titre-etape-heritage-contenu-find'
+} from './titre-etape-heritage-contenu-find.js'
 import { vi, describe, test, expect } from 'vitest'
 
 vi.mock('../../api/_format/etapes-types', () => ({
diff --git a/packages/api/src/business/utils/titre-etape-heritage-contenu-find.ts b/packages/api/src/business/utils/titre-etape-heritage-contenu-find.ts
index de000ab42..24184e866 100644
--- a/packages/api/src/business/utils/titre-etape-heritage-contenu-find.ts
+++ b/packages/api/src/business/utils/titre-etape-heritage-contenu-find.ts
@@ -4,9 +4,9 @@ import {
   ISection,
   ISectionElementType,
   ITitreEtape
-} from '../../types'
+} from '../../types.js'
 
-import { etapeTypeSectionsFormat } from '../../api/_format/etapes-types'
+import { etapeTypeSectionsFormat } from '../../api/_format/etapes-types.js'
 
 const heritageContenuFind = (
   sectionId: string,
diff --git a/packages/api/src/business/utils/titre-etape-heritage-props-find.test.ts b/packages/api/src/business/utils/titre-etape-heritage-props-find.test.ts
index 677c2a8b6..dbf132879 100644
--- a/packages/api/src/business/utils/titre-etape-heritage-props-find.test.ts
+++ b/packages/api/src/business/utils/titre-etape-heritage-props-find.test.ts
@@ -3,14 +3,14 @@ import {
   IHeritageProps,
   ITitreEtape,
   ITitrePoint
-} from '../../types'
+} from '../../types.js'
 
 import {
   titreEtapeHeritagePropsFind,
   titreEtapePropsIds
-} from './titre-etape-heritage-props-find'
+} from './titre-etape-heritage-props-find.js'
 
-import { objectClone } from '../../tools/index'
+import { objectClone } from '../../tools/index.js'
 import { describe, test, expect } from 'vitest'
 
 /* eslint-disable @typescript-eslint/ban-ts-comment */
diff --git a/packages/api/src/business/utils/titre-etape-heritage-props-find.ts b/packages/api/src/business/utils/titre-etape-heritage-props-find.ts
index 3df24d33d..e3afb386c 100644
--- a/packages/api/src/business/utils/titre-etape-heritage-props-find.ts
+++ b/packages/api/src/business/utils/titre-etape-heritage-props-find.ts
@@ -4,11 +4,11 @@ import {
   ITitrePoint,
   ITitreIncertitudes,
   ITitreEntreprise
-} from '../../types'
-import { objectClone } from '../../tools/index'
-import { idGenerate } from '../../database/models/_format/id-create'
-import { SubstanceLegaleId } from 'camino-common/src/static/substancesLegales'
-import { CaminoDate } from 'camino-common/src/date'
+} from '../../types.js'
+import { objectClone } from '../../tools/index.js'
+import { idGenerate } from '../../database/models/_format/id-create.js'
+import { SubstanceLegaleId } from 'camino-common/src/static/substancesLegales.js'
+import { CaminoDate } from 'camino-common/src/date.js'
 
 const titreEtapePropsIds: (keyof ITitreEtape)[] = [
   'points',
diff --git a/packages/api/src/business/utils/titre-etapes-sort.test.ts b/packages/api/src/business/utils/titre-etapes-sort.test.ts
index 8a9595ba3..9abc69d9d 100644
--- a/packages/api/src/business/utils/titre-etapes-sort.test.ts
+++ b/packages/api/src/business/utils/titre-etapes-sort.test.ts
@@ -1,11 +1,11 @@
-import { IDemarcheType, IEtapeType, ITitreEtape } from '../../types'
+import { IDemarcheType, IEtapeType, ITitreEtape } from '../../types.js'
 
 import {
   titreEtapesSortAscByDate,
   titreEtapesSortAscByOrdre,
   titreEtapesSortDescByOrdre
-} from './titre-etapes-sort'
-import { newDemarcheId } from '../../database/models/_format/id-create'
+} from './titre-etapes-sort.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
 import { vi, describe, test, expect } from 'vitest'
 
 const titreEtapesSortedDescResult = [
diff --git a/packages/api/src/business/utils/titre-etapes-sort.ts b/packages/api/src/business/utils/titre-etapes-sort.ts
index 3474eaf23..5648f0c02 100644
--- a/packages/api/src/business/utils/titre-etapes-sort.ts
+++ b/packages/api/src/business/utils/titre-etapes-sort.ts
@@ -1,11 +1,11 @@
-import { DemarcheId, IDemarcheType, ITitreEtape } from '../../types'
+import { DemarcheId, IDemarcheType, ITitreEtape } from '../../types.js'
 import {
   demarcheDefinitionFind,
   IDemarcheDefinition,
   IDemarcheDefinitionRestrictions,
   isDemarcheDefinitionMachine
-} from '../rules-demarches/definitions'
-import { toMachineEtapes } from '../rules-demarches/machine-common'
+} from '../rules-demarches/definitions.js'
+import { toMachineEtapes } from '../rules-demarches/machine-common.js'
 
 // classe les étapes selon leur ordre inverse: 3, 2, 1.
 export const titreEtapesSortDescByOrdre = <
diff --git a/packages/api/src/business/utils/titre-slug-and-relations-update.test.integration.ts b/packages/api/src/business/utils/titre-slug-and-relations-update.test.integration.ts
index df332572f..335a6696e 100644
--- a/packages/api/src/business/utils/titre-slug-and-relations-update.test.integration.ts
+++ b/packages/api/src/business/utils/titre-slug-and-relations-update.test.integration.ts
@@ -1,10 +1,10 @@
-import { titreSlugAndRelationsUpdate } from './titre-slug-and-relations-update'
-import { titreCreate, titreGet } from '../../database/queries/titres'
-import { userSuper } from '../../database/user-super'
-import { dbManager } from '../../../tests/db-manager'
-import { ITitre } from '../../types'
-import Titres from '../../database/models/titres'
-import { objectClone } from '../../tools'
+import { titreSlugAndRelationsUpdate } from './titre-slug-and-relations-update.js'
+import { titreCreate, titreGet } from '../../database/queries/titres.js'
+import { userSuper } from '../../database/user-super.js'
+import { dbManager } from '../../../tests/db-manager.js'
+import { ITitre } from '../../types.js'
+import Titres from '../../database/models/titres.js'
+import { objectClone } from '../../tools/index.js'
 import { expect, test, describe, afterAll, beforeAll } from 'vitest'
 beforeAll(async () => {
   await dbManager.populateDb()
diff --git a/packages/api/src/business/utils/titre-slug-and-relations-update.ts b/packages/api/src/business/utils/titre-slug-and-relations-update.ts
index 71cd6e4bb..c7e4e2753 100644
--- a/packages/api/src/business/utils/titre-slug-and-relations-update.ts
+++ b/packages/api/src/business/utils/titre-slug-and-relations-update.ts
@@ -9,21 +9,21 @@ import {
   ITitrePoint,
   ITitrePointReference,
   IUtilisateur
-} from '../../types'
+} from '../../types.js'
 
-import titreDemarcheSortAsc from './titre-elements-sort-asc'
-import { titreEtapesSortAscByOrdre } from './titre-etapes-sort'
-import titreDemarcheOctroiDateDebutFind from '../rules/titre-demarche-octroi-date-debut-find'
-import { titresGet, titreUpdate } from '../../database/queries/titres'
-import { userSuper } from '../../database/user-super'
+import titreDemarcheSortAsc from './titre-elements-sort-asc.js'
+import { titreEtapesSortAscByOrdre } from './titre-etapes-sort.js'
+import titreDemarcheOctroiDateDebutFind from '../rules/titre-demarche-octroi-date-debut-find.js'
+import { titresGet, titreUpdate } from '../../database/queries/titres.js'
+import { userSuper } from '../../database/user-super.js'
 import cryptoRandomString from 'crypto-random-string'
-import { titreDemarcheUpdate } from '../../database/queries/titres-demarches'
-import { titreEtapeUpdate } from '../../database/queries/titres-etapes'
+import { titreDemarcheUpdate } from '../../database/queries/titres-demarches.js'
+import { titreEtapeUpdate } from '../../database/queries/titres-etapes.js'
 import {
   titrePointReferenceUpdate,
   titrePointUpdate
-} from '../../database/queries/titres-points'
-import { titreActiviteUpdate } from '../../database/queries/titres-activites'
+} from '../../database/queries/titres-points.js'
+import { titreActiviteUpdate } from '../../database/queries/titres-activites.js'
 
 const titreSlugFind = (titre: ITitre) => {
   const { domaineId, type, nom } = titre
diff --git a/packages/api/src/business/utils/titre-valide-check.test.ts b/packages/api/src/business/utils/titre-valide-check.test.ts
index 5a0a3b551..f7c120dfe 100644
--- a/packages/api/src/business/utils/titre-valide-check.test.ts
+++ b/packages/api/src/business/utils/titre-valide-check.test.ts
@@ -1,10 +1,10 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import { titreValideCheck } from './titre-valide-check'
-import { titreStatutIdFind } from '../rules/titre-statut-id-find'
-import { titreDemarchesEtapesRebuild } from './titre-demarches-etapes-rebuild'
+import { titreValideCheck } from './titre-valide-check.js'
+import { titreStatutIdFind } from '../rules/titre-statut-id-find.js'
+import { titreDemarchesEtapesRebuild } from './titre-demarches-etapes-rebuild.js'
 
-import { titreDemarches } from './__mocks__/titre-valide-check-demarches'
+import { titreDemarches } from './__mocks__/titre-valide-check-demarches.js'
 import { vi, describe, test, expect } from 'vitest'
 
 vi.mock('../rules/titre-statut-id-find', () => ({
diff --git a/packages/api/src/business/utils/titre-valide-check.ts b/packages/api/src/business/utils/titre-valide-check.ts
index 7af561302..fe537e561 100644
--- a/packages/api/src/business/utils/titre-valide-check.ts
+++ b/packages/api/src/business/utils/titre-valide-check.ts
@@ -1,7 +1,7 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
-import { titreStatutIdFind } from '../rules/titre-statut-id-find'
-import { titreDemarchesEtapesRebuild } from './titre-demarches-etapes-rebuild'
+import { titreStatutIdFind } from '../rules/titre-statut-id-find.js'
+import { titreDemarchesEtapesRebuild } from './titre-demarches-etapes-rebuild.js'
 
 /**
  * Vérifie la validité du titre pendant la période
diff --git a/packages/api/src/business/utils/urls-get.test.ts b/packages/api/src/business/utils/urls-get.test.ts
index dc3b22ca1..3e2604de3 100644
--- a/packages/api/src/business/utils/urls-get.test.ts
+++ b/packages/api/src/business/utils/urls-get.test.ts
@@ -1,11 +1,12 @@
-import { activitesUrlGet } from './urls-get'
+import { activitesUrlGet } from './urls-get.js'
 import { describe, test, expect } from 'vitest'
+import { CaminoAnnee, toCaminoAnnee } from 'camino-common/src/date.js'
 
 describe('activitesUrlGet', () => {
   test.each<
     [
       (
-        | { typesIds?: string[]; statutsIds?: string[]; annees?: number[] }
+        | { typesIds?: string[]; statutsIds?: string[]; annees?: CaminoAnnee[] }
         | undefined
       ),
       string
@@ -24,7 +25,7 @@ describe('activitesUrlGet', () => {
       'https://camino.beta.gouv.fr/activites?page=1&intervalle=200&ordre=asc&typesIds=toto%2Ctata'
     ],
     [
-      { typesIds: ['toto'], annees: [2010] },
+      { typesIds: ['toto'], annees: [toCaminoAnnee(2010)] },
       'https://camino.beta.gouv.fr/activites?page=1&intervalle=200&ordre=asc&typesIds=toto&annees=2010'
     ]
   ])('test la construction de l url des activités', (params, url) => {
diff --git a/packages/api/src/business/utils/urls-get.ts b/packages/api/src/business/utils/urls-get.ts
index 44b042cd5..d1c387778 100644
--- a/packages/api/src/business/utils/urls-get.ts
+++ b/packages/api/src/business/utils/urls-get.ts
@@ -1,3 +1,5 @@
+import { CaminoAnnee } from 'camino-common/src/date.js'
+
 export const titreUrlGet = (titreId: string) =>
   `${process.env.UI_URL}/titres/${titreId}`
 
@@ -7,7 +9,7 @@ export const activiteUrlGet = (activiteId: string) =>
 export const activitesUrlGet = (params?: {
   typesIds?: string[]
   statutsIds?: string[]
-  annees?: number[]
+  annees?: CaminoAnnee[]
 }): string => {
   const url = new URL(
     `${process.env.UI_URL ?? 'https://camino.beta.gouv.fr'}/activites`
diff --git a/packages/api/src/business/validations/__mocks__/contenu-dates-check-contenus.ts b/packages/api/src/business/validations/__mocks__/contenu-dates-check-contenus.ts
index 7654df7c4..a68a8c659 100644
--- a/packages/api/src/business/validations/__mocks__/contenu-dates-check-contenus.ts
+++ b/packages/api/src/business/validations/__mocks__/contenu-dates-check-contenus.ts
@@ -1,4 +1,4 @@
-import { IContenu, ISection } from '../../../types'
+import { IContenu, ISection } from '../../../types.js'
 
 const sections = [
   {
diff --git a/packages/api/src/business/validations/__mocks__/contenu-numbers-check-contenus.ts b/packages/api/src/business/validations/__mocks__/contenu-numbers-check-contenus.ts
index f197bbbce..c7590bd24 100644
--- a/packages/api/src/business/validations/__mocks__/contenu-numbers-check-contenus.ts
+++ b/packages/api/src/business/validations/__mocks__/contenu-numbers-check-contenus.ts
@@ -1,4 +1,4 @@
-import { ISection } from '../../../types'
+import { ISection } from '../../../types.js'
 
 const sections = [
   { id: 'section', elements: [{ id: 'number', type: 'number' }] }
diff --git a/packages/api/src/business/validations/__mocks__/titre-etape-numbers-validate.ts b/packages/api/src/business/validations/__mocks__/titre-etape-numbers-validate.ts
index 4853f247a..956fc9c58 100644
--- a/packages/api/src/business/validations/__mocks__/titre-etape-numbers-validate.ts
+++ b/packages/api/src/business/validations/__mocks__/titre-etape-numbers-validate.ts
@@ -1,4 +1,4 @@
-import { ITitreEtape, ISection } from '../../../types'
+import { ITitreEtape, ISection } from '../../../types.js'
 
 const titreEtapesSections = [
   {
diff --git a/packages/api/src/business/validations/__mocks__/titre-etape-points-validate.ts b/packages/api/src/business/validations/__mocks__/titre-etape-points-validate.ts
index d0db26cbd..068af80e7 100644
--- a/packages/api/src/business/validations/__mocks__/titre-etape-points-validate.ts
+++ b/packages/api/src/business/validations/__mocks__/titre-etape-points-validate.ts
@@ -1,4 +1,4 @@
-import { ITitrePoint } from '../../../types'
+import { ITitrePoint } from '../../../types.js'
 
 const titreEtapePointsValides = [
   {
diff --git a/packages/api/src/business/validations/document-input-validate.ts b/packages/api/src/business/validations/document-input-validate.ts
index a0826cf12..c48ff4e20 100644
--- a/packages/api/src/business/validations/document-input-validate.ts
+++ b/packages/api/src/business/validations/document-input-validate.ts
@@ -1,6 +1,6 @@
-import { IDocument } from '../../types'
+import { IDocument } from '../../types.js'
 
-import { dateValidate } from '../../tools/date'
+import { dateValidate } from '../../tools/date.js'
 
 export const documentInputValidate = async (document: IDocument) => {
   const errors = [] as string[]
diff --git a/packages/api/src/business/validations/document-updation-validate.ts b/packages/api/src/business/validations/document-updation-validate.ts
index 0123452f5..4556d5279 100644
--- a/packages/api/src/business/validations/document-updation-validate.ts
+++ b/packages/api/src/business/validations/document-updation-validate.ts
@@ -1,6 +1,6 @@
-import { IDocument } from '../../types'
+import { IDocument } from '../../types.js'
 
-import { dateValidate } from '../../tools/date'
+import { dateValidate } from '../../tools/date.js'
 
 export const documentUpdationValidate = async (document: IDocument) => {
   const errors = [] as string[]
diff --git a/packages/api/src/business/validations/documents-types-validate.test.ts b/packages/api/src/business/validations/documents-types-validate.test.ts
index 74cd7f611..2592027dc 100644
--- a/packages/api/src/business/validations/documents-types-validate.test.ts
+++ b/packages/api/src/business/validations/documents-types-validate.test.ts
@@ -1,7 +1,7 @@
-import { IDocument } from '../../types'
-import { DocumentType } from 'camino-common/src/static/documentsTypes'
+import { IDocument } from '../../types.js'
+import { DocumentType } from 'camino-common/src/static/documentsTypes.js'
 
-import { documentsTypesValidate } from './documents-types-validate'
+import { documentsTypesValidate } from './documents-types-validate.js'
 import { describe, test, expect } from 'vitest'
 describe('teste documentsTypesValidate', () => {
   test('aucun document type n’est possible', () => {
diff --git a/packages/api/src/business/validations/documents-types-validate.ts b/packages/api/src/business/validations/documents-types-validate.ts
index 8d03475ff..e1baab01f 100644
--- a/packages/api/src/business/validations/documents-types-validate.ts
+++ b/packages/api/src/business/validations/documents-types-validate.ts
@@ -1,5 +1,5 @@
-import { IDocument } from '../../types'
-import { DocumentType } from 'camino-common/src/static/documentsTypes'
+import { IDocument } from '../../types.js'
+import { DocumentType } from 'camino-common/src/static/documentsTypes.js'
 
 export const documentsTypesValidate = (
   documents?: IDocument[] | null,
diff --git a/packages/api/src/business/validations/titre-activite-complete-check.ts b/packages/api/src/business/validations/titre-activite-complete-check.ts
index 2d21743ff..423ea0fb0 100644
--- a/packages/api/src/business/validations/titre-activite-complete-check.ts
+++ b/packages/api/src/business/validations/titre-activite-complete-check.ts
@@ -1,7 +1,7 @@
-import { IContenu, IDocument, ISection } from '../../types'
+import { IContenu, IDocument, ISection } from '../../types.js'
 
-import { documentsTypesValidate } from './documents-types-validate'
-import { DocumentType } from 'camino-common/src/static/documentsTypes'
+import { documentsTypesValidate } from './documents-types-validate.js'
+import { DocumentType } from 'camino-common/src/static/documentsTypes.js'
 
 export const titreActiviteCompleteCheck = (
   sections: ISection[],
diff --git a/packages/api/src/business/validations/titre-activite-deletion-validate.ts b/packages/api/src/business/validations/titre-activite-deletion-validate.ts
index 8c787336c..435ffab5e 100644
--- a/packages/api/src/business/validations/titre-activite-deletion-validate.ts
+++ b/packages/api/src/business/validations/titre-activite-deletion-validate.ts
@@ -1,4 +1,4 @@
-import { ITitreActivite } from '../../types'
+import { ITitreActivite } from '../../types.js'
 
 export const titreActiviteDeletionValidate = (
   titreActivite: ITitreActivite
diff --git a/packages/api/src/business/validations/titre-activite-input-validate.ts b/packages/api/src/business/validations/titre-activite-input-validate.ts
index 7dbcd05c6..dd80fec14 100644
--- a/packages/api/src/business/validations/titre-activite-input-validate.ts
+++ b/packages/api/src/business/validations/titre-activite-input-validate.ts
@@ -1,8 +1,8 @@
-import { ITitreActivite, ISection } from '../../types'
+import { ITitreActivite, ISection } from '../../types.js'
 
-import { contenuNumbersCheck } from './utils/contenu-numbers-check'
-import { propsDatesCheck } from './utils/props-dates-check'
-import { contenuDatesCheck } from './utils/contenu-dates-check'
+import { contenuNumbersCheck } from './utils/contenu-numbers-check.js'
+import { propsDatesCheck } from './utils/props-dates-check.js'
+import { contenuDatesCheck } from './utils/contenu-dates-check.js'
 
 const datePropsNames = ['date'] as [keyof ITitreActivite]
 
diff --git a/packages/api/src/business/validations/titre-demarche-etat-validate.test.ts b/packages/api/src/business/validations/titre-demarche-etat-validate.test.ts
index d3dbc8f70..dc1ed9389 100644
--- a/packages/api/src/business/validations/titre-demarche-etat-validate.test.ts
+++ b/packages/api/src/business/validations/titre-demarche-etat-validate.test.ts
@@ -1,8 +1,8 @@
-import { IDemarcheType, ITitre, ITitreEtape, ITitreType } from '../../types'
+import { IDemarcheType, ITitre, ITitreEtape, ITitreType } from '../../types.js'
 
-import { titreDemarcheUpdatedEtatValidate } from './titre-demarche-etat-validate'
-import { newDemarcheId } from '../../database/models/_format/id-create'
-import { EtapesTypesEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts'
+import { titreDemarcheUpdatedEtatValidate } from './titre-demarche-etat-validate.js'
+import { newDemarcheId } from '../../database/models/_format/id-create.js'
+import { EtapesTypesEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts.js'
 import { describe, test, expect } from 'vitest'
 describe('teste titreDemarcheUpdatedEtatValidate', () => {
   test('ajoute une étape à une démarche vide', () => {
diff --git a/packages/api/src/business/validations/titre-demarche-etat-validate.ts b/packages/api/src/business/validations/titre-demarche-etat-validate.ts
index 4bc8b8159..2564d3af1 100644
--- a/packages/api/src/business/validations/titre-demarche-etat-validate.ts
+++ b/packages/api/src/business/validations/titre-demarche-etat-validate.ts
@@ -5,19 +5,19 @@ import {
   IDemarcheType,
   ITitreDemarche,
   DemarcheId
-} from '../../types'
+} from '../../types.js'
 
 import {
   demarcheDefinitionFind,
   IDemarcheDefinitionRestrictions,
   isDemarcheDefinitionMachine
-} from '../rules-demarches/definitions'
-import { contenusTitreEtapesIdsFind } from '../utils/props-titre-etapes-ids-find'
-import { titreContenuFormat } from '../../database/models/_format/titre-contenu'
-import { titreEtapesSortAscByDate } from '../utils/titre-etapes-sort'
-import { titreEtapeEtatValidate } from './titre-etape-etat-validate'
-import { objectClone } from '../../tools/index'
-import { toMachineEtapes } from '../rules-demarches/machine-common'
+} from '../rules-demarches/definitions.js'
+import { contenusTitreEtapesIdsFind } from '../utils/props-titre-etapes-ids-find.js'
+import { titreContenuFormat } from '../../database/models/_format/titre-contenu.js'
+import { titreEtapesSortAscByDate } from '../utils/titre-etapes-sort.js'
+import { titreEtapeEtatValidate } from './titre-etape-etat-validate.js'
+import { objectClone } from '../../tools/index.js'
+import { toMachineEtapes } from '../rules-demarches/machine-common.js'
 
 const titreDemarcheEtapesBuild = (
   titreEtape: ITitreEtape,
diff --git a/packages/api/src/business/validations/titre-demarche-updation-validate.ts b/packages/api/src/business/validations/titre-demarche-updation-validate.ts
index 7d627a232..81eaa9169 100644
--- a/packages/api/src/business/validations/titre-demarche-updation-validate.ts
+++ b/packages/api/src/business/validations/titre-demarche-updation-validate.ts
@@ -1,4 +1,4 @@
-import { ITitreDemarche } from '../../types'
+import { ITitreDemarche } from '../../types.js'
 
 export const titreDemarcheUpdationValidate = async (
   titreDemarcheNew: ITitreDemarche,
diff --git a/packages/api/src/business/validations/titre-etape-etat-validate.test.ts b/packages/api/src/business/validations/titre-etape-etat-validate.test.ts
index 699dc4af2..0e2d54285 100644
--- a/packages/api/src/business/validations/titre-etape-etat-validate.test.ts
+++ b/packages/api/src/business/validations/titre-etape-etat-validate.test.ts
@@ -1,11 +1,11 @@
-import { ITitreEtape } from '../../types'
+import { ITitreEtape } from '../../types.js'
 
 import {
   etapesSuivantesEnAttenteGet,
   titreEtapeTypeIdRestrictionsFind
-} from './titre-etape-etat-validate'
-import { restrictionsArmRet } from '../rules-demarches/arm/ret'
-import { etatInformationsGet } from '../rules-demarches/etat-cycles'
+} from './titre-etape-etat-validate.js'
+import { restrictionsArmRet } from '../rules-demarches/arm/ret.js'
+import { etatInformationsGet } from '../rules-demarches/etat-cycles.js'
 import { describe, test, expect } from 'vitest'
 describe('teste etapesSuivantesEnAttenteGet', () => {
   test('retourne la seule étape déjà effectuée', () => {
diff --git a/packages/api/src/business/validations/titre-etape-etat-validate.ts b/packages/api/src/business/validations/titre-etape-etat-validate.ts
index 5150bfa94..b3edeb8d6 100644
--- a/packages/api/src/business/validations/titre-etape-etat-validate.ts
+++ b/packages/api/src/business/validations/titre-etape-etat-validate.ts
@@ -1,5 +1,5 @@
 // valide la date et la position de l'étape en fonction des autres étapes
-import { ITitreEtape, IContenu, Index } from '../../types'
+import { ITitreEtape, IContenu, Index } from '../../types.js'
 
 import {
   ITitreCondition,
@@ -7,7 +7,7 @@ import {
   IEtapeTypeIdCondition,
   IDemarcheDefinitionRestrictions,
   IDemarcheDefinitionRestrictionsProps
-} from '../rules-demarches/definitions'
+} from '../rules-demarches/definitions.js'
 
 const contenuConditionMatch = (
   condition: IContenuElementCondition,
diff --git a/packages/api/src/business/validations/titre-etape-points-validate.test.ts b/packages/api/src/business/validations/titre-etape-points-validate.test.ts
index 3d5b16694..a98e90d48 100644
--- a/packages/api/src/business/validations/titre-etape-points-validate.test.ts
+++ b/packages/api/src/business/validations/titre-etape-points-validate.test.ts
@@ -1,9 +1,9 @@
-import { titreEtapePointsValidate } from './titre-etape-points-validate'
+import { titreEtapePointsValidate } from './titre-etape-points-validate.js'
 
 import {
   titreEtapePointsValides,
   titreEtapePointsReferenceManquante
-} from './__mocks__/titre-etape-points-validate'
+} from './__mocks__/titre-etape-points-validate.js'
 import { describe, test, expect } from 'vitest'
 describe("vérifie la validité des coordonnées des points d'une étape", () => {
   test('les points ont des coordonnées de référence', () => {
diff --git a/packages/api/src/business/validations/titre-etape-points-validate.ts b/packages/api/src/business/validations/titre-etape-points-validate.ts
index 3c3db55a7..7162f3327 100644
--- a/packages/api/src/business/validations/titre-etape-points-validate.ts
+++ b/packages/api/src/business/validations/titre-etape-points-validate.ts
@@ -1,4 +1,4 @@
-import { ITitrePoint } from '../../types'
+import { ITitrePoint } from '../../types.js'
 
 export const titreEtapePointsValidate = (titrePoints: ITitrePoint[]) => {
   const errors = titrePoints.reduce((errors: string[], point) => {
diff --git a/packages/api/src/business/validations/titre-etape-type-and-status-validate.test.ts b/packages/api/src/business/validations/titre-etape-type-and-status-validate.test.ts
index 51172d04f..2ff226e8f 100644
--- a/packages/api/src/business/validations/titre-etape-type-and-status-validate.test.ts
+++ b/packages/api/src/business/validations/titre-etape-type-and-status-validate.test.ts
@@ -1,7 +1,7 @@
-import { IEtapeType } from '../../types'
+import { IEtapeType } from '../../types.js'
 
-import { titreEtapeTypeAndStatusValidate } from './titre-etape-type-and-status-validate'
-import { titreEtapeDemarcheEtapeTypeFind } from '../utils/titre-etape-demarche-etape-type-find'
+import { titreEtapeTypeAndStatusValidate } from './titre-etape-type-and-status-validate.js'
+import { titreEtapeDemarcheEtapeTypeFind } from '../utils/titre-etape-demarche-etape-type-find.js'
 import { vi, describe, test, expect } from 'vitest'
 vi.mock('../utils/titre-etape-demarche-etape-type-find', () => ({
   titreEtapeDemarcheEtapeTypeFind: vi.fn()
diff --git a/packages/api/src/business/validations/titre-etape-type-and-status-validate.ts b/packages/api/src/business/validations/titre-etape-type-and-status-validate.ts
index 1a4fb3b36..8ffbdcb18 100644
--- a/packages/api/src/business/validations/titre-etape-type-and-status-validate.ts
+++ b/packages/api/src/business/validations/titre-etape-type-and-status-validate.ts
@@ -1,10 +1,10 @@
-import { IEtapeType } from '../../types'
+import { IEtapeType } from '../../types.js'
 
 // valide le type et le statut de l'étape en fonction des type d'étapes d'une démarche
-import { titreEtapeDemarcheEtapeTypeFind } from '../utils/titre-etape-demarche-etape-type-find'
-import { getEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts'
-import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
+import { titreEtapeDemarcheEtapeTypeFind } from '../utils/titre-etape-demarche-etape-type-find.js'
+import { getEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts.js'
+import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
 
 export const titreEtapeTypeAndStatusValidate = (
   etapeTypeId: EtapeTypeId,
diff --git a/packages/api/src/business/validations/titre-etape-updation-validate.test.ts b/packages/api/src/business/validations/titre-etape-updation-validate.test.ts
index 2b011a4d8..d587b8ca5 100644
--- a/packages/api/src/business/validations/titre-etape-updation-validate.test.ts
+++ b/packages/api/src/business/validations/titre-etape-updation-validate.test.ts
@@ -1,13 +1,18 @@
-import { ITitreEtape, ITitreDemarche, ITitrePoint, ITitre } from '../../types'
+import {
+  ITitreEtape,
+  ITitreDemarche,
+  ITitrePoint,
+  ITitre
+} from '../../types.js'
 
 import {
   titreEtapeCompleteValidate,
   titreEtapeUpdationValidate
-} from './titre-etape-updation-validate'
-import { SubstanceLegaleId } from 'camino-common/src/static/substancesLegales'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { userSuper } from '../../database/user-super'
+} from './titre-etape-updation-validate.js'
+import { SubstanceLegaleId } from 'camino-common/src/static/substancesLegales.js'
+import { TitreTypeId } from 'camino-common/src/static/titresTypes.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
+import { userSuper } from '../../database/user-super.js'
 import { describe, test, expect } from 'vitest'
 describe('valide l’étape avant de l’enregistrer', () => {
   test.each<[SubstanceLegaleId[], EtapeTypeId, TitreTypeId, boolean]>([
diff --git a/packages/api/src/business/validations/titre-etape-updation-validate.ts b/packages/api/src/business/validations/titre-etape-updation-validate.ts
index 1a667e59b..5e2d4dc21 100644
--- a/packages/api/src/business/validations/titre-etape-updation-validate.ts
+++ b/packages/api/src/business/validations/titre-etape-updation-validate.ts
@@ -7,33 +7,33 @@ import {
   ISDOMZone,
   IContenu,
   ITitreEntreprise
-} from '../../types'
-
-import { titreEtapeTypeAndStatusValidate } from './titre-etape-type-and-status-validate'
-import { titreEtapePointsValidate } from './titre-etape-points-validate'
-import { titreDemarcheUpdatedEtatValidate } from './titre-demarche-etat-validate'
-import { heritageContenuValidate } from './utils/heritage-contenu-validate'
-import { propsNumbersCheck } from './utils/props-numbers-check'
-import { contenuNumbersCheck } from './utils/contenu-numbers-check'
-import { propsDatesCheck } from './utils/props-dates-check'
-import { contenuDatesCheck } from './utils/contenu-dates-check'
-import { documentsTypesValidate } from './documents-types-validate'
-import { documentTypeIdsBySdomZonesGet } from '../../api/graphql/resolvers/_titre-etape'
-import { objectClone } from '../../tools'
+} from '../../types.js'
+
+import { titreEtapeTypeAndStatusValidate } from './titre-etape-type-and-status-validate.js'
+import { titreEtapePointsValidate } from './titre-etape-points-validate.js'
+import { titreDemarcheUpdatedEtatValidate } from './titre-demarche-etat-validate.js'
+import { heritageContenuValidate } from './utils/heritage-contenu-validate.js'
+import { propsNumbersCheck } from './utils/props-numbers-check.js'
+import { contenuNumbersCheck } from './utils/contenu-numbers-check.js'
+import { propsDatesCheck } from './utils/props-dates-check.js'
+import { contenuDatesCheck } from './utils/contenu-dates-check.js'
+import { documentsTypesValidate } from './documents-types-validate.js'
+import { documentTypeIdsBySdomZonesGet } from '../../api/graphql/resolvers/_titre-etape.js'
+import { objectClone } from '../../tools/index.js'
 import {
   canEditAmodiataires,
   canEditDates,
   canEditDuree,
   canEditTitulaires,
   dureeOptionalCheck
-} from 'camino-common/src/permissions/titres-etapes'
-import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
+} from 'camino-common/src/permissions/titres-etapes.js'
+import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes.js'
+import { TitreTypeId } from 'camino-common/src/static/titresTypes.js'
 import {
   DocumentType,
   DocumentsTypes
-} from 'camino-common/src/static/documentsTypes'
-import { User } from 'camino-common/src/roles'
+} from 'camino-common/src/static/documentsTypes.js'
+import { User } from 'camino-common/src/roles.js'
 const numberProps = ['duree', 'surface'] as unknown as [keyof ITitreEtape]
 
 const dateProps = ['date', 'dateDebut', 'dateFin'] as unknown as [
diff --git a/packages/api/src/business/validations/titre-links-validate.ts b/packages/api/src/business/validations/titre-links-validate.ts
index 8a41c094c..9b90088a3 100644
--- a/packages/api/src/business/validations/titre-links-validate.ts
+++ b/packages/api/src/business/validations/titre-links-validate.ts
@@ -1,5 +1,5 @@
-import { ITitre, ITitreDemarche } from '../../types'
-import { getLinkConfig } from 'camino-common/src/permissions/titres'
+import { ITitre, ITitreDemarche } from '../../types.js'
+import { getLinkConfig } from 'camino-common/src/permissions/titres.js'
 
 export const checkTitreLinks = (
   titre: Pick<ITitre, 'typeId'>,
diff --git a/packages/api/src/business/validations/utilisateur-updation-validate.ts b/packages/api/src/business/validations/utilisateur-updation-validate.ts
index 4efd00840..3f582693f 100644
--- a/packages/api/src/business/validations/utilisateur-updation-validate.ts
+++ b/packages/api/src/business/validations/utilisateur-updation-validate.ts
@@ -1,12 +1,12 @@
-import { IUtilisateur } from '../../types'
+import { IUtilisateur } from '../../types.js'
 
-import { userGet } from '../../database/queries/utilisateurs'
+import { userGet } from '../../database/queries/utilisateurs.js'
 
 import {
   isAdministration,
   isAdministrationAdmin,
   isSuper
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 
 /**
  * Valide la mise à jour d'un utilisateur
diff --git a/packages/api/src/business/validations/utils/contenu-dates-check.test.ts b/packages/api/src/business/validations/utils/contenu-dates-check.test.ts
index d8735b49f..18f6fdcab 100644
--- a/packages/api/src/business/validations/utils/contenu-dates-check.test.ts
+++ b/packages/api/src/business/validations/utils/contenu-dates-check.test.ts
@@ -1,11 +1,11 @@
-import { contenuDatesCheck } from './contenu-dates-check'
+import { contenuDatesCheck } from './contenu-dates-check.js'
 import { describe, test, expect } from 'vitest'
 import {
   sections,
   sectionsSansElement,
   contenuDatesValides,
   contenuDatesInvalides
-} from '../__mocks__/contenu-dates-check-contenus'
+} from '../__mocks__/contenu-dates-check-contenus.js'
 
 describe("vérifie la validité des propriétés dont le type est date d'une étape", () => {
   test("la sections n'a pas d'éléments", () => {
diff --git a/packages/api/src/business/validations/utils/contenu-dates-check.ts b/packages/api/src/business/validations/utils/contenu-dates-check.ts
index 4164004fb..2f135507d 100644
--- a/packages/api/src/business/validations/utils/contenu-dates-check.ts
+++ b/packages/api/src/business/validations/utils/contenu-dates-check.ts
@@ -1,6 +1,6 @@
-import { ISection, IContenu } from '../../../types'
+import { ISection, IContenu } from '../../../types.js'
 
-import { dateValidate } from '../../../tools/date'
+import { dateValidate } from '../../../tools/date.js'
 
 export const contenuDatesCheck = (sections: ISection[], contenu: IContenu) => {
   const errors = sections.reduce(
diff --git a/packages/api/src/business/validations/utils/contenu-numbers-check.test.ts b/packages/api/src/business/validations/utils/contenu-numbers-check.test.ts
index 69b8f7e82..1ecef08b3 100644
--- a/packages/api/src/business/validations/utils/contenu-numbers-check.test.ts
+++ b/packages/api/src/business/validations/utils/contenu-numbers-check.test.ts
@@ -1,10 +1,10 @@
-import { contenuNumbersCheck } from './contenu-numbers-check'
+import { contenuNumbersCheck } from './contenu-numbers-check.js'
 import {
   contenuNumber,
   contenuNumberNeg,
   sections,
   sectionsSansElement
-} from '../__mocks__/contenu-numbers-check-contenus'
+} from '../__mocks__/contenu-numbers-check-contenus.js'
 import { describe, test, expect } from 'vitest'
 
 describe('vérifie la validité du contenu de type nombre', () => {
diff --git a/packages/api/src/business/validations/utils/contenu-numbers-check.ts b/packages/api/src/business/validations/utils/contenu-numbers-check.ts
index 10f5da27e..e9908d7ef 100644
--- a/packages/api/src/business/validations/utils/contenu-numbers-check.ts
+++ b/packages/api/src/business/validations/utils/contenu-numbers-check.ts
@@ -1,4 +1,4 @@
-import { IContenu, ISection } from '../../../types'
+import { IContenu, ISection } from '../../../types.js'
 
 export const contenuNumbersCheck = (
   sections: ISection[],
diff --git a/packages/api/src/business/validations/utils/heritage-contenu-validate.test.ts b/packages/api/src/business/validations/utils/heritage-contenu-validate.test.ts
index 5aeba5bc0..05aabcd2d 100644
--- a/packages/api/src/business/validations/utils/heritage-contenu-validate.test.ts
+++ b/packages/api/src/business/validations/utils/heritage-contenu-validate.test.ts
@@ -1,9 +1,9 @@
 /* eslint-disable @typescript-eslint/ban-ts-comment */
 
-import { ISectionElement } from '../../../types'
+import { ISectionElement } from '../../../types.js'
 import { describe, test, expect } from 'vitest'
 
-import { heritageContenuValidate } from './heritage-contenu-validate'
+import { heritageContenuValidate } from './heritage-contenu-validate.js'
 
 describe('vérifie la structure json de heritageContenu', () => {
   test('la structure est correcte', () => {
diff --git a/packages/api/src/business/validations/utils/heritage-contenu-validate.ts b/packages/api/src/business/validations/utils/heritage-contenu-validate.ts
index 324773be1..99420593f 100644
--- a/packages/api/src/business/validations/utils/heritage-contenu-validate.ts
+++ b/packages/api/src/business/validations/utils/heritage-contenu-validate.ts
@@ -1,4 +1,4 @@
-import { ISection, IHeritageContenu } from '../../../types'
+import { ISection, IHeritageContenu } from '../../../types.js'
 
 export const heritageContenuValidate = (
   sections?: ISection[] | null,
diff --git a/packages/api/src/business/validations/utils/props-dates-check.ts b/packages/api/src/business/validations/utils/props-dates-check.ts
index 8a28245fb..82249cba4 100644
--- a/packages/api/src/business/validations/utils/props-dates-check.ts
+++ b/packages/api/src/business/validations/utils/props-dates-check.ts
@@ -1,5 +1,5 @@
-import { dateValidate } from '../../../tools/date'
-import { ITitreActivite, ITitreEtape } from '../../../types'
+import { dateValidate } from '../../../tools/date.js'
+import { ITitreActivite, ITitreEtape } from '../../../types.js'
 
 /**
  * Vérifie que les champs `date` d'une étape ou activité sont valides
diff --git a/packages/api/src/config/files.ts b/packages/api/src/config/files.ts
index fd9558e7e..c302e070e 100644
--- a/packages/api/src/config/files.ts
+++ b/packages/api/src/config/files.ts
@@ -1,5 +1,5 @@
-import dirCreate from '../tools/dir-create'
-import { DOCUMENTS_REPERTOIRES } from '../types'
+import dirCreate from '../tools/dir-create.js'
+import { DOCUMENTS_REPERTOIRES } from '../types.js'
 
 export const filesInit = async () => {
   await dirCreate('files').catch()
diff --git a/packages/api/src/config/logger.test.ts b/packages/api/src/config/logger.test.ts
index 69c10428d..620304f9b 100644
--- a/packages/api/src/config/logger.test.ts
+++ b/packages/api/src/config/logger.test.ts
@@ -1,4 +1,4 @@
-import { newDateFormated } from './logger'
+import { newDateFormated } from './logger.js'
 import { test, expect } from 'vitest'
 test('newDateFormated', () => {
   expect(
diff --git a/packages/api/src/config/proj4.ts b/packages/api/src/config/proj4.ts
index 029179acd..4e4ec409f 100644
--- a/packages/api/src/config/proj4.ts
+++ b/packages/api/src/config/proj4.ts
@@ -1,5 +1,5 @@
 import proj4 from 'proj4'
-import { sortedGeoSystemes } from 'camino-common/src/static/geoSystemes'
+import { sortedGeoSystemes } from 'camino-common/src/static/geoSystemes.js'
 
 export const geoSystemesInit = () => {
   // initialise les définitions proj4
diff --git a/packages/api/src/daily_tasks.ts b/packages/api/src/daily_tasks.ts
index d04de0e75..f6fd0fbc0 100644
--- a/packages/api/src/daily_tasks.ts
+++ b/packages/api/src/daily_tasks.ts
@@ -1,14 +1,14 @@
 import './init'
-import daily from './business/daily'
-import documentsCheck from './tools/documents/check'
-import { matomoCacheInit } from './tools/api-matomo'
-import demarchesDefinitionsCheck from './tools/demarches/definitions-check'
-import { consoleOverride } from './config/logger'
-import { mailjetSend } from './tools/api-mailjet/emails'
+import daily from './business/daily.js'
+import documentsCheck from './tools/documents/check.js'
+import { matomoCacheInit } from './tools/api-matomo/index.js'
+import demarchesDefinitionsCheck from './tools/demarches/definitions-check.js'
+import { consoleOverride } from './config/logger.js'
+import { mailjetSend } from './tools/api-mailjet/emails.js'
 import { readFileSync, writeFileSync, createWriteStream } from 'fs'
-import { titreTypeDemarcheTypeEtapeTypeCheck } from './tools/demarches/tde-check'
-import { etapeStatutCheck } from './tools/demarches/etape-statut-check'
-import { documentsClean } from './tools/documents/clean'
+import { titreTypeDemarcheTypeEtapeTypeCheck } from './tools/demarches/tde-check.js'
+import { etapeStatutCheck } from './tools/demarches/etape-statut-check.js'
+import { documentsClean } from './tools/documents/clean.js'
 import * as Console from 'console'
 
 const logFile = '/tmp/cron.log'
diff --git a/packages/api/src/database/init.ts b/packages/api/src/database/init.ts
index c36987317..3925f6cbc 100644
--- a/packages/api/src/database/init.ts
+++ b/packages/api/src/database/init.ts
@@ -1,8 +1,8 @@
-import { knex } from '../knex'
-import { utilisateursCount } from './queries/utilisateurs'
-import { userSuper } from './user-super'
-import { userAdd } from '../knex/user-add'
-import dateFormat from 'dateformat'
+import { knex } from '../knex.js'
+import { utilisateursCount } from './queries/utilisateurs.js'
+import { userSuper } from './user-super.js'
+import { userAdd } from '../knex/user-add.js'
+import { getCurrent } from 'camino-common/src/date.js'
 
 export const databaseInit = async () => {
   await knex.migrate.latest()
@@ -22,7 +22,7 @@ const createAdminUserAtStartup = async () => {
       id: 'admin',
       email: process.env.ADMIN_EMAIL!,
       role: 'super',
-      dateCreation: dateFormat(new Date(), 'yyyy-mm-dd')
+      dateCreation: getCurrent()
     })
   }
 }
diff --git a/packages/api/src/database/models/_format/id-create.ts b/packages/api/src/database/models/_format/id-create.ts
index d8c57bd22..0939c657f 100644
--- a/packages/api/src/database/models/_format/id-create.ts
+++ b/packages/api/src/database/models/_format/id-create.ts
@@ -1,5 +1,5 @@
 import cryptoRandomString from 'crypto-random-string'
-import { DemarcheId } from '../../../types'
+import { DemarcheId } from '../../../types.js'
 
 export const idGenerate = <T extends string = string>(): T =>
   cryptoRandomString({ length: 24, type: 'alphanumeric' }) as T
diff --git a/packages/api/src/database/models/_format/titre-contenu.test.ts b/packages/api/src/database/models/_format/titre-contenu.test.ts
index c50c05328..74682df4c 100644
--- a/packages/api/src/database/models/_format/titre-contenu.test.ts
+++ b/packages/api/src/database/models/_format/titre-contenu.test.ts
@@ -1,5 +1,5 @@
-import { ITitreDemarche } from '../../../types'
-import { titreContenuFormat } from './titre-contenu'
+import { ITitreDemarche } from '../../../types.js'
+import { titreContenuFormat } from './titre-contenu.js'
 import { describe, test, expect } from 'vitest'
 describe('formatage du contenu', () => {
   test("formate le contenu d'un titre", () => {
diff --git a/packages/api/src/database/models/_format/titre-contenu.ts b/packages/api/src/database/models/_format/titre-contenu.ts
index 405cb0ae0..2a7a08fb4 100644
--- a/packages/api/src/database/models/_format/titre-contenu.ts
+++ b/packages/api/src/database/models/_format/titre-contenu.ts
@@ -3,7 +3,7 @@ import {
   ITitreDemarche,
   ITitreEtape,
   IContenusTitreEtapesIds
-} from '../../../types'
+} from '../../../types.js'
 
 /**
  * Formate le contenu du titre d'après les contenus d'étape
diff --git a/packages/api/src/database/models/_format/titre-etape-heritage.ts b/packages/api/src/database/models/_format/titre-etape-heritage.ts
index 3f2b43d60..a06ef8812 100644
--- a/packages/api/src/database/models/_format/titre-etape-heritage.ts
+++ b/packages/api/src/database/models/_format/titre-etape-heritage.ts
@@ -1,6 +1,6 @@
-import { IHeritageProps, IFields, IHeritageContenu } from '../../../types'
-import { userSuper } from '../../user-super'
-import { titreEtapeGet } from '../../queries/titres-etapes'
+import { IHeritageProps, IFields, IHeritageContenu } from '../../../types.js'
+import { userSuper } from '../../user-super.js'
+import { titreEtapeGet } from '../../queries/titres-etapes.js'
 
 const heritagePropsFormat = async (heritageProps: IHeritageProps) => {
   for (const propId of Object.keys(heritageProps)) {
diff --git a/packages/api/src/database/models/activites-statuts.ts b/packages/api/src/database/models/activites-statuts.ts
index 1859a7b83..b65ad1ff2 100644
--- a/packages/api/src/database/models/activites-statuts.ts
+++ b/packages/api/src/database/models/activites-statuts.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { IActiviteStatut } from '../../types'
+import { IActiviteStatut } from '../../types.js'
 
 interface ActivitesStatuts extends IActiviteStatut {}
 
diff --git a/packages/api/src/database/models/activites-types--documents-types.ts b/packages/api/src/database/models/activites-types--documents-types.ts
index 4a0b03f5b..11a1eeb1f 100644
--- a/packages/api/src/database/models/activites-types--documents-types.ts
+++ b/packages/api/src/database/models/activites-types--documents-types.ts
@@ -1,6 +1,6 @@
 import { Model } from 'objection'
 
-import { IActiviteTypeDocumentType } from '../../types'
+import { IActiviteTypeDocumentType } from '../../types.js'
 
 interface ActivitesTypesDocumentsTypes extends IActiviteTypeDocumentType {}
 
diff --git a/packages/api/src/database/models/activites-types--pays.ts b/packages/api/src/database/models/activites-types--pays.ts
index e76b55c6a..648feb21c 100644
--- a/packages/api/src/database/models/activites-types--pays.ts
+++ b/packages/api/src/database/models/activites-types--pays.ts
@@ -1,6 +1,6 @@
 import { Model } from 'objection'
 
-import { IActiviteTypePays } from '../../types'
+import { IActiviteTypePays } from '../../types.js'
 
 interface ActivitesTypesPays extends IActiviteTypePays {}
 
diff --git a/packages/api/src/database/models/activites-types--titres-types.ts b/packages/api/src/database/models/activites-types--titres-types.ts
index dcd9510b8..fe10b8ad6 100644
--- a/packages/api/src/database/models/activites-types--titres-types.ts
+++ b/packages/api/src/database/models/activites-types--titres-types.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { IActiviteTypeTitreType } from '../../types'
+import { IActiviteTypeTitreType } from '../../types.js'
 
 interface ActivitesTypesTitresTypes extends IActiviteTypeTitreType {}
 
diff --git a/packages/api/src/database/models/activites-types.ts b/packages/api/src/database/models/activites-types.ts
index fd8961665..02a3f7852 100644
--- a/packages/api/src/database/models/activites-types.ts
+++ b/packages/api/src/database/models/activites-types.ts
@@ -1,9 +1,9 @@
 import { Model, Modifiers } from 'objection'
-import { IActiviteType } from '../../types'
-import TitresTypes from './titres-types'
-import Administrations from './administrations'
-import DocumentsTypes from './documents-types'
-import ActivitesTypesPays from './activites-types--pays'
+import { IActiviteType } from '../../types.js'
+import TitresTypes from './titres-types.js'
+import Administrations from './administrations.js'
+import DocumentsTypes from './documents-types.js'
+import ActivitesTypesPays from './activites-types--pays.js'
 
 interface ActivitesTypes extends IActiviteType {}
 
diff --git a/packages/api/src/database/models/administrations-activites-types-emails.ts b/packages/api/src/database/models/administrations-activites-types-emails.ts
index 67ab3eda5..3d3cc6e8a 100644
--- a/packages/api/src/database/models/administrations-activites-types-emails.ts
+++ b/packages/api/src/database/models/administrations-activites-types-emails.ts
@@ -1,6 +1,6 @@
 import { Model } from 'objection'
 
-import { IAdministrationActiviteTypeEmail } from '../../types'
+import { IAdministrationActiviteTypeEmail } from '../../types.js'
 
 interface AdministrationsActivitesTypesEmails
   extends IAdministrationActiviteTypeEmail {}
diff --git a/packages/api/src/database/models/administrations-activites-types.ts b/packages/api/src/database/models/administrations-activites-types.ts
index 7d31e12f3..58ceb9c7f 100644
--- a/packages/api/src/database/models/administrations-activites-types.ts
+++ b/packages/api/src/database/models/administrations-activites-types.ts
@@ -1,6 +1,6 @@
 import { Model } from 'objection'
 
-import { IAdministrationActiviteType } from '../../types'
+import { IAdministrationActiviteType } from '../../types.js'
 
 interface AdministrationsActivitesTypes extends IAdministrationActiviteType {}
 
diff --git a/packages/api/src/database/models/administrations-titres-types-etapes-types.ts b/packages/api/src/database/models/administrations-titres-types-etapes-types.ts
index 38e90ec1e..ab7abfdd0 100644
--- a/packages/api/src/database/models/administrations-titres-types-etapes-types.ts
+++ b/packages/api/src/database/models/administrations-titres-types-etapes-types.ts
@@ -1,7 +1,7 @@
 import { Model, Modifiers } from 'objection'
-import { IAdministrationTitreTypeEtapeType } from '../../types'
-import TitresTypes from './titres-types'
-import EtapesTypes from './etapes-types'
+import { IAdministrationTitreTypeEtapeType } from '../../types.js'
+import TitresTypes from './titres-types.js'
+import EtapesTypes from './etapes-types.js'
 
 interface AdministrationsTitresTypesEtapesTypes
   extends IAdministrationTitreTypeEtapeType {}
diff --git a/packages/api/src/database/models/administrations-titres-types-titres-statuts.ts b/packages/api/src/database/models/administrations-titres-types-titres-statuts.ts
index f937bb6ae..ec5c062a2 100644
--- a/packages/api/src/database/models/administrations-titres-types-titres-statuts.ts
+++ b/packages/api/src/database/models/administrations-titres-types-titres-statuts.ts
@@ -1,6 +1,6 @@
 import { Model, Modifiers } from 'objection'
-import { IAdministrationTitreTypeTitreStatut } from '../../types'
-import TitresTypes from './titres-types'
+import { IAdministrationTitreTypeTitreStatut } from '../../types.js'
+import TitresTypes from './titres-types.js'
 
 interface AdministrationsTitresTypesTitresStatuts
   extends IAdministrationTitreTypeTitreStatut {}
diff --git a/packages/api/src/database/models/administrations.ts b/packages/api/src/database/models/administrations.ts
index e4ecb96e7..26e601089 100644
--- a/packages/api/src/database/models/administrations.ts
+++ b/packages/api/src/database/models/administrations.ts
@@ -1,11 +1,11 @@
 import { Model } from 'objection'
 
-import { IAdministration } from '../../types'
+import { IAdministration } from '../../types.js'
 
-import AdministrationsTitresTypesEtapesTypes from './administrations-titres-types-etapes-types'
-import AdministrationsTitresTypesTitresStatuts from './administrations-titres-types-titres-statuts'
-import Utilisateurs from './utilisateurs'
-import ActivitesTypes from './activites-types'
+import AdministrationsTitresTypesEtapesTypes from './administrations-titres-types-etapes-types.js'
+import AdministrationsTitresTypesTitresStatuts from './administrations-titres-types-titres-statuts.js'
+import Utilisateurs from './utilisateurs.js'
+import ActivitesTypes from './activites-types.js'
 
 interface Administrations extends IAdministration {}
 
diff --git a/packages/api/src/database/models/caches.ts b/packages/api/src/database/models/caches.ts
index 9720c066c..3d549f74b 100644
--- a/packages/api/src/database/models/caches.ts
+++ b/packages/api/src/database/models/caches.ts
@@ -1,6 +1,6 @@
 import { Model } from 'objection'
 
-import { ICache } from '../../types'
+import { ICache } from '../../types.js'
 
 interface Caches extends ICache {}
 
diff --git a/packages/api/src/database/models/communes.ts b/packages/api/src/database/models/communes.ts
index f31da2d71..ad5272626 100644
--- a/packages/api/src/database/models/communes.ts
+++ b/packages/api/src/database/models/communes.ts
@@ -1,6 +1,6 @@
 import { Model } from 'objection'
 
-import { ICommune } from '../../types'
+import { ICommune } from '../../types.js'
 
 interface Communes extends ICommune {}
 
diff --git a/packages/api/src/database/models/demarches-types.ts b/packages/api/src/database/models/demarches-types.ts
index 5ddb2bc5e..256af7027 100644
--- a/packages/api/src/database/models/demarches-types.ts
+++ b/packages/api/src/database/models/demarches-types.ts
@@ -1,7 +1,7 @@
 import { Model, Modifiers } from 'objection'
 
-import { IDemarcheType } from '../../types'
-import EtapesTypes from './etapes-types'
+import { IDemarcheType } from '../../types.js'
+import EtapesTypes from './etapes-types.js'
 
 interface DemarchesTypes extends IDemarcheType {}
 
diff --git a/packages/api/src/database/models/documents-types.ts b/packages/api/src/database/models/documents-types.ts
index 014bc691c..6ce8c9617 100644
--- a/packages/api/src/database/models/documents-types.ts
+++ b/packages/api/src/database/models/documents-types.ts
@@ -1,7 +1,7 @@
 import { Model } from 'objection'
 
-import { DocumentType } from 'camino-common/src/static/documentsTypes'
-import ActivitesTypes from './activites-types'
+import { DocumentType } from 'camino-common/src/static/documentsTypes.js'
+import ActivitesTypes from './activites-types.js'
 
 interface DocumentsTypes extends DocumentType {}
 
diff --git a/packages/api/src/database/models/documents.ts b/packages/api/src/database/models/documents.ts
index 5af1df2e8..ccfa095d7 100644
--- a/packages/api/src/database/models/documents.ts
+++ b/packages/api/src/database/models/documents.ts
@@ -1,10 +1,10 @@
 import { Model, Pojo } from 'objection'
 
-import { IDocument } from '../../types'
-import DocumentsTypes from './documents-types'
-import TitresEtapes from './titres-etapes'
-import TitresActivites from './titres-activites'
-import Entreprises from './entreprises'
+import { IDocument } from '../../types.js'
+import DocumentsTypes from './documents-types.js'
+import TitresEtapes from './titres-etapes.js'
+import TitresActivites from './titres-activites.js'
+import Entreprises from './entreprises.js'
 
 interface Document extends IDocument {}
 class Document extends Model {
diff --git a/packages/api/src/database/models/domaines.ts b/packages/api/src/database/models/domaines.ts
index 892de054f..9eb8fbfb1 100644
--- a/packages/api/src/database/models/domaines.ts
+++ b/packages/api/src/database/models/domaines.ts
@@ -1,7 +1,7 @@
 import { Model, Modifiers } from 'objection'
 
-import { IDomaine } from '../../types'
-import TitresTypes from './titres-types'
+import { IDomaine } from '../../types.js'
+import TitresTypes from './titres-types.js'
 
 interface Domaines extends IDomaine {}
 
diff --git a/packages/api/src/database/models/entreprises-etablissements.ts b/packages/api/src/database/models/entreprises-etablissements.ts
index a688b3388..1b2f733e0 100644
--- a/packages/api/src/database/models/entreprises-etablissements.ts
+++ b/packages/api/src/database/models/entreprises-etablissements.ts
@@ -1,6 +1,6 @@
 import { Model, Modifiers } from 'objection'
 
-import { IEntrepriseEtablissement } from '../../types'
+import { IEntrepriseEtablissement } from '../../types.js'
 
 interface EntreprisesEtablissements extends IEntrepriseEtablissement {}
 
diff --git a/packages/api/src/database/models/entreprises.ts b/packages/api/src/database/models/entreprises.ts
index 669b0394a..f98de34aa 100644
--- a/packages/api/src/database/models/entreprises.ts
+++ b/packages/api/src/database/models/entreprises.ts
@@ -1,10 +1,10 @@
 import { Model, Pojo, ref } from 'objection'
 
-import { IEntreprise } from '../../types'
-import EntreprisesEtablissements from './entreprises-etablissements'
-import Utilisateurs from './utilisateurs'
-import Titres from './titres'
-import Document from './documents'
+import { IEntreprise } from '../../types.js'
+import EntreprisesEtablissements from './entreprises-etablissements.js'
+import Utilisateurs from './utilisateurs.js'
+import Titres from './titres.js'
+import Document from './documents.js'
 
 interface Entreprises extends IEntreprise {}
 
diff --git a/packages/api/src/database/models/etapes-types--justificatifs-types.ts b/packages/api/src/database/models/etapes-types--justificatifs-types.ts
index 1b544af23..662be15d3 100644
--- a/packages/api/src/database/models/etapes-types--justificatifs-types.ts
+++ b/packages/api/src/database/models/etapes-types--justificatifs-types.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { IEtapeTypeJustificatifType } from '../../types'
+import { IEtapeTypeJustificatifType } from '../../types.js'
 
 interface EtapesTypesJustificatifsTypes extends IEtapeTypeJustificatifType {}
 
diff --git a/packages/api/src/database/models/etapes-types.ts b/packages/api/src/database/models/etapes-types.ts
index b9a93fd70..aa480e989 100644
--- a/packages/api/src/database/models/etapes-types.ts
+++ b/packages/api/src/database/models/etapes-types.ts
@@ -1,8 +1,8 @@
 import { Model, Modifiers } from 'objection'
 
-import { IEtapeType } from '../../types'
-import AdministrationsTitresTypesEtapesTypes from './administrations-titres-types-etapes-types'
-import DocumentsTypes from './documents-types'
+import { IEtapeType } from '../../types.js'
+import AdministrationsTitresTypesEtapesTypes from './administrations-titres-types-etapes-types.js'
+import DocumentsTypes from './documents-types.js'
 
 interface EtapesTypes extends IEtapeType {}
 
diff --git a/packages/api/src/database/models/forets.ts b/packages/api/src/database/models/forets.ts
index 9b9802853..7dd33897b 100644
--- a/packages/api/src/database/models/forets.ts
+++ b/packages/api/src/database/models/forets.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { IForet } from '../../types'
+import { IForet } from '../../types.js'
 
 interface Forets extends IForet {}
 
diff --git a/packages/api/src/database/models/journaux.ts b/packages/api/src/database/models/journaux.ts
index ee8215ef2..813ccd0d3 100644
--- a/packages/api/src/database/models/journaux.ts
+++ b/packages/api/src/database/models/journaux.ts
@@ -1,9 +1,9 @@
 import { Model } from 'objection'
 
-import { IJournaux } from '../../types'
-import { idGenerate } from './_format/id-create'
-import Utilisateurs from './utilisateurs'
-import Titres from './titres'
+import { IJournaux } from '../../types.js'
+import { idGenerate } from './_format/id-create.js'
+import Utilisateurs from './utilisateurs.js'
+import Titres from './titres.js'
 
 interface Journaux extends IJournaux {}
 
diff --git a/packages/api/src/database/models/sdom-zones.ts b/packages/api/src/database/models/sdom-zones.ts
index 5429ee201..f1fa54d91 100644
--- a/packages/api/src/database/models/sdom-zones.ts
+++ b/packages/api/src/database/models/sdom-zones.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { ISDOMZone } from '../../types'
+import { ISDOMZone } from '../../types.js'
 
 interface SDOMZones extends ISDOMZone {}
 
diff --git a/packages/api/src/database/models/titres--sdom-zones.ts b/packages/api/src/database/models/titres--sdom-zones.ts
index f4627b45b..a39b7183a 100644
--- a/packages/api/src/database/models/titres--sdom-zones.ts
+++ b/packages/api/src/database/models/titres--sdom-zones.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { ITitreSDOMZone } from '../../types'
+import { ITitreSDOMZone } from '../../types.js'
 
 interface TitresSDOMZones extends ITitreSDOMZone {}
 
diff --git a/packages/api/src/database/models/titres--titres.ts b/packages/api/src/database/models/titres--titres.ts
index 607718577..330bdcef0 100644
--- a/packages/api/src/database/models/titres--titres.ts
+++ b/packages/api/src/database/models/titres--titres.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { ITitreTitre } from '../../types'
+import { ITitreTitre } from '../../types.js'
 
 export interface TitreTitre extends ITitreTitre {}
 
diff --git a/packages/api/src/database/models/titres-activites.ts b/packages/api/src/database/models/titres-activites.ts
index 7ca2bbd8c..a6cc99a53 100644
--- a/packages/api/src/database/models/titres-activites.ts
+++ b/packages/api/src/database/models/titres-activites.ts
@@ -1,13 +1,13 @@
 import { Model, Modifiers, Pojo, QueryContext } from 'objection'
 
-import { ITitreActivite } from '../../types'
-import { idGenerate } from './_format/id-create'
-import ActivitesTypes from './activites-types'
-import Titres from './titres'
-import ActivitesStatuts from './activites-statuts'
-import Utilisateurs from './utilisateurs'
-import DocumentsTypes from './documents-types'
-import Document from './documents'
+import { ITitreActivite } from '../../types.js'
+import { idGenerate } from './_format/id-create.js'
+import ActivitesTypes from './activites-types.js'
+import Titres from './titres.js'
+import ActivitesStatuts from './activites-statuts.js'
+import Utilisateurs from './utilisateurs.js'
+import DocumentsTypes from './documents-types.js'
+import Document from './documents.js'
 
 interface TitresActivites extends ITitreActivite {}
 
diff --git a/packages/api/src/database/models/titres-communes.ts b/packages/api/src/database/models/titres-communes.ts
index e026de779..dd29e8e40 100644
--- a/packages/api/src/database/models/titres-communes.ts
+++ b/packages/api/src/database/models/titres-communes.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { ITitreCommune } from '../../types'
+import { ITitreCommune } from '../../types.js'
 
 interface TitresCommunes extends ITitreCommune {}
 
diff --git a/packages/api/src/database/models/titres-demarches.ts b/packages/api/src/database/models/titres-demarches.ts
index 56eebba05..121075833 100644
--- a/packages/api/src/database/models/titres-demarches.ts
+++ b/packages/api/src/database/models/titres-demarches.ts
@@ -1,12 +1,12 @@
 import { Model, Modifiers, Pojo, QueryContext } from 'objection'
 
-import { ITitreDemarche } from '../../types'
-import { newDemarcheId } from './_format/id-create'
-import DemarchesTypes from './demarches-types'
-import TitresTypes from './titres-types'
-import Titres from './titres'
-import TitresEtapes from './titres-etapes'
-import TitresPhases from './titres-phases'
+import { ITitreDemarche } from '../../types.js'
+import { newDemarcheId } from './_format/id-create.js'
+import DemarchesTypes from './demarches-types.js'
+import TitresTypes from './titres-types.js'
+import Titres from './titres.js'
+import TitresEtapes from './titres-etapes.js'
+import TitresPhases from './titres-phases.js'
 
 export interface DBTitresDemarches extends ITitreDemarche {
   archive: boolean
diff --git a/packages/api/src/database/models/titres-etapes-justificatifs.ts b/packages/api/src/database/models/titres-etapes-justificatifs.ts
index 6d48afd6a..9602fc754 100644
--- a/packages/api/src/database/models/titres-etapes-justificatifs.ts
+++ b/packages/api/src/database/models/titres-etapes-justificatifs.ts
@@ -1,7 +1,7 @@
 import { Model } from 'objection'
-import { ITitreEtapeJustificatif } from '../../types'
-import TitresEtapes from './titres-etapes'
-import Document from './documents'
+import { ITitreEtapeJustificatif } from '../../types.js'
+import TitresEtapes from './titres-etapes.js'
+import Document from './documents.js'
 
 interface TitresEtapesJustificatifs extends ITitreEtapeJustificatif {}
 
diff --git a/packages/api/src/database/models/titres-etapes.ts b/packages/api/src/database/models/titres-etapes.ts
index 686507383..de52b50fd 100644
--- a/packages/api/src/database/models/titres-etapes.ts
+++ b/packages/api/src/database/models/titres-etapes.ts
@@ -1,21 +1,21 @@
 import { Model, Pojo, QueryContext } from 'objection'
 
-import { ITitreEtape, ITitrePoint } from '../../types'
+import { ITitreEtape, ITitrePoint } from '../../types.js'
 
 import {
   heritagePropsFormat,
   heritageContenuFormat
-} from './_format/titre-etape-heritage'
-import { idGenerate } from './_format/id-create'
-import EtapesTypes from './etapes-types'
-import TitresDemarches from './titres-demarches'
-import TitresPoints from './titres-points'
-import Entreprises from './entreprises'
-import Document from './documents'
-import Communes from './communes'
-import Forets from './forets'
-import SDOMZones from './sdom-zones'
-import Journaux from './journaux'
+} from './_format/titre-etape-heritage.js'
+import { idGenerate } from './_format/id-create.js'
+import EtapesTypes from './etapes-types.js'
+import TitresDemarches from './titres-demarches.js'
+import TitresPoints from './titres-points.js'
+import Entreprises from './entreprises.js'
+import Document from './documents.js'
+import Communes from './communes.js'
+import Forets from './forets.js'
+import SDOMZones from './sdom-zones.js'
+import Journaux from './journaux.js'
 
 export interface DBTitresEtapes extends ITitreEtape {
   archive: boolean
diff --git a/packages/api/src/database/models/titres-forets.ts b/packages/api/src/database/models/titres-forets.ts
index d9f9bae09..b5adcb5cc 100644
--- a/packages/api/src/database/models/titres-forets.ts
+++ b/packages/api/src/database/models/titres-forets.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { ITitreForet } from '../../types'
+import { ITitreForet } from '../../types.js'
 
 interface TitresForets extends ITitreForet {}
 
diff --git a/packages/api/src/database/models/titres-incertitudes.ts b/packages/api/src/database/models/titres-incertitudes.ts
index 4959c0a62..d269a8484 100644
--- a/packages/api/src/database/models/titres-incertitudes.ts
+++ b/packages/api/src/database/models/titres-incertitudes.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { ITitreIncertitudes } from '../../types'
+import { ITitreIncertitudes } from '../../types.js'
 
 interface TitresIncertitudes extends ITitreIncertitudes {}
 
diff --git a/packages/api/src/database/models/titres-phases.ts b/packages/api/src/database/models/titres-phases.ts
index 8f6b09b7f..107355747 100644
--- a/packages/api/src/database/models/titres-phases.ts
+++ b/packages/api/src/database/models/titres-phases.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { ITitrePhase } from '../../types'
+import { ITitrePhase } from '../../types.js'
 
 interface TitresPhases extends ITitrePhase {}
 
diff --git a/packages/api/src/database/models/titres-points-references.ts b/packages/api/src/database/models/titres-points-references.ts
index 6a6aeb751..091411cc3 100644
--- a/packages/api/src/database/models/titres-points-references.ts
+++ b/packages/api/src/database/models/titres-points-references.ts
@@ -1,7 +1,7 @@
 import { Model, Modifiers, Pojo, QueryContext } from 'objection'
 
-import { ITitrePointReference } from '../../types'
-import { idGenerate } from './_format/id-create'
+import { ITitrePointReference } from '../../types.js'
+import { idGenerate } from './_format/id-create.js'
 
 interface TitresPointsReferences extends ITitrePointReference {}
 
diff --git a/packages/api/src/database/models/titres-points.ts b/packages/api/src/database/models/titres-points.ts
index fac04b838..3e15ebb27 100644
--- a/packages/api/src/database/models/titres-points.ts
+++ b/packages/api/src/database/models/titres-points.ts
@@ -1,8 +1,8 @@
 import { Model, Modifiers, Pojo, QueryContext } from 'objection'
 
-import { ITitrePoint, ITitrePointReference } from '../../types'
-import { idGenerate } from './_format/id-create'
-import TitresPointsReferences from './titres-points-references'
+import { ITitrePoint, ITitrePointReference } from '../../types.js'
+import { idGenerate } from './_format/id-create.js'
+import TitresPointsReferences from './titres-points-references.js'
 
 interface TitresPoints extends ITitrePoint {}
 
diff --git a/packages/api/src/database/models/titres-types--demarches-types-etapes-types-justificatifs-types.ts b/packages/api/src/database/models/titres-types--demarches-types-etapes-types-justificatifs-types.ts
index eba82c0cc..b5e7b5002 100644
--- a/packages/api/src/database/models/titres-types--demarches-types-etapes-types-justificatifs-types.ts
+++ b/packages/api/src/database/models/titres-types--demarches-types-etapes-types-justificatifs-types.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { ITitreTypeDemarcheTypeEtapeTypeJustificatifType } from '../../types'
+import { ITitreTypeDemarcheTypeEtapeTypeJustificatifType } from '../../types.js'
 
 interface TitresTypesDemarchesTypesEtapesTypesJustificatifsTypes
   extends ITitreTypeDemarcheTypeEtapeTypeJustificatifType {}
diff --git a/packages/api/src/database/models/titres-types--demarches-types-etapes-types.ts b/packages/api/src/database/models/titres-types--demarches-types-etapes-types.ts
index 67a805018..a0d51ec08 100644
--- a/packages/api/src/database/models/titres-types--demarches-types-etapes-types.ts
+++ b/packages/api/src/database/models/titres-types--demarches-types-etapes-types.ts
@@ -1,8 +1,8 @@
 import { Model } from 'objection'
-import { ITitreTypeDemarcheTypeEtapeType } from '../../types'
-import EtapesTypes from './etapes-types'
-import DocumentsTypes from './documents-types'
-import DemarchesTypes from './demarches-types'
+import { ITitreTypeDemarcheTypeEtapeType } from '../../types.js'
+import EtapesTypes from './etapes-types.js'
+import DocumentsTypes from './documents-types.js'
+import DemarchesTypes from './demarches-types.js'
 
 interface TitresTypesDemarchesTypesEtapesTypes
   extends ITitreTypeDemarcheTypeEtapeType {}
diff --git a/packages/api/src/database/models/titres-types--demarches-types.ts b/packages/api/src/database/models/titres-types--demarches-types.ts
index 85d9608f7..4297cca35 100644
--- a/packages/api/src/database/models/titres-types--demarches-types.ts
+++ b/packages/api/src/database/models/titres-types--demarches-types.ts
@@ -1,5 +1,5 @@
 import { Model } from 'objection'
-import { ITitreTypeDemarcheType } from '../../types'
+import { ITitreTypeDemarcheType } from '../../types.js'
 
 interface TitresTypesDemarchesTypes extends ITitreTypeDemarcheType {}
 
diff --git a/packages/api/src/database/models/titres-types-types.ts b/packages/api/src/database/models/titres-types-types.ts
index 113f45d8e..47eb7c92c 100644
--- a/packages/api/src/database/models/titres-types-types.ts
+++ b/packages/api/src/database/models/titres-types-types.ts
@@ -1,7 +1,7 @@
 import { Model, Modifiers } from 'objection'
 
-import { ITitreTypeType } from '../../types'
-import TitresTypes from './titres-types'
+import { ITitreTypeType } from '../../types.js'
+import TitresTypes from './titres-types.js'
 
 interface TitresTypesTypes extends ITitreTypeType {}
 
diff --git a/packages/api/src/database/models/titres-types.ts b/packages/api/src/database/models/titres-types.ts
index 24b95af04..bc17db218 100644
--- a/packages/api/src/database/models/titres-types.ts
+++ b/packages/api/src/database/models/titres-types.ts
@@ -1,10 +1,10 @@
 import { Model, Modifiers } from 'objection'
 
-import { ITitreType } from '../../types'
+import { ITitreType } from '../../types.js'
 
-import Domaines from './domaines'
-import DemarchesTypes from './demarches-types'
-import TitresTypesTypes from './titres-types-types'
+import Domaines from './domaines.js'
+import DemarchesTypes from './demarches-types.js'
+import TitresTypesTypes from './titres-types-types.js'
 
 interface TitresTypes extends ITitreType {}
 
diff --git a/packages/api/src/database/models/titres.ts b/packages/api/src/database/models/titres.ts
index 051277a7c..d2a90f1da 100644
--- a/packages/api/src/database/models/titres.ts
+++ b/packages/api/src/database/models/titres.ts
@@ -1,22 +1,22 @@
 import { Model, Pojo, QueryContext, ref } from 'objection'
 
-import { ITitre } from '../../types'
-import Communes from './communes'
-import Domaines from './domaines'
-import Entreprises from './entreprises'
-import TitresDemarches from './titres-demarches'
-import TitresEtapes from './titres-etapes'
-import TitresPoints from './titres-points'
-import Types from './titres-types'
-import Forets from './forets'
-
-import { titreInsertFormat } from './_format/titre-insert'
-import { titreContenuFormat } from './_format/titre-contenu'
-import { idGenerate } from './_format/id-create'
+import { ITitre } from '../../types.js'
+import Communes from './communes.js'
+import Domaines from './domaines.js'
+import Entreprises from './entreprises.js'
+import TitresDemarches from './titres-demarches.js'
+import TitresEtapes from './titres-etapes.js'
+import TitresPoints from './titres-points.js'
+import Types from './titres-types.js'
+import Forets from './forets.js'
+
+import { titreInsertFormat } from './_format/titre-insert.js'
+import { titreContenuFormat } from './_format/titre-contenu.js'
+import { idGenerate } from './_format/id-create.js'
 import slugify from '@sindresorhus/slugify'
 import cryptoRandomString from 'crypto-random-string'
-import SDOMZones from './sdom-zones'
-import TitresActivites from './titres-activites'
+import SDOMZones from './sdom-zones.js'
+import TitresActivites from './titres-activites.js'
 
 export interface DBTitre extends ITitre {
   archive: boolean
diff --git a/packages/api/src/database/models/utilisateurs--titres.ts b/packages/api/src/database/models/utilisateurs--titres.ts
index e3ab1a39c..b6c08cc27 100644
--- a/packages/api/src/database/models/utilisateurs--titres.ts
+++ b/packages/api/src/database/models/utilisateurs--titres.ts
@@ -1,6 +1,6 @@
 import { Model } from 'objection'
-import { IUtilisateurTitre } from '../../types'
-import Utilisateurs from './utilisateurs'
+import { IUtilisateurTitre } from '../../types.js'
+import Utilisateurs from './utilisateurs.js'
 
 interface UtilisateursTitres extends IUtilisateurTitre {}
 
diff --git a/packages/api/src/database/models/utilisateurs.ts b/packages/api/src/database/models/utilisateurs.ts
index 77eda347b..81a9c3a39 100644
--- a/packages/api/src/database/models/utilisateurs.ts
+++ b/packages/api/src/database/models/utilisateurs.ts
@@ -1,8 +1,8 @@
 import { Model, Pojo } from 'objection'
 
-import { IUtilisateur } from '../../types'
-import Entreprises from './entreprises'
-import Administrations from './administrations'
+import { IUtilisateur } from '../../types.js'
+import Entreprises from './entreprises.js'
+import Administrations from './administrations.js'
 
 interface Utilisateurs extends IUtilisateur {}
 
diff --git a/packages/api/src/database/queries/_titres-filters.ts b/packages/api/src/database/queries/_titres-filters.ts
index 0e7b04cf3..8b629a6da 100644
--- a/packages/api/src/database/queries/_titres-filters.ts
+++ b/packages/api/src/database/queries/_titres-filters.ts
@@ -1,16 +1,16 @@
 import { QueryBuilder, raw } from 'objection'
 
-import { stringSplit } from './_utils'
+import { stringSplit } from './_utils.js'
 
-import Titres from '../models/titres'
-import TitresDemarches from '../models/titres-demarches'
-import TitresActivites from '../models/titres-activites'
+import Titres from '../models/titres.js'
+import TitresDemarches from '../models/titres-demarches.js'
+import TitresActivites from '../models/titres-activites.js'
 import {
   DepartementId,
   departements
-} from 'camino-common/src/static/departement'
-import { regions } from 'camino-common/src/static/region'
-import { isPaysId } from 'camino-common/src/static/pays'
+} from 'camino-common/src/static/departement.js'
+import { regions } from 'camino-common/src/static/region.js'
+import { isPaysId } from 'camino-common/src/static/pays.js'
 
 type ITitreTableName = 'titres' | 'titre'
 type ITitreRootName = 'titres' | 'titresDemarches' | 'titresActivites'
diff --git a/packages/api/src/database/queries/_utils.test.ts b/packages/api/src/database/queries/_utils.test.ts
index aa0e5be99..14fb9dc0b 100644
--- a/packages/api/src/database/queries/_utils.test.ts
+++ b/packages/api/src/database/queries/_utils.test.ts
@@ -1,4 +1,4 @@
-import { stringSplit } from './_utils'
+import { stringSplit } from './_utils.js'
 import { describe, test, expect } from 'vitest'
 describe('sépare les groupes de mots', () => {
   test.each([
diff --git a/packages/api/src/database/queries/administrations.ts b/packages/api/src/database/queries/administrations.ts
index 40e8ebcde..6e7244ec6 100644
--- a/packages/api/src/database/queries/administrations.ts
+++ b/packages/api/src/database/queries/administrations.ts
@@ -5,18 +5,18 @@ import {
   IAdministrationTitreTypeTitreStatut,
   IFields,
   IUtilisateur
-} from '../../types'
-
-import graphBuild from './graph/build'
-import { fieldsFormat } from './graph/fields-format'
-import options from './_options'
-
-import Administrations from '../models/administrations'
-import { administrationsQueryModify } from './permissions/administrations'
-import AdministrationsTitresTypesTitresStatuts from '../models/administrations-titres-types-titres-statuts'
-import AdministrationsTitresTypesEtapesTypes from '../models/administrations-titres-types-etapes-types'
-import AdministrationsActivitesTypes from '../models/administrations-activites-types'
-import AdministrationsActivitesTypesEmails from '../models/administrations-activites-types-emails'
+} from '../../types.js'
+
+import graphBuild from './graph/build.js'
+import { fieldsFormat } from './graph/fields-format.js'
+import options from './_options.js'
+
+import Administrations from '../models/administrations.js'
+import { administrationsQueryModify } from './permissions/administrations.js'
+import AdministrationsTitresTypesTitresStatuts from '../models/administrations-titres-types-titres-statuts.js'
+import AdministrationsTitresTypesEtapesTypes from '../models/administrations-titres-types-etapes-types.js'
+import AdministrationsActivitesTypes from '../models/administrations-activites-types.js'
+import AdministrationsActivitesTypesEmails from '../models/administrations-activites-types-emails.js'
 
 const administrationsQueryBuild = (
   { fields }: { fields?: IFields },
diff --git a/packages/api/src/database/queries/caches.ts b/packages/api/src/database/queries/caches.ts
index f567cd8db..db9e1b542 100644
--- a/packages/api/src/database/queries/caches.ts
+++ b/packages/api/src/database/queries/caches.ts
@@ -1,6 +1,6 @@
-import { ICache, ICacheId } from '../../types'
+import { ICache, ICacheId } from '../../types.js'
 
-import { Caches } from '../models/caches'
+import { Caches } from '../models/caches.js'
 
 const cacheGet = async (id: ICacheId) => Caches.query().findById(id)
 
diff --git a/packages/api/src/database/queries/documents.ts b/packages/api/src/database/queries/documents.ts
index 9adb4ebe3..924f931da 100644
--- a/packages/api/src/database/queries/documents.ts
+++ b/packages/api/src/database/queries/documents.ts
@@ -1,13 +1,13 @@
 import { transaction, Transaction } from 'objection'
 
-import { IDocument, IFields, IUtilisateur } from '../../types'
+import { IDocument, IFields, IUtilisateur } from '../../types.js'
 
-import options from './_options'
-import graphBuild from './graph/build'
-import { fieldsFormat } from './graph/fields-format'
+import options from './_options.js'
+import graphBuild from './graph/build.js'
+import { fieldsFormat } from './graph/fields-format.js'
 
-import Document from '../models/documents'
-import { documentsQueryModify } from './permissions/documents'
+import Document from '../models/documents.js'
+import { documentsQueryModify } from './permissions/documents.js'
 
 const documentGet = async (
   documentId: string,
diff --git a/packages/api/src/database/queries/entreprises-etablissements.ts b/packages/api/src/database/queries/entreprises-etablissements.ts
index 46a82a13f..702900b79 100644
--- a/packages/api/src/database/queries/entreprises-etablissements.ts
+++ b/packages/api/src/database/queries/entreprises-etablissements.ts
@@ -1,8 +1,8 @@
-import { IEntrepriseEtablissement } from '../../types'
+import { IEntrepriseEtablissement } from '../../types.js'
 
-import options from './_options'
+import options from './_options.js'
 
-import EntrepriseEtablissements from '../models/entreprises-etablissements'
+import EntrepriseEtablissements from '../models/entreprises-etablissements.js'
 
 const entrepriseEtablissementGet = async (id: string) =>
   EntrepriseEtablissements.query().findById(id)
diff --git a/packages/api/src/database/queries/entreprises.ts b/packages/api/src/database/queries/entreprises.ts
index b93216032..a0fbc4a4e 100644
--- a/packages/api/src/database/queries/entreprises.ts
+++ b/packages/api/src/database/queries/entreprises.ts
@@ -5,24 +5,24 @@ import {
   IFields,
   IUtilisateur,
   IEntrepriseColonneId
-} from '../../types'
+} from '../../types.js'
 
-import options from './_options'
-import graphBuild from './graph/build'
-import { fieldsFormat } from './graph/fields-format'
-import { stringSplit } from './_utils'
+import options from './_options.js'
+import graphBuild from './graph/build.js'
+import { fieldsFormat } from './graph/fields-format.js'
+import { stringSplit } from './_utils.js'
 
-import Entreprises from '../models/entreprises'
-import { entreprisesQueryModify } from './permissions/entreprises'
-import { utilisateurGet } from './utilisateurs'
+import Entreprises from '../models/entreprises.js'
+import { entreprisesQueryModify } from './permissions/entreprises.js'
+import { utilisateurGet } from './utilisateurs.js'
 import {
   isSuper,
   isEntreprise,
   isAdministrationAdmin,
   isAdministrationEditeur,
   isBureauDEtudes
-} from 'camino-common/src/roles'
-import { canCreateTitre } from 'camino-common/src/permissions/titres'
+} from 'camino-common/src/roles.js'
+import { canCreateTitre } from 'camino-common/src/permissions/titres.js'
 
 const entreprisesFiltersQueryModify = (
   {
diff --git a/packages/api/src/database/queries/graph/build.ts b/packages/api/src/database/queries/graph/build.ts
index 8f5ae7a2e..c73c0f7c0 100644
--- a/packages/api/src/database/queries/graph/build.ts
+++ b/packages/api/src/database/queries/graph/build.ts
@@ -1,6 +1,6 @@
-import { IFields } from '../../../types'
+import { IFields } from '../../../types.js'
 
-import { objectClone } from '../../../tools/index'
+import { objectClone } from '../../../tools/index.js'
 
 interface IFieldsFormat {
   (fields: IFields, parent: string): IFields
diff --git a/packages/api/src/database/queries/graph/fields-add.ts b/packages/api/src/database/queries/graph/fields-add.ts
index 26a0dbc80..f8b9c9cdd 100644
--- a/packages/api/src/database/queries/graph/fields-add.ts
+++ b/packages/api/src/database/queries/graph/fields-add.ts
@@ -1,4 +1,4 @@
-import { IFields } from '../../../types'
+import { IFields } from '../../../types.js'
 
 // ajoute les champs nécessaire pour obtenir le sous-objet titre
 // pour vérifier si l'utilisateur a les droits sur les titres
diff --git a/packages/api/src/database/queries/journaux.ts b/packages/api/src/database/queries/journaux.ts
index 23662d8ab..8bc71d1ea 100644
--- a/packages/api/src/database/queries/journaux.ts
+++ b/packages/api/src/database/queries/journaux.ts
@@ -1,4 +1,4 @@
-import Journaux from '../models/journaux'
+import Journaux from '../models/journaux.js'
 import { create } from 'jsondiffpatch'
 import {
   Model,
@@ -7,12 +7,12 @@ import {
   Transaction,
   UpsertGraphOptions
 } from 'objection'
-import { journauxQueryModify } from './permissions/journaux'
-import { IFields, IUtilisateur } from '../../types'
-import graphBuild from './graph/build'
-import { fieldsFormat } from './graph/fields-format'
-import options from './_options'
-import { IJournauxQueryParams } from '../../api/graphql/resolvers/journaux'
+import { journauxQueryModify } from './permissions/journaux.js'
+import { IFields, IUtilisateur } from '../../types.js'
+import graphBuild from './graph/build.js'
+import { fieldsFormat } from './graph/fields-format.js'
+import options from './_options.js'
+import { IJournauxQueryParams } from '../../api/graphql/resolvers/journaux.js'
 
 const diffPatcher = create({
   // on filtre certaines proprietés qu’on ne souhaite pas voir apparaitre dans les journaux
diff --git a/packages/api/src/database/queries/metas-activites.ts b/packages/api/src/database/queries/metas-activites.ts
index 51498afd8..0f2622582 100644
--- a/packages/api/src/database/queries/metas-activites.ts
+++ b/packages/api/src/database/queries/metas-activites.ts
@@ -1,14 +1,14 @@
-import { IFields } from '../../types'
+import { IFields } from '../../types.js'
 
-import options from './_options'
-import graphBuild from './graph/build'
-import { fieldsFormat } from './graph/fields-format'
+import options from './_options.js'
+import graphBuild from './graph/build.js'
+import { fieldsFormat } from './graph/fields-format.js'
 
-import ActivitesTypes from '../models/activites-types'
-import ActivitesTypesTitresTypes from '../models/activites-types--titres-types'
-import ActivitesStatuts from '../models/activites-statuts'
-import ActivitesTypesDocumentsTypes from '../models/activites-types--documents-types'
-import ActivitesTypesPays from '../models/activites-types--pays'
+import ActivitesTypes from '../models/activites-types.js'
+import ActivitesTypesTitresTypes from '../models/activites-types--titres-types.js'
+import ActivitesStatuts from '../models/activites-statuts.js'
+import ActivitesTypesDocumentsTypes from '../models/activites-types--documents-types.js'
+import ActivitesTypesPays from '../models/activites-types--pays.js'
 
 export const activitesTypesGet = async ({ fields }: { fields?: IFields }) => {
   const graph = fields
diff --git a/packages/api/src/database/queries/metas.ts b/packages/api/src/database/queries/metas.ts
index 155420074..688ebc638 100644
--- a/packages/api/src/database/queries/metas.ts
+++ b/packages/api/src/database/queries/metas.ts
@@ -1,34 +1,34 @@
 import { raw } from 'objection'
 
-import { IDocumentRepertoire, IFields, IUtilisateur } from '../../types'
+import { IDocumentRepertoire, IFields, IUtilisateur } from '../../types.js'
 
-import { knex } from '../../knex'
+import { knex } from '../../knex.js'
 
-import options from './_options'
-import graphBuild from './graph/build'
-import { fieldsFormat } from './graph/fields-format'
+import options from './_options.js'
+import graphBuild from './graph/build.js'
+import { fieldsFormat } from './graph/fields-format.js'
 
-import DemarchesTypes from '../models/demarches-types'
-import DocumentsTypes from '../models/documents-types'
-import Domaines from '../models/domaines'
-import EtapesTypes from '../models/etapes-types'
-import TitresTypesTypes from '../models/titres-types-types'
+import DemarchesTypes from '../models/demarches-types.js'
+import DocumentsTypes from '../models/documents-types.js'
+import Domaines from '../models/domaines.js'
+import EtapesTypes from '../models/etapes-types.js'
+import TitresTypesTypes from '../models/titres-types-types.js'
 
 import {
   demarchesTypesQueryModify,
   domainesQueryModify,
   etapesTypesQueryModify
-} from './permissions/metas'
-
-import TitresTypes from '../models/titres-types'
-import TitresTypesDemarchesTypesEtapesTypes from '../models/titres-types--demarches-types-etapes-types'
-import TitresTypesDemarchesTypes from '../models/titres-types--demarches-types'
-import EtapesTypesJustificatifsTypes from '../models/etapes-types--justificatifs-types'
-import TitresTypesDemarchesTypesEtapesTypesJustificatifsTypes from '../models/titres-types--demarches-types-etapes-types-justificatifs-types'
-import Titres from '../models/titres'
-import { sortedDevises } from 'camino-common/src/static/devise'
-import { sortedDemarchesStatuts } from 'camino-common/src/static/demarchesStatuts'
-import { toDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes'
+} from './permissions/metas.js'
+
+import TitresTypes from '../models/titres-types.js'
+import TitresTypesDemarchesTypesEtapesTypes from '../models/titres-types--demarches-types-etapes-types.js'
+import TitresTypesDemarchesTypes from '../models/titres-types--demarches-types.js'
+import EtapesTypesJustificatifsTypes from '../models/etapes-types--justificatifs-types.js'
+import TitresTypesDemarchesTypesEtapesTypesJustificatifsTypes from '../models/titres-types--demarches-types-etapes-types-justificatifs-types.js'
+import Titres from '../models/titres.js'
+import { sortedDevises } from 'camino-common/src/static/devise.js'
+import { sortedDemarchesStatuts } from 'camino-common/src/static/demarchesStatuts.js'
+import { toDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes.js'
 
 const titresTypesTypesGet = async () =>
   TitresTypesTypes.query().orderBy('ordre')
diff --git a/packages/api/src/database/queries/permissions/administrations.test.integration.ts b/packages/api/src/database/queries/permissions/administrations.test.integration.ts
index 947addaae..f76dd23e8 100644
--- a/packages/api/src/database/queries/permissions/administrations.test.integration.ts
+++ b/packages/api/src/database/queries/permissions/administrations.test.integration.ts
@@ -1,22 +1,22 @@
-import { dbManager } from '../../../../tests/db-manager'
-import { IUtilisateur, IAdministration, ITitre } from '../../../types'
+import { dbManager } from '../../../../tests/db-manager.js'
+import { IUtilisateur, IAdministration, ITitre } from '../../../types.js'
 
-import Titres from '../../models/titres'
-import Utilisateurs from '../../models/utilisateurs'
-import AdministrationsActivitesTypesEmails from '../../models/administrations-activites-types-emails'
-import Administrations from '../../models/administrations'
+import Titres from '../../models/titres.js'
+import Utilisateurs from '../../models/utilisateurs.js'
+import AdministrationsActivitesTypesEmails from '../../models/administrations-activites-types-emails.js'
+import Administrations from '../../models/administrations.js'
 import {
   AdministrationId,
   Administrations as CommonAdministrations
-} from 'camino-common/src/static/administrations'
+} from 'camino-common/src/static/administrations.js'
 import {
   administrationsTitresQuery,
   administrationsQueryModify
-} from './administrations'
-import { idGenerate } from '../../models/_format/id-create'
-import options from '../_options'
+} from './administrations.js'
+import { idGenerate } from '../../models/_format/id-create.js'
+import options from '../_options.js'
 import { expect, test, describe, afterAll, beforeAll, vi } from 'vitest'
-import { Role } from 'camino-common/src/roles'
+import { Role } from 'camino-common/src/roles.js'
 console.info = vi.fn()
 console.error = vi.fn()
 
diff --git a/packages/api/src/database/queries/permissions/administrations.ts b/packages/api/src/database/queries/permissions/administrations.ts
index 2bec2dda1..328720d22 100644
--- a/packages/api/src/database/queries/permissions/administrations.ts
+++ b/packages/api/src/database/queries/permissions/administrations.ts
@@ -1,25 +1,25 @@
 import { raw, QueryBuilder } from 'objection'
 
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
-import { knex } from '../../../knex'
+import { knex } from '../../../knex.js'
 
-import AdministrationsModel from '../../models/administrations'
-import Utilisateurs from '../../models/utilisateurs'
-import { utilisateursQueryModify } from './utilisateurs'
+import AdministrationsModel from '../../models/administrations.js'
+import Utilisateurs from '../../models/utilisateurs.js'
+import { utilisateursQueryModify } from './utilisateurs.js'
 import {
   isAdministrationAdmin,
   isAdministrationEditeur,
   isSuper
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 import {
   AdministrationId,
   Administrations,
   sortedAdministrations
-} from 'camino-common/src/static/administrations'
-import { Departements } from 'camino-common/src/static/departement'
-import { getTitreTypeIdsByAdministration } from 'camino-common/src/static/administrationsTitresTypes'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
+} from 'camino-common/src/static/administrations.js'
+import { Departements } from 'camino-common/src/static/departement.js'
+import { getTitreTypeIdsByAdministration } from 'camino-common/src/static/administrationsTitresTypes.js'
+import { TitreTypeId } from 'camino-common/src/static/titresTypes.js'
 
 const administrationsQueryModify = (
   q: QueryBuilder<
diff --git a/packages/api/src/database/queries/permissions/documents.test.integration.ts b/packages/api/src/database/queries/permissions/documents.test.integration.ts
index 1be29cccd..e89e2712b 100644
--- a/packages/api/src/database/queries/permissions/documents.test.integration.ts
+++ b/packages/api/src/database/queries/permissions/documents.test.integration.ts
@@ -1,19 +1,19 @@
-import { dbManager } from '../../../../tests/db-manager'
+import { dbManager } from '../../../../tests/db-manager.js'
 
-import { userSuper } from '../../user-super'
+import { userSuper } from '../../user-super.js'
 
-import TitresEtapes from '../../models/titres-etapes'
-import ActivitesTypesDocumentsTypes from '../../models/activites-types--documents-types'
-import TitresActivites from '../../models/titres-activites'
-import Document from '../../models/documents'
+import TitresEtapes from '../../models/titres-etapes.js'
+import ActivitesTypesDocumentsTypes from '../../models/activites-types--documents-types.js'
+import TitresActivites from '../../models/titres-activites.js'
+import Document from '../../models/documents.js'
 
-import { documentCreate, documentGet } from '../documents'
-import { etapeTypeDocumentTypeUsedCheck } from './documents'
+import { documentCreate, documentGet } from '../documents.js'
+import { etapeTypeDocumentTypeUsedCheck } from './documents.js'
 import { Knex } from 'knex'
-import { newDemarcheId } from '../../models/_format/id-create'
-import { toCaminoDate } from 'camino-common/src/date'
+import { newDemarcheId } from '../../models/_format/id-create.js'
+import { getCurrent, toCaminoDate } from 'camino-common/src/date.js'
 import { expect, test, describe, afterAll, beforeAll, vi } from 'vitest'
-import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts'
+import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts.js'
 
 console.info = vi.fn()
 console.error = vi.fn()
@@ -92,7 +92,7 @@ describe('documentSupprimer', () => {
         id: 'titreActiviteId',
         typeId: 'grx',
         titreId: '',
-        date: '',
+        date: getCurrent(),
         statutId,
         periodeId: 1,
         annee: 2000
diff --git a/packages/api/src/database/queries/permissions/documents.ts b/packages/api/src/database/queries/permissions/documents.ts
index a2e6e9ffb..0e10ada19 100644
--- a/packages/api/src/database/queries/permissions/documents.ts
+++ b/packages/api/src/database/queries/permissions/documents.ts
@@ -1,16 +1,16 @@
 import { QueryBuilder, raw } from 'objection'
 
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
-import Documents from '../../models/documents'
-import TitresEtapesJustificatifs from '../../models/titres-etapes-justificatifs'
-import ActivitesTypesDocumentsTypes from '../../models/activites-types--documents-types'
+import Documents from '../../models/documents.js'
+import TitresEtapesJustificatifs from '../../models/titres-etapes-justificatifs.js'
+import ActivitesTypesDocumentsTypes from '../../models/activites-types--documents-types.js'
 import {
   isBureauDEtudes,
   isDefault,
   isEntreprise
-} from 'camino-common/src/roles'
-import TitresEtapes from '../../models/titres-etapes'
+} from 'camino-common/src/roles.js'
+import TitresEtapes from '../../models/titres-etapes.js'
 
 const documentsQueryModify = (
   q: QueryBuilder<Documents, Documents | Documents[]>,
diff --git a/packages/api/src/database/queries/permissions/entreprises.test.integration.ts b/packages/api/src/database/queries/permissions/entreprises.test.integration.ts
index 8b62e5a5a..47d9fc62a 100644
--- a/packages/api/src/database/queries/permissions/entreprises.test.integration.ts
+++ b/packages/api/src/database/queries/permissions/entreprises.test.integration.ts
@@ -1,16 +1,16 @@
-import { IEntreprise, IUtilisateur } from '../../../types'
+import { IEntreprise, IUtilisateur } from '../../../types.js'
 
-import { dbManager } from '../../../../tests/db-manager'
+import { dbManager } from '../../../../tests/db-manager.js'
 
-import Entreprises from '../../models/entreprises'
-import Utilisateurs from '../../models/utilisateurs'
-import { entreprisesQueryModify } from './entreprises'
+import Entreprises from '../../models/entreprises.js'
+import Utilisateurs from '../../models/utilisateurs.js'
+import { entreprisesQueryModify } from './entreprises.js'
 import {
   AdministrationId,
   ADMINISTRATION_IDS
-} from 'camino-common/src/static/administrations'
+} from 'camino-common/src/static/administrations.js'
 import { expect, test, describe, afterAll, beforeAll, vi } from 'vitest'
-import { Role } from 'camino-common/src/roles'
+import { Role } from 'camino-common/src/roles.js'
 
 console.info = vi.fn()
 console.error = vi.fn()
diff --git a/packages/api/src/database/queries/permissions/entreprises.ts b/packages/api/src/database/queries/permissions/entreprises.ts
index e2cfa726a..065f35e5e 100644
--- a/packages/api/src/database/queries/permissions/entreprises.ts
+++ b/packages/api/src/database/queries/permissions/entreprises.ts
@@ -1,24 +1,24 @@
 import { raw, QueryBuilder } from 'objection'
 
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
-import { knex } from '../../../knex'
+import { knex } from '../../../knex.js'
 
-import Entreprises from '../../models/entreprises'
-import Utilisateurs from '../../models/utilisateurs'
-import Titres from '../../models/titres'
-import Documents from '../../models/documents'
+import Entreprises from '../../models/entreprises.js'
+import Utilisateurs from '../../models/utilisateurs.js'
+import Titres from '../../models/titres.js'
+import Documents from '../../models/documents.js'
 
-import { titresQueryModify } from './titres'
-import { utilisateursQueryModify } from './utilisateurs'
-import { documentsQueryModify } from './documents'
+import { titresQueryModify } from './titres.js'
+import { utilisateursQueryModify } from './utilisateurs.js'
+import { documentsQueryModify } from './documents.js'
 import {
   isAdministrationAdmin,
   isAdministrationEditeur,
   isBureauDEtudes,
   isEntreprise,
   isSuper
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 
 const entreprisesQueryModify = (
   q: QueryBuilder<Entreprises, Entreprises | Entreprises[]>,
diff --git a/packages/api/src/database/queries/permissions/journaux.ts b/packages/api/src/database/queries/permissions/journaux.ts
index be54b4883..5559b9af1 100644
--- a/packages/api/src/database/queries/permissions/journaux.ts
+++ b/packages/api/src/database/queries/permissions/journaux.ts
@@ -1,13 +1,13 @@
 import { QueryBuilder } from 'objection'
 
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
-import Journaux from '../../models/journaux'
-import { utilisateursQueryModify } from './utilisateurs'
-import Utilisateurs from '../../models/utilisateurs'
-import { titresQueryModify } from './titres'
-import Titres from '../../models/titres'
-import { isSuper } from 'camino-common/src/roles'
+import Journaux from '../../models/journaux.js'
+import { utilisateursQueryModify } from './utilisateurs.js'
+import Utilisateurs from '../../models/utilisateurs.js'
+import { titresQueryModify } from './titres.js'
+import Titres from '../../models/titres.js'
+import { isSuper } from 'camino-common/src/roles.js'
 
 export const journauxQueryModify = (
   q: QueryBuilder<Journaux, Journaux | Journaux[]>,
diff --git a/packages/api/src/database/queries/permissions/metas.test.integration.ts b/packages/api/src/database/queries/permissions/metas.test.integration.ts
index f735724be..34d68e04c 100644
--- a/packages/api/src/database/queries/permissions/metas.test.integration.ts
+++ b/packages/api/src/database/queries/permissions/metas.test.integration.ts
@@ -1,13 +1,13 @@
-import { dbManager } from '../../../../tests/db-manager'
-import DemarchesTypes from '../../models/demarches-types'
-import { demarchesTypesQueryModify } from './metas'
-import { idGenerate } from '../../models/_format/id-create'
-import Titres from '../../models/titres'
-import { IDemarcheType } from '../../../types'
-import AdministrationsTitresTypesTitresStatuts from '../../models/administrations-titres-types-titres-statuts'
-import { AdministrationId } from 'camino-common/src/static/administrations'
-import { getTitreTypeIdsByAdministration } from 'camino-common/src/static/administrationsTitresTypes'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
+import { dbManager } from '../../../../tests/db-manager.js'
+import DemarchesTypes from '../../models/demarches-types.js'
+import { demarchesTypesQueryModify } from './metas.js'
+import { idGenerate } from '../../models/_format/id-create.js'
+import Titres from '../../models/titres.js'
+import { IDemarcheType } from '../../../types.js'
+import AdministrationsTitresTypesTitresStatuts from '../../models/administrations-titres-types-titres-statuts.js'
+import { AdministrationId } from 'camino-common/src/static/administrations.js'
+import { getTitreTypeIdsByAdministration } from 'camino-common/src/static/administrationsTitresTypes.js'
+import { TitreTypeId } from 'camino-common/src/static/titresTypes.js'
 import { expect, test, describe, afterAll, beforeAll, vi } from 'vitest'
 
 console.info = vi.fn()
diff --git a/packages/api/src/database/queries/permissions/metas.ts b/packages/api/src/database/queries/permissions/metas.ts
index adbbde266..afc111e82 100644
--- a/packages/api/src/database/queries/permissions/metas.ts
+++ b/packages/api/src/database/queries/permissions/metas.ts
@@ -1,32 +1,32 @@
 import { raw, QueryBuilder } from 'objection'
 
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
-import { knex } from '../../../knex'
+import { knex } from '../../../knex.js'
 // import fileCreate from '../../../tools/file-create'
 // import { format } from 'sql-formatter'
 
-import Domaines from '../../models/domaines'
-import DemarchesTypes from '../../models/demarches-types'
-import EtapesTypes from '../../models/etapes-types'
-import TitresEtapes from '../../models/titres-etapes'
-import TitresTypesDemarchesTypesEtapesTypes from '../../models/titres-types--demarches-types-etapes-types'
+import Domaines from '../../models/domaines.js'
+import DemarchesTypes from '../../models/demarches-types.js'
+import EtapesTypes from '../../models/etapes-types.js'
+import TitresEtapes from '../../models/titres-etapes.js'
+import TitresTypesDemarchesTypesEtapesTypes from '../../models/titres-types--demarches-types-etapes-types.js'
 
-import { titresDemarchesAdministrationsModificationQuery } from './titres'
+import { titresDemarchesAdministrationsModificationQuery } from './titres.js'
 import {
   administrationsTitresTypesTitresStatutsModify,
   administrationsTitresTypesEtapesTypesModify,
   administrationsTitresQuery
-} from './administrations'
+} from './administrations.js'
 import {
   isAdministration,
   isBureauDEtudes,
   isDefault,
   isEntreprise,
   isSuper
-} from 'camino-common/src/roles'
-import { AdministrationId } from 'camino-common/src/static/administrations'
-import { TITRES_TYPES_IDS_DEMAT } from 'camino-common/src/permissions/titres'
+} from 'camino-common/src/roles.js'
+import { AdministrationId } from 'camino-common/src/static/administrations.js'
+import { TITRES_TYPES_IDS_DEMAT } from 'camino-common/src/permissions/titres.js'
 
 // récupère les types d'étapes qui ont
 // - les autorisations sur le titre
diff --git a/packages/api/src/database/queries/permissions/titres-activites.ts b/packages/api/src/database/queries/permissions/titres-activites.ts
index 24fc7b9cd..31aea1f53 100644
--- a/packages/api/src/database/queries/permissions/titres-activites.ts
+++ b/packages/api/src/database/queries/permissions/titres-activites.ts
@@ -1,26 +1,26 @@
 import { raw, QueryBuilder } from 'objection'
 
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
-import { knex } from '../../../knex'
+import { knex } from '../../../knex.js'
 
-import Titres from '../../models/titres'
-import Documents from '../../models/documents'
-import TitresActivites from '../../models/titres-activites'
+import Titres from '../../models/titres.js'
+import Documents from '../../models/documents.js'
+import TitresActivites from '../../models/titres-activites.js'
 
-import { documentsQueryModify } from './documents'
+import { documentsQueryModify } from './documents.js'
 import {
   administrationsTitresQuery,
   administrationsActivitesModify
-} from './administrations'
-import { entreprisesTitresQuery } from './entreprises'
+} from './administrations.js'
+import { entreprisesTitresQuery } from './entreprises.js'
 import {
   isAdministration,
   isAdministrationAdmin,
   isAdministrationEditeur,
   isEntreprise,
   isSuper
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 
 const activiteStatuts = [
   {
diff --git a/packages/api/src/database/queries/permissions/titres-demarches.test.integration.ts b/packages/api/src/database/queries/permissions/titres-demarches.test.integration.ts
index 2bf09f211..aabd94bd8 100644
--- a/packages/api/src/database/queries/permissions/titres-demarches.test.integration.ts
+++ b/packages/api/src/database/queries/permissions/titres-demarches.test.integration.ts
@@ -1,17 +1,17 @@
-import { dbManager } from '../../../../tests/db-manager'
+import { dbManager } from '../../../../tests/db-manager.js'
 
-import Titres from '../../models/titres'
-import { idGenerate, newDemarcheId } from '../../models/_format/id-create'
-import { userSuper } from '../../user-super'
-import TitresDemarches from '../../models/titres-demarches'
+import Titres from '../../models/titres.js'
+import { idGenerate, newDemarcheId } from '../../models/_format/id-create.js'
+import { userSuper } from '../../user-super.js'
+import TitresDemarches from '../../models/titres-demarches.js'
 import {
   titreDemarcheSuppressionSelectQuery,
   titresDemarchesQueryModify
-} from './titres-demarches'
-import TitresEtapes from '../../models/titres-etapes'
-import { Role } from 'camino-common/src/roles'
-import { Administrations } from 'camino-common/src/static/administrations'
-import { toCaminoDate } from 'camino-common/src/date'
+} from './titres-demarches.js'
+import TitresEtapes from '../../models/titres-etapes.js'
+import { Role } from 'camino-common/src/roles.js'
+import { Administrations } from 'camino-common/src/static/administrations.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { expect, test, describe, afterAll, beforeAll, vi } from 'vitest'
 
 console.info = vi.fn()
diff --git a/packages/api/src/database/queries/permissions/titres-demarches.ts b/packages/api/src/database/queries/permissions/titres-demarches.ts
index 308b23877..065eef0ae 100644
--- a/packages/api/src/database/queries/permissions/titres-demarches.ts
+++ b/packages/api/src/database/queries/permissions/titres-demarches.ts
@@ -1,19 +1,19 @@
 import { raw, QueryBuilder, RawBuilder } from 'objection'
 
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
-import Titres from '../../models/titres'
-import TitresEtapes from '../../models/titres-etapes'
-import TitresDemarches from '../../models/titres-demarches'
+import Titres from '../../models/titres.js'
+import TitresEtapes from '../../models/titres-etapes.js'
+import TitresDemarches from '../../models/titres-demarches.js'
 
-import { titresEtapesQueryModify } from './titres-etapes'
+import { titresEtapesQueryModify } from './titres-etapes.js'
 import {
   titresQueryModify,
   titresDemarchesAdministrationsModificationQuery
-} from './titres'
-import { administrationsEtapesTypesPropsQuery } from './metas'
-import { administrationsTitresQuery } from './administrations'
-import { entreprisesTitresQuery } from './entreprises'
+} from './titres.js'
+import { administrationsEtapesTypesPropsQuery } from './metas.js'
+import { administrationsTitresQuery } from './administrations.js'
+import { entreprisesTitresQuery } from './entreprises.js'
 import {
   isSuper,
   isAdministration,
@@ -21,7 +21,7 @@ import {
   isAdministrationAdmin,
   isAdministrationEditeur,
   isBureauDEtudes
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 
 export const titresDemarchesQueryModify = (
   q: QueryBuilder<TitresDemarches, TitresDemarches | TitresDemarches[]>,
diff --git a/packages/api/src/database/queries/permissions/titres-etapes.test.integration.ts b/packages/api/src/database/queries/permissions/titres-etapes.test.integration.ts
index 5285d775b..9ddb974d0 100644
--- a/packages/api/src/database/queries/permissions/titres-etapes.test.integration.ts
+++ b/packages/api/src/database/queries/permissions/titres-etapes.test.integration.ts
@@ -1,12 +1,12 @@
-import { dbManager } from '../../../../tests/db-manager'
+import { dbManager } from '../../../../tests/db-manager.js'
 
-import Titres from '../../models/titres'
-import { idGenerate, newDemarcheId } from '../../models/_format/id-create'
-import { userSuper } from '../../user-super'
-import TitresEtapes from '../../models/titres-etapes'
-import { titresEtapesQueryModify } from './titres-etapes'
-import TitresDemarches from '../../models/titres-demarches'
-import { toCaminoDate } from 'camino-common/src/date'
+import Titres from '../../models/titres.js'
+import { idGenerate, newDemarcheId } from '../../models/_format/id-create.js'
+import { userSuper } from '../../user-super.js'
+import TitresEtapes from '../../models/titres-etapes.js'
+import { titresEtapesQueryModify } from './titres-etapes.js'
+import TitresDemarches from '../../models/titres-demarches.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { beforeAll, expect, afterAll, test, describe, vi } from 'vitest'
 console.info = vi.fn()
 console.error = vi.fn()
diff --git a/packages/api/src/database/queries/permissions/titres-etapes.ts b/packages/api/src/database/queries/permissions/titres-etapes.ts
index d555849ae..c09d789de 100644
--- a/packages/api/src/database/queries/permissions/titres-etapes.ts
+++ b/packages/api/src/database/queries/permissions/titres-etapes.ts
@@ -1,25 +1,28 @@
 import { raw, QueryBuilder } from 'objection'
 
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
-import Documents from '../../models/documents'
-import TitresEtapes from '../../models/titres-etapes'
-import Entreprises from '../../models/entreprises'
+import Documents from '../../models/documents.js'
+import TitresEtapes from '../../models/titres-etapes.js'
+import Entreprises from '../../models/entreprises.js'
 
-import { documentsQueryModify } from './documents'
+import { documentsQueryModify } from './documents.js'
 import {
   administrationsEtapesTypesPropsQuery,
   entreprisesEtapesTypesPropsQuery
-} from './metas'
+} from './metas.js'
 import {
   administrationsTitresTypesEtapesTypesModify,
   administrationsTitresQuery
-} from './administrations'
-import { entreprisesQueryModify, entreprisesTitresQuery } from './entreprises'
-import { titresDemarchesQueryModify } from './titres-demarches'
-import TitresDemarches from '../../models/titres-demarches'
-import Journaux from '../../models/journaux'
-import { journauxQueryModify } from './journaux'
+} from './administrations.js'
+import {
+  entreprisesQueryModify,
+  entreprisesTitresQuery
+} from './entreprises.js'
+import { titresDemarchesQueryModify } from './titres-demarches.js'
+import TitresDemarches from '../../models/titres-demarches.js'
+import Journaux from '../../models/journaux.js'
+import { journauxQueryModify } from './journaux.js'
 import {
   isAdministration,
   isAdministrationAdmin,
@@ -27,7 +30,7 @@ import {
   isBureauDEtudes,
   isEntreprise,
   isSuper
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 
 const titreEtapeModificationQueryBuild = (
   user: IUtilisateur | null | undefined
diff --git a/packages/api/src/database/queries/permissions/titres.test.integration.ts b/packages/api/src/database/queries/permissions/titres.test.integration.ts
index 1f8db4283..1b13a5a76 100644
--- a/packages/api/src/database/queries/permissions/titres.test.integration.ts
+++ b/packages/api/src/database/queries/permissions/titres.test.integration.ts
@@ -1,9 +1,9 @@
-import { IEntreprise, ITitre, ITitreDemarche } from '../../../types'
+import { IEntreprise, ITitre, ITitreDemarche } from '../../../types.js'
 
-import { dbManager } from '../../../../tests/db-manager'
+import { dbManager } from '../../../../tests/db-manager.js'
 
-import Titres from '../../models/titres'
-import { idGenerate } from '../../models/_format/id-create'
+import Titres from '../../models/titres.js'
+import { idGenerate } from '../../models/_format/id-create.js'
 import {
   titresArmEnDemandeQuery,
   titresConfidentielSelect,
@@ -11,18 +11,18 @@ import {
   titresQueryModify,
   titresTravauxCreationQuery,
   titresVisibleByEntrepriseQuery
-} from './titres'
-import AdministrationsTitresTypesTitresStatuts from '../../models/administrations-titres-types-titres-statuts'
-import { userSuper } from '../../user-super'
-import { AdministrationId } from 'camino-common/src/static/administrations'
-import { Role } from 'camino-common/src/roles'
+} from './titres.js'
+import AdministrationsTitresTypesTitresStatuts from '../../models/administrations-titres-types-titres-statuts.js'
+import { userSuper } from '../../user-super.js'
+import { AdministrationId } from 'camino-common/src/static/administrations.js'
+import { Role } from 'camino-common/src/roles.js'
 import { beforeAll, expect, afterAll, test, describe, vi } from 'vitest'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
-import { TitreStatutId } from 'camino-common/src/static/titresStatuts'
-import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes'
-import { DemarcheStatutId } from 'camino-common/src/static/demarchesStatuts'
-import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
+import { TitreTypeId } from 'camino-common/src/static/titresTypes.js'
+import { TitreStatutId } from 'camino-common/src/static/titresStatuts.js'
+import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes.js'
+import { DemarcheStatutId } from 'camino-common/src/static/demarchesStatuts.js'
+import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
 
 console.info = vi.fn()
 console.error = vi.fn()
diff --git a/packages/api/src/database/queries/permissions/titres.ts b/packages/api/src/database/queries/permissions/titres.ts
index 34c8459b6..c5c4fbb6b 100644
--- a/packages/api/src/database/queries/permissions/titres.ts
+++ b/packages/api/src/database/queries/permissions/titres.ts
@@ -1,31 +1,34 @@
 import { QueryBuilder, raw, RawBuilder } from 'objection'
 
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
 // import sqlFormatter from 'sql-formatter'
 // import fileCreate from '../../../tools/file-create'
 
-import Titres from '../../models/titres'
-import TitresDemarches from '../../models/titres-demarches'
-import TitresActivites from '../../models/titres-activites'
-import Entreprises from '../../models/entreprises'
+import Titres from '../../models/titres.js'
+import TitresDemarches from '../../models/titres-demarches.js'
+import TitresActivites from '../../models/titres-activites.js'
+import Entreprises from '../../models/entreprises.js'
 
 import {
   titresActivitesQueryModify,
   titresActivitesPropsQueryModify,
   titreActivitesCount
-} from './titres-activites'
-import { titresDemarchesQueryModify } from './titres-demarches'
+} from './titres-activites.js'
+import { titresDemarchesQueryModify } from './titres-demarches.js'
 import {
   administrationsTitresTypesTitresStatutsModify,
   administrationsTitresQuery
-} from './administrations'
-import { entreprisesQueryModify, entreprisesTitresQuery } from './entreprises'
-import TitresEtapes from '../../models/titres-etapes'
-import AdministrationsModel from '../../models/administrations'
-import UtilisateursTitres from '../../models/utilisateurs--titres'
-import DemarchesTypes from '../../models/demarches-types'
-import { demarchesCreationQuery } from './metas'
+} from './administrations.js'
+import {
+  entreprisesQueryModify,
+  entreprisesTitresQuery
+} from './entreprises.js'
+import TitresEtapes from '../../models/titres-etapes.js'
+import AdministrationsModel from '../../models/administrations.js'
+import UtilisateursTitres from '../../models/utilisateurs--titres.js'
+import DemarchesTypes from '../../models/demarches-types.js'
+import { demarchesCreationQuery } from './metas.js'
 import {
   isAdministration,
   isAdministrationAdmin,
@@ -33,11 +36,11 @@ import {
   isBureauDEtudes,
   isEntreprise,
   isSuper
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 import {
   AdministrationId,
   Administrations
-} from 'camino-common/src/static/administrations'
+} from 'camino-common/src/static/administrations.js'
 
 const titresDemarchesAdministrationsModificationQuery = (
   administrationId: AdministrationId,
diff --git a/packages/api/src/database/queries/permissions/utilisateurs.test.integration.ts b/packages/api/src/database/queries/permissions/utilisateurs.test.integration.ts
index d0e6bb396..f75e11db4 100644
--- a/packages/api/src/database/queries/permissions/utilisateurs.test.integration.ts
+++ b/packages/api/src/database/queries/permissions/utilisateurs.test.integration.ts
@@ -1,12 +1,12 @@
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
-import { dbManager } from '../../../../tests/db-manager'
-import Utilisateurs from '../../models/utilisateurs'
-import { utilisateursGet } from '../utilisateurs'
-import { Administrations } from 'camino-common/src/static/administrations'
-import options from '../_options'
+import { dbManager } from '../../../../tests/db-manager.js'
+import Utilisateurs from '../../models/utilisateurs.js'
+import { utilisateursGet } from '../utilisateurs.js'
+import { Administrations } from 'camino-common/src/static/administrations.js'
+import options from '../_options.js'
 import { beforeAll, expect, afterAll, test, describe, vi } from 'vitest'
-import { Role } from 'camino-common/src/roles'
+import { Role } from 'camino-common/src/roles.js'
 console.info = vi.fn()
 console.error = vi.fn()
 beforeAll(async () => {
diff --git a/packages/api/src/database/queries/permissions/utilisateurs.ts b/packages/api/src/database/queries/permissions/utilisateurs.ts
index da6dfb6ef..6f93706b6 100644
--- a/packages/api/src/database/queries/permissions/utilisateurs.ts
+++ b/packages/api/src/database/queries/permissions/utilisateurs.ts
@@ -1,10 +1,10 @@
 import { raw, QueryBuilder } from 'objection'
 
-import { IUtilisateur } from '../../../types'
+import { IUtilisateur } from '../../../types.js'
 
-import Utilisateurs from '../../models/utilisateurs'
-import Entreprises from '../../models/entreprises'
-import { entreprisesQueryModify } from './entreprises'
+import Utilisateurs from '../../models/utilisateurs.js'
+import Entreprises from '../../models/entreprises.js'
+import { entreprisesQueryModify } from './entreprises.js'
 import {
   isAdministrationAdmin,
   isAdministrationEditeur,
@@ -13,7 +13,7 @@ import {
   isDefault,
   isEntreprise,
   isSuper
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 
 export const utilisateursQueryModify = (
   q: QueryBuilder<Utilisateurs, Utilisateurs | Utilisateurs[]>,
diff --git a/packages/api/src/database/queries/titres-activites.test.integration.ts b/packages/api/src/database/queries/titres-activites.test.integration.ts
index efab6ee71..01cf9e6f2 100644
--- a/packages/api/src/database/queries/titres-activites.test.integration.ts
+++ b/packages/api/src/database/queries/titres-activites.test.integration.ts
@@ -1,10 +1,11 @@
-import { titresActivitesGet } from './titres-activites'
-import TitresActivites from '../models/titres-activites'
-import { dbManager } from '../../../tests/db-manager'
-import { IUtilisateur } from '../../types'
-import { idGenerate } from '../models/_format/id-create'
-import Titres from '../models/titres'
+import { titresActivitesGet } from './titres-activites.js'
+import TitresActivites from '../models/titres-activites.js'
+import { dbManager } from '../../../tests/db-manager.js'
+import { IUtilisateur } from '../../types.js'
+import { idGenerate } from '../models/_format/id-create.js'
+import Titres from '../models/titres.js'
 import { beforeAll, expect, afterAll, test, describe, vi } from 'vitest'
+import { getCurrent } from 'camino-common/src/date.js'
 console.info = vi.fn()
 console.error = vi.fn()
 beforeAll(async () => {
@@ -33,7 +34,7 @@ describe('teste les requêtes sur les activités', () => {
       id: titreActiviteId,
       typeId: 'grx',
       titreId,
-      date: '',
+      date: getCurrent(),
       statutId: 'dep',
       periodeId: 1,
       annee: 2000
diff --git a/packages/api/src/database/queries/titres-activites.ts b/packages/api/src/database/queries/titres-activites.ts
index d9ef42a76..98f9adc0e 100644
--- a/packages/api/src/database/queries/titres-activites.ts
+++ b/packages/api/src/database/queries/titres-activites.ts
@@ -7,23 +7,23 @@ import {
   ITitreActiviteColonneId,
   Index,
   IColonne
-} from '../../types'
+} from '../../types.js'
 
-import options from './_options'
-import { fieldsFormat } from './graph/fields-format'
-import { fieldsTitreAdd } from './graph/fields-add'
-import graphBuild from './graph/build'
+import options from './_options.js'
+import { fieldsFormat } from './graph/fields-format.js'
+import { fieldsTitreAdd } from './graph/fields-add.js'
+import graphBuild from './graph/build.js'
 
-import { titresFiltersQueryModify } from './_titres-filters'
-import TitresActivites from '../models/titres-activites'
+import { titresFiltersQueryModify } from './_titres-filters.js'
+import TitresActivites from '../models/titres-activites.js'
 import {
   titresActivitesQueryModify,
   titresActivitesPropsQueryModify
-} from './permissions/titres-activites'
+} from './permissions/titres-activites.js'
 import {
   isAdministrationAdmin,
   isAdministrationEditeur
-} from 'camino-common/src/roles'
+} from 'camino-common/src/roles.js'
 
 /**
  * Modifie la requête en fonction des paramètres de filtre
diff --git a/packages/api/src/database/queries/titres-demarches.test.integration.ts b/packages/api/src/database/queries/titres-demarches.test.integration.ts
index 15d70dd10..e78cbde0b 100644
--- a/packages/api/src/database/queries/titres-demarches.test.integration.ts
+++ b/packages/api/src/database/queries/titres-demarches.test.integration.ts
@@ -1,10 +1,10 @@
-import { dbManager } from '../../../tests/db-manager'
-import { idGenerate } from '../models/_format/id-create'
-import Titres from '../models/titres'
-import TitresDemarches from '../models/titres-demarches'
-import TitresEtapes from '../models/titres-etapes'
-import { titreDemarcheArchive } from './titres-demarches'
-import { toCaminoDate } from 'camino-common/src/date'
+import { dbManager } from '../../../tests/db-manager.js'
+import { idGenerate } from '../models/_format/id-create.js'
+import Titres from '../models/titres.js'
+import TitresDemarches from '../models/titres-demarches.js'
+import TitresEtapes from '../models/titres-etapes.js'
+import { titreDemarcheArchive } from './titres-demarches.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { beforeAll, expect, afterAll, test, describe, vi } from 'vitest'
 console.info = vi.fn()
 console.error = vi.fn()
diff --git a/packages/api/src/database/queries/titres-demarches.ts b/packages/api/src/database/queries/titres-demarches.ts
index e6ce47506..7d094d980 100644
--- a/packages/api/src/database/queries/titres-demarches.ts
+++ b/packages/api/src/database/queries/titres-demarches.ts
@@ -9,17 +9,19 @@ import {
   Index,
   IUtilisateur,
   DemarcheId
-} from '../../types'
-
-import options from './_options'
-import { fieldsFormat } from './graph/fields-format'
-import graphBuild from './graph/build'
-import { fieldsTitreAdd } from './graph/fields-add'
-
-import TitresDemarches, { DBTitresDemarches } from '../models/titres-demarches'
-import { titresDemarchesQueryModify } from './permissions/titres-demarches'
-import { titresFiltersQueryModify } from './_titres-filters'
-import TitresEtapes from '../models/titres-etapes'
+} from '../../types.js'
+
+import options from './_options.js'
+import { fieldsFormat } from './graph/fields-format.js'
+import graphBuild from './graph/build.js'
+import { fieldsTitreAdd } from './graph/fields-add.js'
+
+import TitresDemarches, {
+  DBTitresDemarches
+} from '../models/titres-demarches.js'
+import { titresDemarchesQueryModify } from './permissions/titres-demarches.js'
+import { titresFiltersQueryModify } from './_titres-filters.js'
+import TitresEtapes from '../models/titres-etapes.js'
 
 const etapesIncluesExcluesBuild = (
   q: QueryBuilder<TitresDemarches, TitresDemarches[]>,
diff --git a/packages/api/src/database/queries/titres-etapes.ts b/packages/api/src/database/queries/titres-etapes.ts
index cae4c7009..565046f07 100644
--- a/packages/api/src/database/queries/titres-etapes.ts
+++ b/packages/api/src/database/queries/titres-etapes.ts
@@ -3,19 +3,19 @@ import {
   IFields,
   IUtilisateur,
   ITitreEtapeJustificatif
-} from '../../types'
-import options from './_options'
-import graphBuild from './graph/build'
-import { fieldsFormat } from './graph/fields-format'
-
-import TitresEtapes, { DBTitresEtapes } from '../models/titres-etapes'
-import TitresEtapesJustificatifs from '../models/titres-etapes-justificatifs'
-import { titresEtapesQueryModify } from './permissions/titres-etapes'
+} from '../../types.js'
+import options from './_options.js'
+import graphBuild from './graph/build.js'
+import { fieldsFormat } from './graph/fields-format.js'
+
+import TitresEtapes, { DBTitresEtapes } from '../models/titres-etapes.js'
+import TitresEtapesJustificatifs from '../models/titres-etapes-justificatifs.js'
+import { titresEtapesQueryModify } from './permissions/titres-etapes.js'
 import {
   createJournalCreate,
   patchJournalCreate,
   upsertJournalCreate
-} from './journaux'
+} from './journaux.js'
 
 const titresEtapesQueryBuild = (
   { fields }: { fields?: IFields },
diff --git a/packages/api/src/database/queries/titres-phases.ts b/packages/api/src/database/queries/titres-phases.ts
index 39d489cf3..a72160294 100644
--- a/packages/api/src/database/queries/titres-phases.ts
+++ b/packages/api/src/database/queries/titres-phases.ts
@@ -1,8 +1,8 @@
-import { ITitrePhase } from '../../types'
+import { ITitrePhase } from '../../types.js'
 
-import options from './_options'
+import options from './_options.js'
 
-import TitresPhases from '../models/titres-phases'
+import TitresPhases from '../models/titres-phases.js'
 
 const titresPhasesGet = async () =>
   TitresPhases.query().withGraphFetched(options.titresDemarchesPhases.graph)
diff --git a/packages/api/src/database/queries/titres-points.ts b/packages/api/src/database/queries/titres-points.ts
index 70c9f2ccf..73624a070 100644
--- a/packages/api/src/database/queries/titres-points.ts
+++ b/packages/api/src/database/queries/titres-points.ts
@@ -1,9 +1,9 @@
-import { ITitrePoint, ITitrePointReference } from '../../types'
+import { ITitrePoint, ITitrePointReference } from '../../types.js'
 
-import options from './_options'
+import options from './_options.js'
 
-import TitresPoints from '../models/titres-points'
-import TitresPointsReferences from '../models/titres-points-references'
+import TitresPoints from '../models/titres-points.js'
+import TitresPointsReferences from '../models/titres-points-references.js'
 
 const titresPointsGet = async () =>
   TitresPoints.query().withGraphFetched(options.points.graph)
diff --git a/packages/api/src/database/queries/titres-titres.ts b/packages/api/src/database/queries/titres-titres.ts
index b90fb5968..5c9892f7a 100644
--- a/packages/api/src/database/queries/titres-titres.ts
+++ b/packages/api/src/database/queries/titres-titres.ts
@@ -1,4 +1,4 @@
-import TitresTitres from '../models/titres--titres'
+import TitresTitres from '../models/titres--titres.js'
 
 interface LinkTitre {
   linkTo: string
diff --git a/packages/api/src/database/queries/titres.test.integration.ts b/packages/api/src/database/queries/titres.test.integration.ts
index 6dd1199cc..0e01fd2be 100644
--- a/packages/api/src/database/queries/titres.test.integration.ts
+++ b/packages/api/src/database/queries/titres.test.integration.ts
@@ -1,10 +1,10 @@
-import { dbManager } from '../../../tests/db-manager'
-import { idGenerate } from '../models/_format/id-create'
-import Titres from '../models/titres'
-import TitresDemarches from '../models/titres-demarches'
-import TitresEtapes from '../models/titres-etapes'
-import { titreArchive } from './titres'
-import { toCaminoDate } from 'camino-common/src/date'
+import { dbManager } from '../../../tests/db-manager.js'
+import { idGenerate } from '../models/_format/id-create.js'
+import Titres from '../models/titres.js'
+import TitresDemarches from '../models/titres-demarches.js'
+import TitresEtapes from '../models/titres-etapes.js'
+import { titreArchive } from './titres.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { beforeAll, expect, afterAll, test, describe, vi } from 'vitest'
 
 console.info = vi.fn()
diff --git a/packages/api/src/database/queries/titres.ts b/packages/api/src/database/queries/titres.ts
index 9dcbc75d3..01b6a32aa 100644
--- a/packages/api/src/database/queries/titres.ts
+++ b/packages/api/src/database/queries/titres.ts
@@ -7,18 +7,18 @@ import {
   ITitre,
   ITitreColonneId,
   IUtilisateur
-} from '../../types'
-
-import options from './_options'
-import graphBuild from './graph/build'
-import { fieldsFormat } from './graph/fields-format'
-import { titresFieldsAdd } from './graph/fields-add'
-
-import Titres, { DBTitre } from '../models/titres'
-import { titresQueryModify } from './permissions/titres'
-import { titresFiltersQueryModify } from './_titres-filters'
-import TitresDemarches from '../models/titres-demarches'
-import TitresEtapes from '../models/titres-etapes'
+} from '../../types.js'
+
+import options from './_options.js'
+import graphBuild from './graph/build.js'
+import { fieldsFormat } from './graph/fields-format.js'
+import { titresFieldsAdd } from './graph/fields-add.js'
+
+import Titres, { DBTitre } from '../models/titres.js'
+import { titresQueryModify } from './permissions/titres.js'
+import { titresFiltersQueryModify } from './_titres-filters.js'
+import TitresDemarches from '../models/titres-demarches.js'
+import TitresEtapes from '../models/titres-etapes.js'
 
 /**
  * Construit la requête pour récupérer certains champs de titres filtrés
diff --git a/packages/api/src/database/queries/utilisateurs.ts b/packages/api/src/database/queries/utilisateurs.ts
index 0ddb9b4f4..1412f63ef 100644
--- a/packages/api/src/database/queries/utilisateurs.ts
+++ b/packages/api/src/database/queries/utilisateurs.ts
@@ -6,17 +6,17 @@ import {
   IUtilisateursColonneId,
   IColonne,
   IUtilisateurTitre
-} from '../../types'
+} from '../../types.js'
 
-import options from './_options'
-import graphBuild from './graph/build'
-import { fieldsFormat } from './graph/fields-format'
-import { stringSplit } from './_utils'
+import options from './_options.js'
+import graphBuild from './graph/build.js'
+import { fieldsFormat } from './graph/fields-format.js'
+import { stringSplit } from './_utils.js'
 
-import Utilisateurs from '../models/utilisateurs'
-import { utilisateursQueryModify } from './permissions/utilisateurs'
-import UtilisateursTitres from '../models/utilisateurs--titres'
-import { Role } from 'camino-common/src/roles'
+import Utilisateurs from '../models/utilisateurs.js'
+import { utilisateursQueryModify } from './permissions/utilisateurs.js'
+import UtilisateursTitres from '../models/utilisateurs--titres.js'
+import { Role } from 'camino-common/src/roles.js'
 
 const userGet = async (userId?: string) => {
   if (!userId) return null
diff --git a/packages/api/src/database/user-super.ts b/packages/api/src/database/user-super.ts
index 197469e75..637c1a367 100644
--- a/packages/api/src/database/user-super.ts
+++ b/packages/api/src/database/user-super.ts
@@ -1,4 +1,4 @@
-import { IUtilisateur } from '../types'
+import { IUtilisateur } from '../types.js'
 
 export const userSuper: IUtilisateur = {
   id: 'super',
diff --git a/packages/api/src/dev/api-communes-call.js b/packages/api/src/dev/api-communes-call.js
deleted file mode 100644
index 3f0c8a514..000000000
--- a/packages/api/src/dev/api-communes-call.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import 'dotenvp/config'
-
-import { apiGeoGet } from '../tools/api-geo'
-
-const geojson = {
-  type: 'Feature',
-  properties: { id: 'test' },
-  geometry: {
-    type: 'MultiPolygon',
-    coordinates: [
-      [
-        [
-          [-54.1552756477881, 3.83264174696504],
-          [-54.1553054008735, 3.82358131280288],
-          [-54.1463302004929, 3.82355117414492],
-          [-54.1463002531354, 3.83258458676135],
-          [-54.1552756477881, 3.83264174696504]
-        ]
-      ]
-    ]
-  }
-}
-
-async function main() {
-  const communes = await apiGeoGet(geojson, ['sdomZones'])
-
-  console.info(communes)
-
-  process.exit()
-}
-
-main()
diff --git a/packages/api/src/dev/api-insee-call.js b/packages/api/src/dev/api-insee-call.js
deleted file mode 100644
index bfe15850d..000000000
--- a/packages/api/src/dev/api-insee-call.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import '../../init'
-import fileCreate from '../tools/file-create'
-
-import { inseeSirenGet, inseeSiretGet } from '../tools/api-insee'
-
-const siret1 = '57219916400045'
-const siret2 = '48486050700017'
-
-const entreprises = ['c', 'f', 'g', 'h', 'm', 'r', 's', 'w']
-  .reduce((r, d) => {
-    r.push(...require(`../../sources/entreprises-titres-${d}`))
-
-    return r
-  }, [])
-  .filter(e => e.legal_siren)
-  .map(e => e.legal_siren)
-  .slice(0, 19)
-
-console.info(entreprises.length)
-
-async function main() {
-  const test = true
-  if (test) {
-    const result = await inseeSirenGet(entreprises)
-
-    console.info(result.length)
-
-    await fileCreate('tmp/test-entrepriseson', JSON.stringify(result, null, 2))
-  }
-
-  if (!test) {
-    const etablissements = await inseeSiretGet([siret1, siret2])
-
-    console.info(etablissements)
-
-    await fileCreate(
-      'test-etablissementson',
-      JSON.stringify(etablissements, null, 2)
-    )
-  }
-
-  process.exit()
-}
-
-main()
diff --git a/packages/api/src/dev/api/_introspection-query.graphql b/packages/api/src/dev/api/_introspection-query.graphql
deleted file mode 100644
index d17da75f3..000000000
--- a/packages/api/src/dev/api/_introspection-query.graphql
+++ /dev/null
@@ -1,99 +0,0 @@
-query IntrospectionQuery {
-  __schema {
-    queryType {
-      name
-    }
-    mutationType {
-      name
-    }
-    subscriptionType {
-      name
-    }
-    types {
-      ...FullType
-    }
-    directives {
-      name
-      description
-      locations
-      args {
-        ...InputValue
-      }
-    }
-  }
-}
-
-fragment FullType on __Type {
-  kind
-  name
-  description
-  fields(includeDeprecated: true) {
-    name
-    description
-    args {
-      ...InputValue
-    }
-    type {
-      ...TypeRef
-    }
-    isDeprecated
-    deprecationReason
-  }
-  inputFields {
-    ...InputValue
-  }
-  interfaces {
-    ...TypeRef
-  }
-  enumValues(includeDeprecated: true) {
-    name
-    description
-    isDeprecated
-    deprecationReason
-  }
-  possibleTypes {
-    ...TypeRef
-  }
-}
-
-fragment InputValue on __InputValue {
-  name
-  description
-  type {
-    ...TypeRef
-  }
-  defaultValue
-}
-
-fragment TypeRef on __Type {
-  kind
-  name
-  ofType {
-    kind
-    name
-    ofType {
-      kind
-      name
-      ofType {
-        kind
-        name
-        ofType {
-          kind
-          name
-          ofType {
-            kind
-            name
-            ofType {
-              kind
-              name
-              ofType {
-                kind
-                name
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
diff --git a/packages/api/src/dev/api/graphql-dsl-to-query-convert.js b/packages/api/src/dev/api/graphql-dsl-to-query-convert.js
deleted file mode 100644
index 635ef0dda..000000000
--- a/packages/api/src/dev/api/graphql-dsl-to-query-convert.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import fetch from 'node-fetch'
-const { getIntrospectionQuery } = require('graphql')
-const fs = require('fs')
-const url = `http://localhost:4000`
-
-const dir = 'docs-sources/api'
-
-fs.rm(`./${dir}`, { recursive: true, force: true }, err => {
-  if (err) {
-    throw err
-  }
-  fs.mkdirSync(`./${dir}`, { recursive: true })
-})
-
-fetch(url, {
-  method: 'POST',
-  headers: { 'Content-Type': 'application/json' },
-  body: JSON.stringify({ query: getIntrospectionQuery() })
-})
-  .then(res => res.json())
-  .then(res =>
-    fs.writeFileSync(`${dir}/schemaon`, JSON.stringify(res.data, null, 2))
-  )
diff --git a/packages/api/src/dev/database/fix--titres--doublon-titre-id.ts b/packages/api/src/dev/database/fix--titres--doublon-titre-id.ts
deleted file mode 100644
index bb1c9f1f6..000000000
--- a/packages/api/src/dev/database/fix--titres--doublon-titre-id.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import '../../init'
-import Titres from '../../database/models/titres'
-
-const main = async () => {
-  const titres = await Titres.query().whereNotNull('doublonTitreId')
-
-  for (const titre of titres) {
-    const doublonTitre = await Titres.query()
-      .whereRaw('?? = ?', ['slug', titre.doublonTitreId])
-      .first()
-
-    await Titres.query()
-      .patch({ doublonTitreId: doublonTitre!.id })
-      .where('id', titre.id)
-  }
-
-  process.exit(0)
-}
-
-main().catch(e => {
-  console.error(e)
-
-  process.exit(1)
-})
diff --git a/packages/api/src/dev/database/fix-tde.ts b/packages/api/src/dev/database/fix-tde.ts
deleted file mode 100644
index 575b07e0c..000000000
--- a/packages/api/src/dev/database/fix-tde.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import '../../init'
-
-import { titresDemarchesGet } from '../../database/queries/titres-demarches'
-import TitresEtapes from '../../database/models/titres-etapes'
-import { userSuper } from '../../database/user-super'
-
-async function main() {
-  let demarches = await titresDemarchesGet(
-    { titresDomainesIds: ['m'], titresTypesIds: ['ax'], typesIds: ['oct'] },
-    { fields: { etapes: { id: {} } } },
-    userSuper
-  )
-
-  console.info('migration des étapes d’oct d’AXM')
-  for (const d of demarches) {
-    const etapes = d.etapes!.filter(
-      e => e.typeId === 'rco' || e.typeId === 'mco'
-    )
-    for (const e of etapes) {
-      const typeId = e.typeId === 'rco' ? 'rca' : 'mca'
-      await TitresEtapes.query().patch({ typeId }).where('id', e.id)
-      console.info(`migration du type de l’étape ${e.id} => ${typeId}`)
-    }
-  }
-
-  demarches = await titresDemarchesGet(
-    { titresDomainesIds: ['m'], titresTypesIds: ['ar'], typesIds: ['oct'] },
-    { fields: { etapes: { id: {} } } },
-    userSuper
-  )
-
-  console.info('migration des étapes d’oct d’ARM')
-  for (const d of demarches) {
-    const etapes = d.etapes!.filter(e => e.typeId === 'rco')
-    for (const e of etapes) {
-      const typeId = 'rcm'
-      await TitresEtapes.query().patch({ typeId }).where('id', e.id)
-      console.info(`migration du type de l’étape ${e.id} => ${typeId}`)
-    }
-  }
-
-  process.exit(0)
-}
-
-main().catch(e => {
-  console.error(e)
-
-  process.exit(1)
-})
diff --git a/packages/api/src/dev/database/titres-activites-delete.ts b/packages/api/src/dev/database/titres-activites-delete.ts
deleted file mode 100644
index 9a9d6be66..000000000
--- a/packages/api/src/dev/database/titres-activites-delete.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import '../../init'
-import TitresActivites from '../../database/models/titres-activites'
-
-const main = async () => {
-  const titresActivites = await TitresActivites.query().where(
-    'suppression',
-    true
-  )
-
-  const titresActivitesSupprimeesIds = [] as string[]
-  const titresActivitesConserveesIds = [] as string[]
-  for (const ta of titresActivites) {
-    if (
-      !ta.contenu ||
-      (ta.typeId === 'grp' &&
-        ta.contenu?.renseignements &&
-        Object.keys(ta.contenu.renseignements).every(
-          propId => !ta.contenu!.renseignements![propId]
-        ))
-    ) {
-      titresActivitesSupprimeesIds.push(ta.id)
-      console.info('activité supprimée', ta.id)
-      await TitresActivites.query().where('id', ta.id).del()
-    } else {
-      titresActivitesConserveesIds.push(ta.id)
-    }
-  }
-
-  console.info('activités conservées:', titresActivitesConserveesIds.join(', '))
-  console.info('activités suprrimées:', titresActivitesSupprimeesIds.length)
-
-  process.exit(0)
-}
-
-main().catch(e => {
-  console.error(e)
-
-  process.exit(1)
-})
diff --git a/packages/api/src/dev/database/titres-contenu-optionnel.ts b/packages/api/src/dev/database/titres-contenu-optionnel.ts
deleted file mode 100644
index 160307e84..000000000
--- a/packages/api/src/dev/database/titres-contenu-optionnel.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import '../../init'
-
-import EtapesTypes from '../../database/models/etapes-types'
-import TitresTypesDemarchesTypesEtapesTypes from '../../database/models/titres-types--demarches-types-etapes-types'
-
-async function main() {
-  const etapeTypes = await EtapesTypes.query()
-  for (const et of etapeTypes) {
-    et.sections?.forEach(s =>
-      s.elements
-        ?.filter(e => ['checkbox', 'radio'].includes(e.type))
-        .forEach(e => (e.optionnel = undefined))
-    )
-    await EtapesTypes.query()
-      .patch({ sections: et.sections })
-      .where('id', et.id)
-  }
-
-  const tdes = await TitresTypesDemarchesTypesEtapesTypes.query()
-  for (const tde of tdes) {
-    tde.sections?.forEach(s =>
-      s.elements
-        ?.filter(e => ['checkbox', 'radio'].includes(e.type))
-        .forEach(e => (e.optionnel = undefined))
-    )
-    await TitresTypesDemarchesTypesEtapesTypes.query()
-      .patch({ sections: tde.sections })
-      .where('titreTypeId', tde.titreTypeId)
-      .andWhere('demarcheTypeId', tde.demarcheTypeId)
-      .andWhere('etapeTypeId', tde.etapeTypeId)
-  }
-
-  process.exit(0)
-}
-
-main().catch(e => {
-  console.error(e)
-
-  process.exit(1)
-})
diff --git a/packages/api/src/dev/database/titres-to-csv.ts b/packages/api/src/dev/database/titres-to-csv.ts
deleted file mode 100644
index 19ce51bf2..000000000
--- a/packages/api/src/dev/database/titres-to-csv.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import '../../init'
-import { knex } from '../../knex'
-import fileCreate from '../../tools/file-create'
-import xlsx from 'xlsx'
-import { Index } from '../../types.js'
-
-async function main() {
-  const titres = await knex('titres')
-    .where('dateFin', '>', '1990-01-01')
-    .where('titreStatutId', 'ech')
-
-  const sheet = xlsx.utils.json_to_sheet(titres as Index<any>[])
-
-  const fileContent = xlsx.utils.sheet_to_csv(sheet)
-
-  await fileCreate('titres-echus.csv', fileContent)
-
-  console.info(`fichier créé avec ${titres.length} lignes`)
-  process.exit(0)
-}
-
-main().catch(e => {
-  console.error(e)
-
-  process.exit(1)
-})
diff --git a/packages/api/src/dev/tmp/.keep b/packages/api/src/dev/tmp/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts
index d89626ac1..ac9b4ea6a 100644
--- a/packages/api/src/index.ts
+++ b/packages/api/src/index.ts
@@ -8,29 +8,29 @@
  * You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
  */
 
-import './init'
+import './init.js'
 import compression from 'compression'
 import cors from 'cors'
 import express from 'express'
 import rateLimit from 'express-rate-limit'
 import * as Sentry from '@sentry/node'
 
-import { port, url } from './config/index'
-import { rest } from './server/rest'
-import { graphql } from './server/graphql'
-import { authJwt, authJwtError } from './server/auth-jwt'
-import { authBasic } from './server/auth-basic'
+import { port, url } from './config/index.js'
+import { rest } from './server/rest.js'
+import { graphql } from './server/graphql.js'
+import { authJwt, authJwtError } from './server/auth-jwt.js'
+import { authBasic } from './server/auth-basic.js'
 import {
   restUpload,
   graphqlUpload,
   uploadAllowedMiddleware
-} from './server/upload'
-import { databaseInit } from './database/init'
+} from './server/upload.js'
+import { databaseInit } from './database/init.js'
 
-import { consoleOverride } from './config/logger'
+import { consoleOverride } from './config/logger.js'
 import cookieParser from 'cookie-parser'
-import { filesInit } from './config/files'
-import { geoSystemesInit } from './config/proj4'
+import { filesInit } from './config/files.js'
+import { geoSystemesInit } from './config/proj4.js'
 
 consoleOverride()
 geoSystemesInit()
@@ -52,7 +52,7 @@ filesInit().then(() => {
       max: 100, // Limit each IP to 100 requests per `window` (here, per 1 minute)
       standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
       legacyHeaders: false, // Disable the `X-RateLimit-*` headers
-      skip: (request, _response) => {
+      skip: (request: any, _response: any) => {
         // On n'applique pas de rate limiting sur le televersement des fichiers
         return request.url.startsWith('/televersement')
       }
diff --git a/packages/api/src/init.ts b/packages/api/src/init.ts
index 1c0b63038..96445e1d4 100644
--- a/packages/api/src/init.ts
+++ b/packages/api/src/init.ts
@@ -1,7 +1,7 @@
 import dotenv from 'dotenv'
 import { resolve } from 'path'
-import { knexInit } from './knex'
-import { knexConfig } from './knex/config'
+import { knexInit } from './knex.js'
+import { knexConfig } from './knex/config.js'
 
 dotenv.config({ path: resolve(process.cwd(), '../../.env') })
 
diff --git a/packages/api/src/knex/cli-user-add.ts b/packages/api/src/knex/cli-user-add.ts
index 599527e40..d84c074dd 100644
--- a/packages/api/src/knex/cli-user-add.ts
+++ b/packages/api/src/knex/cli-user-add.ts
@@ -1,7 +1,7 @@
+import { getCurrent } from 'camino-common/src/date.js'
 import '../init'
-import { knex } from '../knex'
-import { userAdd } from './user-add'
-import dateFormat from 'dateformat'
+import { knex } from '../knex.js'
+import { userAdd } from './user-add.js'
 
 const run = async () => {
   try {
@@ -9,7 +9,7 @@ const run = async () => {
       id: 'admin',
       email: process.env.ADMIN_EMAIL,
       role: 'super',
-      dateCreation: dateFormat(new Date(), 'yyyy-mm-dd')
+      dateCreation: getCurrent()
     })
   } catch (e) {
     console.error(e)
diff --git a/packages/api/src/knex/config.ts b/packages/api/src/knex/config.ts
index f17e5d7a4..261806c42 100644
--- a/packages/api/src/knex/config.ts
+++ b/packages/api/src/knex/config.ts
@@ -1,8 +1,10 @@
 import 'dotenv/config'
-import { join } from 'path'
 import { knexSnakeCaseMappers } from 'objection'
+import path, { join } from 'node:path'
+import { fileURLToPath } from 'url'
+const __dirname = path.dirname(fileURLToPath(import.meta.url))
 
-const connection = {
+export const connection = {
   host: process.env.PGHOST,
   port: Number(process.env.PGPORT),
   database: process.env.PGDATABASE,
@@ -10,7 +12,7 @@ const connection = {
   password: process.env.PGPASSWORD
 }
 
-const knexConfig = {
+export const knexConfig = {
   client: 'pg',
   connection,
   migrations: {
@@ -18,13 +20,9 @@ const knexConfig = {
       join(__dirname, './migrations-schema'),
       join(__dirname, './migrations-data')
     ],
-    stub: join(__dirname, './migration-stub.js'),
-    // génère les nouveaux fichiers de migrations en Javascript, car la prod éxecute les fichiers transpillés
-    // Si on met du Typescript, les environnements de devs ne vont plus démarrer avec la bdd de prod.
-    // https://github.com/knex/knex/issues/4688
-    extension: 'js'
+    stub: join(__dirname, './migration-stub.ts'),
+    extension: 'ts',
+    loadExtensions: ['.ts']
   },
   ...knexSnakeCaseMappers()
 }
-
-export { knexConfig, connection }
diff --git a/packages/api/src/knex/db-manager-config.ts b/packages/api/src/knex/db-manager-config.ts
index 64af413d3..f12f8eb3f 100644
--- a/packages/api/src/knex/db-manager-config.ts
+++ b/packages/api/src/knex/db-manager-config.ts
@@ -1,5 +1,5 @@
 import 'dotenv/config'
-import { connection, knexConfig } from './config'
+import { connection, knexConfig } from './config.js'
 
 export const dbManagerConfig = {
   knex: knexConfig,
diff --git a/packages/api/src/knex/migrate.ts b/packages/api/src/knex/migrate.ts
index 679a2824b..af3bced7a 100644
--- a/packages/api/src/knex/migrate.ts
+++ b/packages/api/src/knex/migrate.ts
@@ -1,5 +1,5 @@
 import '../init'
-import { knex } from '../knex'
+import { knex } from '../knex.js'
 import chalk from 'chalk'
 
 const run = async () => {
diff --git a/packages/api/src/knex/migration-stub.js b/packages/api/src/knex/migration-stub.ts
similarity index 59%
rename from packages/api/src/knex/migration-stub.js
rename to packages/api/src/knex/migration-stub.ts
index d79a338bb..984fb1ef8 100644
--- a/packages/api/src/knex/migration-stub.js
+++ b/packages/api/src/knex/migration-stub.ts
@@ -1,7 +1,9 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+
+export const up = async (knex: Knex) => {
   await knex.schema.dropTable('nexistepasEtVaFairePlanterLaMigration')
 
   return knex.schema.dropTable('nexistepasEtVaFairePlanterLaMigration')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20211103110922_etapes_statuts_complet_add.js b/packages/api/src/knex/migrations-data/20211103110922_etapes_statuts_complet_add.ts
similarity index 90%
rename from packages/api/src/knex/migrations-data/20211103110922_etapes_statuts_complet_add.js
rename to packages/api/src/knex/migrations-data/20211103110922_etapes_statuts_complet_add.ts
index 138bf4233..2a395b52f 100644
--- a/packages/api/src/knex/migrations-data/20211103110922_etapes_statuts_complet_add.js
+++ b/packages/api/src/knex/migrations-data/20211103110922_etapes_statuts_complet_add.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex('etapes_statuts').insert([
     {
       id: 'com',
@@ -46,4 +47,4 @@ exports.up = async knex => {
     .del()
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20211103135837_titres_etapes_incertitudes_clean.js b/packages/api/src/knex/migrations-data/20211103135837_titres_etapes_incertitudes_clean.ts
similarity index 79%
rename from packages/api/src/knex/migrations-data/20211103135837_titres_etapes_incertitudes_clean.js
rename to packages/api/src/knex/migrations-data/20211103135837_titres_etapes_incertitudes_clean.ts
index ae65f33ba..dd6a37d52 100644
--- a/packages/api/src/knex/migrations-data/20211103135837_titres_etapes_incertitudes_clean.js
+++ b/packages/api/src/knex/migrations-data/20211103135837_titres_etapes_incertitudes_clean.ts
@@ -1,7 +1,8 @@
-import TitresEtapes from '../../database/models/titres-etapes'
+import { Knex } from 'knex'
+import TitresEtapes from '../../database/models/titres-etapes.js'
 
-exports.up = async knex => {
-  const titresEtapes = await TitresEtapes.query().withGraphFetched(
+export const up = async (knex: Knex) => {
+  const titresEtapes: any[] = await TitresEtapes.query().withGraphFetched(
     '[titulaires, amodiataires, points, substances]'
   )
 
@@ -36,4 +37,4 @@ exports.up = async knex => {
   }
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20211116154026_demarches_statuts_travaux_finpolicemines_add.js b/packages/api/src/knex/migrations-data/20211116154026_demarches_statuts_travaux_finpolicemines_add.ts
similarity index 67%
rename from packages/api/src/knex/migrations-data/20211116154026_demarches_statuts_travaux_finpolicemines_add.js
rename to packages/api/src/knex/migrations-data/20211116154026_demarches_statuts_travaux_finpolicemines_add.ts
index 7d4a4e939..e5fad4f8b 100644
--- a/packages/api/src/knex/migrations-data/20211116154026_demarches_statuts_travaux_finpolicemines_add.js
+++ b/packages/api/src/knex/migrations-data/20211116154026_demarches_statuts_travaux_finpolicemines_add.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex('demarches_statuts').insert([
     {
       id: 'fpm',
@@ -10,4 +11,4 @@ exports.up = async knex => {
   ])
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20211123084623_metas_travaux_publi_recueil_acte_admin_add.js b/packages/api/src/knex/migrations-data/20211123084623_metas_travaux_publi_recueil_acte_admin_add.ts
similarity index 80%
rename from packages/api/src/knex/migrations-data/20211123084623_metas_travaux_publi_recueil_acte_admin_add.js
rename to packages/api/src/knex/migrations-data/20211123084623_metas_travaux_publi_recueil_acte_admin_add.ts
index 07c045d31..df1021cf6 100644
--- a/packages/api/src/knex/migrations-data/20211123084623_metas_travaux_publi_recueil_acte_admin_add.js
+++ b/packages/api/src/knex/migrations-data/20211123084623_metas_travaux_publi_recueil_acte_admin_add.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   const demarcheTypeId = 'dam' // déclaration d'arrêt définitif des travaux
   const etapeTypeId = 'wpa' // publication au recueil des actes administratifs
   const titresTypes = await knex.select().table('titres_types')
@@ -13,4 +14,4 @@ exports.up = async knex => {
   }
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20211201135203_etapes_travaux_arrete_ouverture_travaux_miniers_add.js b/packages/api/src/knex/migrations-data/20211201135203_etapes_travaux_arrete_ouverture_travaux_miniers_add.ts
similarity index 88%
rename from packages/api/src/knex/migrations-data/20211201135203_etapes_travaux_arrete_ouverture_travaux_miniers_add.js
rename to packages/api/src/knex/migrations-data/20211201135203_etapes_travaux_arrete_ouverture_travaux_miniers_add.ts
index a91531b25..555aca0e8 100644
--- a/packages/api/src/knex/migrations-data/20211201135203_etapes_travaux_arrete_ouverture_travaux_miniers_add.js
+++ b/packages/api/src/knex/migrations-data/20211201135203_etapes_travaux_arrete_ouverture_travaux_miniers_add.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   // Ajoute l'étape "Arrêté d'ouverture de travaux miniers"
   // à la démarche "Autorisation d'ouverture de travaux miniers".
   const titresTypes = await knex.select().table('titres_types')
@@ -31,4 +32,4 @@ exports.up = async knex => {
   }
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20211215100715_utilisateurs-camino-create.js b/packages/api/src/knex/migrations-data/20211215100715_utilisateurs-camino-create.js
deleted file mode 100644
index 00961f08c..000000000
--- a/packages/api/src/knex/migrations-data/20211215100715_utilisateurs-camino-create.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import { idGenerate } from '../../database/models/_format/id-create'
-import { userSuper } from '../../database/user-super'
-
-exports.up = async knex => {
-  await knex('utilisateurs').insert({
-    ...userSuper,
-    motDePasse: idGenerate()
-  })
-}
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20211215100715_utilisateurs-camino-create.ts b/packages/api/src/knex/migrations-data/20211215100715_utilisateurs-camino-create.ts
new file mode 100644
index 000000000..c0a9e64e2
--- /dev/null
+++ b/packages/api/src/knex/migrations-data/20211215100715_utilisateurs-camino-create.ts
@@ -0,0 +1,11 @@
+import { Knex } from 'knex'
+import { idGenerate } from '../../database/models/_format/id-create.js'
+import { userSuper } from '../../database/user-super.js'
+
+export const up = async (knex: Knex) => {
+  await knex('utilisateurs').insert({
+    ...userSuper,
+    motDePasse: idGenerate()
+  })
+}
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220104133620_etapes_travaux_porter_connaissance_add.js b/packages/api/src/knex/migrations-data/20220104133620_etapes_travaux_porter_connaissance_add.ts
similarity index 83%
rename from packages/api/src/knex/migrations-data/20220104133620_etapes_travaux_porter_connaissance_add.js
rename to packages/api/src/knex/migrations-data/20220104133620_etapes_travaux_porter_connaissance_add.ts
index c01408e4e..249b4b4a8 100644
--- a/packages/api/src/knex/migrations-data/20220104133620_etapes_travaux_porter_connaissance_add.js
+++ b/packages/api/src/knex/migrations-data/20220104133620_etapes_travaux_porter_connaissance_add.ts
@@ -1,6 +1,7 @@
-import { TitreEtapesTravauxTypes } from '../../types'
+import { Knex } from 'knex'
+import { TitreEtapesTravauxTypes } from '../../types.js'
 
-exports.up = async knex => {
+export const up = async (knex: Knex) => {
   // Ajoute l'étape "Porter-à-connaissance"
   // à la démarche "Déclaration d’arrêt définitif de travaux miniers DADT".
   const titresTypes = await knex.select().table('titres_types')
@@ -33,4 +34,4 @@ exports.up = async knex => {
   }
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220119122515_document_type_jpa_migrate.js b/packages/api/src/knex/migrations-data/20220119122515_document_type_jpa_migrate.ts
similarity index 80%
rename from packages/api/src/knex/migrations-data/20220119122515_document_type_jpa_migrate.js
rename to packages/api/src/knex/migrations-data/20220119122515_document_type_jpa_migrate.ts
index fe0657228..efb0ff6da 100644
--- a/packages/api/src/knex/migrations-data/20220119122515_document_type_jpa_migrate.js
+++ b/packages/api/src/knex/migrations-data/20220119122515_document_type_jpa_migrate.ts
@@ -1,9 +1,10 @@
-import TitresEtapesJustificatifs from '../../database/models/titres-etapes-justificatifs'
-import Document from '../../database/models/documents'
-import fileRename from '../../tools/file-rename'
-import { documentFilePathFind } from '../../tools/documents/document-path-find'
+import { Knex } from 'knex'
+import TitresEtapesJustificatifs from '../../database/models/titres-etapes-justificatifs.js'
+import Document from '../../database/models/documents.js'
+import fileRename from '../../tools/file-rename.js'
+import { documentFilePathFind } from '../../tools/documents/document-path-find.js'
 
-exports.up = async knex => {
+export const up = async (knex: Knex) => {
   await knex('titres_types__demarches_types__etapes_types__justificatifs_t')
     .where('document_type_id', 'jpa')
     .delete()
@@ -17,7 +18,7 @@ exports.up = async knex => {
     documentTypeId: 'jpa'
   })
 
-  const titreEtapeJustificatifs = await TitresEtapesJustificatifs.query()
+  const titreEtapeJustificatifs: any[] = await TitresEtapesJustificatifs.query()
     .leftJoinRelated('document')
     .where('document.typeId', 'jpa')
     .withGraphFetched('[document, etape]')
@@ -50,4 +51,4 @@ exports.up = async knex => {
   }
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220127132757_etapes_types_clean.js b/packages/api/src/knex/migrations-data/20220127132757_etapes_types_clean.ts
similarity index 85%
rename from packages/api/src/knex/migrations-data/20220127132757_etapes_types_clean.js
rename to packages/api/src/knex/migrations-data/20220127132757_etapes_types_clean.ts
index da7f91cbf..3c48d871c 100644
--- a/packages/api/src/knex/migrations-data/20220127132757_etapes_types_clean.js
+++ b/packages/api/src/knex/migrations-data/20220127132757_etapes_types_clean.ts
@@ -1,15 +1,16 @@
-import { titresEtapesGet } from '../../database/queries/titres-etapes'
-import { userSuper } from '../../database/user-super'
-import TitresEtapes from '../../database/models/titres-etapes'
-import { deleteJournalCreate } from '../../database/queries/journaux'
+import { Knex } from 'knex'
+import { titresEtapesGet } from '../../database/queries/titres-etapes.js'
+import { userSuper } from '../../database/user-super.js'
+import TitresEtapes from '../../database/models/titres-etapes.js'
+import { deleteJournalCreate } from '../../database/queries/journaux.js'
 
-exports.up = async knex => {
+export const up = async (knex: Knex) => {
   // Supprime l’étape DSL « Demande de l’accord du propriétaire du sol »
   await knex('titres_types__demarches_types__etapes_types')
     .where('etape_type_id', 'dsl')
     .delete()
 
-  const etapesDsl = await titresEtapesGet(
+  const etapesDsl: any[] = await titresEtapesGet(
     { etapesTypesIds: ['dsl'] },
     { fields: { demarche: {} } },
     userSuper
@@ -46,7 +47,7 @@ exports.up = async knex => {
     .where('etape_type_id', 'qae')
     .delete()
 
-  const etapesQae = await titresEtapesGet(
+  const etapesQae: any[] = await titresEtapesGet(
     { etapesTypesIds: ['qae'] },
     { fields: { demarche: {} } },
     userSuper
@@ -71,4 +72,4 @@ exports.up = async knex => {
 
   await knex('etapes_types').where('id', 'qae').delete()
 }
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220404145904_titres_activites_wrp_masse_delete.js b/packages/api/src/knex/migrations-data/20220404145904_titres_activites_wrp_masse_delete.ts
similarity index 64%
rename from packages/api/src/knex/migrations-data/20220404145904_titres_activites_wrp_masse_delete.js
rename to packages/api/src/knex/migrations-data/20220404145904_titres_activites_wrp_masse_delete.ts
index 6e4a7ab35..4b5a03db9 100644
--- a/packages/api/src/knex/migrations-data/20220404145904_titres_activites_wrp_masse_delete.js
+++ b/packages/api/src/knex/migrations-data/20220404145904_titres_activites_wrp_masse_delete.ts
@@ -1,5 +1,6 @@
-exports.up = async knex => {
-  const activites = await knex('titres_activites').where('typeId', 'wrp')
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
+  const activites: any[] = await knex('titres_activites').where('typeId', 'wrp')
 
   for (let i = 0; i < activites.length; i++) {
     const activite = activites[i]
@@ -13,12 +14,12 @@ exports.up = async knex => {
 
     if (activite.sections) {
       const section = activite.sections.find(
-        s => s.id === 'renseignementsProduction'
+        (s: { id: string }) => s.id === 'renseignementsProduction'
       )
 
       if (section) {
         section.elements = section.elements.filter(
-          element => element.id !== 'masseGranulatsExtrait'
+          (element: { id: string }) => element.id !== 'masseGranulatsExtrait'
         )
 
         updated = true
@@ -31,4 +32,4 @@ exports.up = async knex => {
   }
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220427064929_titres_etapes_asl_heritage_clean.js b/packages/api/src/knex/migrations-data/20220427064929_titres_etapes_asl_heritage_clean.ts
similarity index 84%
rename from packages/api/src/knex/migrations-data/20220427064929_titres_etapes_asl_heritage_clean.js
rename to packages/api/src/knex/migrations-data/20220427064929_titres_etapes_asl_heritage_clean.ts
index 0010b5fde..717843444 100644
--- a/packages/api/src/knex/migrations-data/20220427064929_titres_etapes_asl_heritage_clean.js
+++ b/packages/api/src/knex/migrations-data/20220427064929_titres_etapes_asl_heritage_clean.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   const etapeIds = (
     await knex('titres_etapes').where('type_id', 'asl').select('id')
   ).map(({ id }) => id)
@@ -13,4 +14,4 @@ exports.up = async knex => {
     .update({ heritage_props: null })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220519123402_supprime-mid-rid.js b/packages/api/src/knex/migrations-data/20220519123402_supprime-mid-rid.ts
similarity index 81%
rename from packages/api/src/knex/migrations-data/20220519123402_supprime-mid-rid.js
rename to packages/api/src/knex/migrations-data/20220519123402_supprime-mid-rid.ts
index 1ab95278a..ee873f1de 100644
--- a/packages/api/src/knex/migrations-data/20220519123402_supprime-mid-rid.js
+++ b/packages/api/src/knex/migrations-data/20220519123402_supprime-mid-rid.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   const etapeTypeIds = ['mid', 'rid']
 
   await knex('administrations__titresTypes__etapesTypes')
@@ -13,4 +14,4 @@ exports.up = async knex => {
   await knex('etapesTypes').whereIn('id', etapeTypeIds).delete()
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220609145836_fix-substances-ordre.js b/packages/api/src/knex/migrations-data/20220609145836_fix-substances-ordre.ts
similarity index 93%
rename from packages/api/src/knex/migrations-data/20220609145836_fix-substances-ordre.js
rename to packages/api/src/knex/migrations-data/20220609145836_fix-substances-ordre.ts
index 919b6742d..7360769e7 100644
--- a/packages/api/src/knex/migrations-data/20220609145836_fix-substances-ordre.js
+++ b/packages/api/src/knex/migrations-data/20220609145836_fix-substances-ordre.ts
@@ -1,3 +1,4 @@
+import { Knex } from 'knex'
 const mostImportantSubstances = ['auru', 'nacl']
 const leastImportantSubstances = [
   'tmas',
@@ -8,7 +9,7 @@ const leastImportantSubstances = [
   'trxx'
 ]
 
-exports.up = async knex => {
+export const up = async (knex: Knex) => {
   const titresEtapesSubstances = await knex('titres_substances')
     .select('titre_etape_id')
     .count('titre_etape_id')
@@ -51,4 +52,4 @@ exports.up = async knex => {
   }
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220615122602_bureau-etudes-create.js b/packages/api/src/knex/migrations-data/20220615122602_bureau-etudes-create.ts
similarity index 59%
rename from packages/api/src/knex/migrations-data/20220615122602_bureau-etudes-create.js
rename to packages/api/src/knex/migrations-data/20220615122602_bureau-etudes-create.ts
index fd290b4f7..ffc3d5e1a 100644
--- a/packages/api/src/knex/migrations-data/20220615122602_bureau-etudes-create.js
+++ b/packages/api/src/knex/migrations-data/20220615122602_bureau-etudes-create.ts
@@ -1,6 +1,7 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex('utilisateurs')
     .whereIn('id', ['c7142a', '38cbc5', '24414c', '40bf91', '95177f'])
     .update({ role: 'bureau d’études' })
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220704122231_remove-plg.js b/packages/api/src/knex/migrations-data/20220704122231_remove-plg.ts
similarity index 60%
rename from packages/api/src/knex/migrations-data/20220704122231_remove-plg.js
rename to packages/api/src/knex/migrations-data/20220704122231_remove-plg.ts
index 76953ac32..534c117aa 100644
--- a/packages/api/src/knex/migrations-data/20220704122231_remove-plg.js
+++ b/packages/api/src/knex/migrations-data/20220704122231_remove-plg.ts
@@ -1,8 +1,9 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex('etapesTypes__documentsTypes')
     .where('documentTypeId', 'plg')
     .delete()
   await knex('documentsTypes').where('id', 'plg').delete()
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220706130330_demarches-types-fusion-concession.js b/packages/api/src/knex/migrations-data/20220706130330_demarches-types-fusion-concession.ts
similarity index 81%
rename from packages/api/src/knex/migrations-data/20220706130330_demarches-types-fusion-concession.js
rename to packages/api/src/knex/migrations-data/20220706130330_demarches-types-fusion-concession.ts
index 2ef156537..43ca6b62d 100644
--- a/packages/api/src/knex/migrations-data/20220706130330_demarches-types-fusion-concession.js
+++ b/packages/api/src/knex/migrations-data/20220706130330_demarches-types-fusion-concession.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex('titres_types__demarches_types').insert({
     titreTypeId: 'cxm',
     demarcheTypeId: 'fus'
@@ -18,4 +19,4 @@ exports.up = async knex => {
     ordre: 200
   })
 }
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220726122406_activites-fiscales-unites-fix.js b/packages/api/src/knex/migrations-data/20220726122406_activites-fiscales-unites-fix.ts
similarity index 74%
rename from packages/api/src/knex/migrations-data/20220726122406_activites-fiscales-unites-fix.js
rename to packages/api/src/knex/migrations-data/20220726122406_activites-fiscales-unites-fix.ts
index f47f19eb1..c203eadeb 100644
--- a/packages/api/src/knex/migrations-data/20220726122406_activites-fiscales-unites-fix.js
+++ b/packages/api/src/knex/migrations-data/20220726122406_activites-fiscales-unites-fix.ts
@@ -1,10 +1,23 @@
+import { UniteId } from 'camino-common/src/static/unites.js'
+import { Knex } from 'knex'
 const {
   SUBSTANCES_FISCALES_IDS,
   SubstancesFiscale
 } = require('camino-common/src/static/substancesFiscales')
 const { Unites } = require('camino-common/src/static/unites')
-exports.up = async knex => {
-  const activites = await knex('titres_activites')
+export const up = async (knex: Knex) => {
+  const activites: {
+    id: string
+    sections: {
+      id: string
+      elements: {
+        id: string
+        uniteId: UniteId
+        referenceUniteRatio: number
+        description: string
+      }[]
+    }[]
+  }[] = await knex('titres_activites')
 
   for (let i = 0; i < activites.length; i++) {
     const activite = activites[i]
@@ -40,4 +53,4 @@ exports.up = async knex => {
   }
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220816140444_substances-ordre-required.js b/packages/api/src/knex/migrations-data/20220816140444_substances-ordre-required.js
deleted file mode 100644
index 483d3dc82..000000000
--- a/packages/api/src/knex/migrations-data/20220816140444_substances-ordre-required.js
+++ /dev/null
@@ -1,27 +0,0 @@
-exports.up = async knex => {
-  await knex('titres_substances').whereNull('ordre').update({ ordre: 0 })
-
-  const titresSubstances = await knex('titres_substances')
-
-  const groupByTitres = titresSubstances.reduce((acc, ts) => {
-    if (!acc[ts.titreEtapeId]) {
-      acc[ts.titreEtapeId] = []
-    }
-    acc[ts.titreEtapeId].push(ts)
-
-    return acc
-  }, {})
-
-  for (const titreSubstances of Object.values(groupByTitres)) {
-    titreSubstances.sort((a, b) => a.ordre - b.ordre)
-    for (let index = 0; index < titreSubstances.length; index++) {
-      const ts = titreSubstances[index]
-      await knex('titres_substances')
-        .where('titreEtapeId', ts.titreEtapeId)
-        .where('substanceId', ts.substanceId)
-        .update('ordre', index)
-    }
-  }
-}
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220816140444_substances-ordre-required.ts b/packages/api/src/knex/migrations-data/20220816140444_substances-ordre-required.ts
new file mode 100644
index 000000000..9363c025e
--- /dev/null
+++ b/packages/api/src/knex/migrations-data/20220816140444_substances-ordre-required.ts
@@ -0,0 +1,33 @@
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
+  await knex('titres_substances').whereNull('ordre').update({ ordre: 0 })
+
+  const titresSubstances: any[] = await knex('titres_substances')
+
+  const groupByTitres: Record<string, any> = titresSubstances.reduce(
+    (acc, ts) => {
+      if (!acc[ts.titreEtapeId]) {
+        acc[ts.titreEtapeId] = []
+      }
+      acc[ts.titreEtapeId].push(ts)
+
+      return acc
+    },
+    {}
+  )
+
+  for (const titreSubstances of Object.values(groupByTitres)) {
+    titreSubstances.sort(
+      (a: { ordre: number }, b: { ordre: number }) => a.ordre - b.ordre
+    )
+    for (let index = 0; index < titreSubstances.length; index++) {
+      const ts = titreSubstances[index]
+      await knex('titres_substances')
+        .where('titreEtapeId', ts.titreEtapeId)
+        .where('substanceId', ts.substanceId)
+        .update('ordre', index)
+    }
+  }
+}
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220830145751_document-notice-impact-fix.js b/packages/api/src/knex/migrations-data/20220830145751_document-notice-impact-fix.ts
similarity index 87%
rename from packages/api/src/knex/migrations-data/20220830145751_document-notice-impact-fix.js
rename to packages/api/src/knex/migrations-data/20220830145751_document-notice-impact-fix.ts
index 9b386a592..c33f16fb7 100644
--- a/packages/api/src/knex/migrations-data/20220830145751_document-notice-impact-fix.js
+++ b/packages/api/src/knex/migrations-data/20220830145751_document-notice-impact-fix.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex('documentsTypes').insert({ id: 'nip', nom: 'Notice d’impact' })
   await knex('titresTypes__demarchesTypes__etapesTypes__documentsTypes').insert(
     {
@@ -23,4 +24,4 @@ exports.up = async knex => {
   }
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20220905150740_change-la-visibilite-des-titres-stockage-souterrain.js b/packages/api/src/knex/migrations-data/20220905150740_change-la-visibilite-des-titres-stockage-souterrain.ts
similarity index 65%
rename from packages/api/src/knex/migrations-data/20220905150740_change-la-visibilite-des-titres-stockage-souterrain.js
rename to packages/api/src/knex/migrations-data/20220905150740_change-la-visibilite-des-titres-stockage-souterrain.ts
index 86e4e6590..16863ee2c 100644
--- a/packages/api/src/knex/migrations-data/20220905150740_change-la-visibilite-des-titres-stockage-souterrain.js
+++ b/packages/api/src/knex/migrations-data/20220905150740_change-la-visibilite-des-titres-stockage-souterrain.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex('titresTypes__titresStatuts')
     .whereLike('titreTypeId', '%s')
     .whereIn('titreStatutId', ['val', 'ech', 'dmi', 'mod'])
@@ -7,4 +8,4 @@ exports.up = async knex => {
     })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20221019080302_ajout-tde-ppu-ppc-afp-ars-aac.js b/packages/api/src/knex/migrations-data/20221019080302_ajout-tde-ppu-ppc-afp-ars-aac.ts
similarity index 82%
rename from packages/api/src/knex/migrations-data/20221019080302_ajout-tde-ppu-ppc-afp-ars-aac.js
rename to packages/api/src/knex/migrations-data/20221019080302_ajout-tde-ppu-ppc-afp-ars-aac.ts
index 6fb325a71..63d378cf6 100644
--- a/packages/api/src/knex/migrations-data/20221019080302_ajout-tde-ppu-ppc-afp-ars-aac.js
+++ b/packages/api/src/knex/migrations-data/20221019080302_ajout-tde-ppu-ppc-afp-ars-aac.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.raw(`INSERT INTO titres_types__demarches_types__etapes_types(titre_type_id, ordre, demarche_type_id, etape_type_id) VALUES 
   ('prm', 261, 'pr2','ppu'),
   ('prm', 261, 'pr2','ppc'),
@@ -14,4 +15,4 @@ exports.up = async knex => {
   `)
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20221107143442_delete-entreprises-titres-types.js b/packages/api/src/knex/migrations-data/20221107143442_delete-entreprises-titres-types.js
deleted file mode 100644
index 7164d666d..000000000
--- a/packages/api/src/knex/migrations-data/20221107143442_delete-entreprises-titres-types.js
+++ /dev/null
@@ -1,5 +0,0 @@
-exports.up = async knex => {
-  await knex.schema.dropTable('entreprises__titresTypes')
-}
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-data/20221107143442_delete-entreprises-titres-types.ts b/packages/api/src/knex/migrations-data/20221107143442_delete-entreprises-titres-types.ts
new file mode 100644
index 000000000..5e20e9882
--- /dev/null
+++ b/packages/api/src/knex/migrations-data/20221107143442_delete-entreprises-titres-types.ts
@@ -0,0 +1,6 @@
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
+  await knex.schema.dropTable('entreprises__titresTypes')
+}
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20180521000000_globales.js b/packages/api/src/knex/migrations-schema/20180521000000_globales.js
deleted file mode 100644
index 3a422654a..000000000
--- a/packages/api/src/knex/migrations-schema/20180521000000_globales.js
+++ /dev/null
@@ -1,7 +0,0 @@
-exports.up = knex =>
-  knex.schema.createTable('globales', table => {
-    table.string('id').primary()
-    table.boolean('valeur').notNullable()
-  })
-
-exports.down = knex => knex.schema.dropTable('globales')
diff --git a/packages/api/src/knex/migrations-schema/20180521000000_globales.ts b/packages/api/src/knex/migrations-schema/20180521000000_globales.ts
new file mode 100644
index 000000000..c8dc2516e
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20180521000000_globales.ts
@@ -0,0 +1,9 @@
+import { Knex } from 'knex'
+
+export const up = (knex: Knex) =>
+  knex.schema.createTable('globales', table => {
+    table.string('id').primary()
+    table.boolean('valeur').notNullable()
+  })
+
+export const down = (knex: Knex) => knex.schema.dropTable('globales')
diff --git a/packages/api/src/knex/migrations-schema/20180521000001_domaines_types_statuts.js b/packages/api/src/knex/migrations-schema/20180521000001_domaines_types_statuts.ts
similarity index 94%
rename from packages/api/src/knex/migrations-schema/20180521000001_domaines_types_statuts.js
rename to packages/api/src/knex/migrations-schema/20180521000001_domaines_types_statuts.ts
index 7b48d0309..9f4ef61b7 100644
--- a/packages/api/src/knex/migrations-schema/20180521000001_domaines_types_statuts.js
+++ b/packages/api/src/knex/migrations-schema/20180521000001_domaines_types_statuts.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema
     .createTable('domaines', table => {
       table.string('id', 1).primary()
@@ -50,7 +51,7 @@ exports.up = knex =>
       table.primary(['titreTypeId', 'titreStatutId'])
     })
 
-exports.down = knex =>
+export const down = (knex: Knex) =>
   knex.schema
     .dropTable('titresTypesTypes')
     .dropTable('domaines')
diff --git a/packages/api/src/knex/migrations-schema/20180521000002_demarches_etapes.js b/packages/api/src/knex/migrations-schema/20180521000002_demarches_etapes.ts
similarity index 98%
rename from packages/api/src/knex/migrations-schema/20180521000002_demarches_etapes.js
rename to packages/api/src/knex/migrations-schema/20180521000002_demarches_etapes.ts
index 9f4070d3c..f41663091 100644
--- a/packages/api/src/knex/migrations-schema/20180521000002_demarches_etapes.js
+++ b/packages/api/src/knex/migrations-schema/20180521000002_demarches_etapes.ts
@@ -1,4 +1,5 @@
-exports.up = knex => {
+import { Knex } from 'knex'
+export const up = (knex: Knex) => {
   return knex.schema
     .createTable('demarchesTypes', table => {
       table.string('id', 3).primary()
@@ -176,7 +177,7 @@ exports.up = knex => {
     )
 }
 
-exports.down = knex => {
+export const down = (knex: Knex) => {
   return knex.schema
     .dropTable('titresTypes__demarchesTypes__etapesTypes__justificatifsT')
     .dropTable('titresTypes__demarchesTypes__etapesTypes__documentsTypes')
diff --git a/packages/api/src/knex/migrations-schema/20180521000003_unites.js b/packages/api/src/knex/migrations-schema/20180521000003_unites.ts
similarity index 91%
rename from packages/api/src/knex/migrations-schema/20180521000003_unites.js
rename to packages/api/src/knex/migrations-schema/20180521000003_unites.ts
index 71dd67c78..812888fbd 100644
--- a/packages/api/src/knex/migrations-schema/20180521000003_unites.js
+++ b/packages/api/src/knex/migrations-schema/20180521000003_unites.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema
     .createTable('devises', table => {
       table.string('id', 3).primary()
@@ -25,7 +26,7 @@ exports.up = knex =>
       table.string('nom').notNullable()
     })
 
-exports.down = knex =>
+export const down = (knex: Knex) =>
   knex.schema
     .dropTable('devises')
     .dropTable('geoSystemes')
diff --git a/packages/api/src/knex/migrations-schema/20180521000004_substances.js b/packages/api/src/knex/migrations-schema/20180521000004_substances.ts
similarity index 95%
rename from packages/api/src/knex/migrations-schema/20180521000004_substances.js
rename to packages/api/src/knex/migrations-schema/20180521000004_substances.ts
index e6926337b..00443f58f 100644
--- a/packages/api/src/knex/migrations-schema/20180521000004_substances.js
+++ b/packages/api/src/knex/migrations-schema/20180521000004_substances.ts
@@ -1,4 +1,5 @@
-exports.up = knex => {
+import { Knex } from 'knex'
+export const up = (knex: Knex) => {
   return knex.schema
     .createTable('substancesLegalesCodes', table => {
       table.string('id').primary()
@@ -58,7 +59,7 @@ exports.up = knex => {
     })
 }
 
-exports.down = knex => {
+export const down = (knex: Knex) => {
   return knex.schema
     .dropTable('substances__substancesLegales')
     .dropTable('substances')
diff --git a/packages/api/src/knex/migrations-schema/20180521000005_territoires.js b/packages/api/src/knex/migrations-schema/20180521000005_territoires.ts
similarity index 92%
rename from packages/api/src/knex/migrations-schema/20180521000005_territoires.js
rename to packages/api/src/knex/migrations-schema/20180521000005_territoires.ts
index 81b07306b..5a34510d1 100644
--- a/packages/api/src/knex/migrations-schema/20180521000005_territoires.js
+++ b/packages/api/src/knex/migrations-schema/20180521000005_territoires.ts
@@ -1,4 +1,5 @@
-exports.up = knex => {
+import { Knex } from 'knex'
+export const up = (knex: Knex) => {
   return knex.schema
     .createTable('pays', table => {
       table.string('id', 3).primary()
@@ -32,7 +33,7 @@ exports.up = knex => {
     })
 }
 
-exports.down = knex => {
+export const down = (knex: Knex) => {
   return knex.schema
     .dropTable('communes')
     .dropTable('departements')
diff --git a/packages/api/src/knex/migrations-schema/20180521000006_calendrier.js b/packages/api/src/knex/migrations-schema/20180521000006_calendrier.ts
similarity index 90%
rename from packages/api/src/knex/migrations-schema/20180521000006_calendrier.js
rename to packages/api/src/knex/migrations-schema/20180521000006_calendrier.ts
index 7007d2b9c..4027b3f58 100644
--- a/packages/api/src/knex/migrations-schema/20180521000006_calendrier.js
+++ b/packages/api/src/knex/migrations-schema/20180521000006_calendrier.ts
@@ -1,4 +1,5 @@
-exports.up = knex => {
+import { Knex } from 'knex'
+export const up = (knex: Knex) => {
   return knex.schema
     .createTable('frequences', table => {
       table.string('id', 3).primary()
@@ -23,7 +24,7 @@ exports.up = knex => {
     })
 }
 
-exports.down = knex => {
+export const down = (knex: Knex) => {
   return knex.schema
     .dropTable('mois')
     .dropTable('trimestres')
diff --git a/packages/api/src/knex/migrations-schema/20180521000007_metas_activites.js b/packages/api/src/knex/migrations-schema/20180521000007_metas_activites.ts
similarity index 95%
rename from packages/api/src/knex/migrations-schema/20180521000007_metas_activites.js
rename to packages/api/src/knex/migrations-schema/20180521000007_metas_activites.ts
index e7e7e54eb..c53fa915b 100644
--- a/packages/api/src/knex/migrations-schema/20180521000007_metas_activites.js
+++ b/packages/api/src/knex/migrations-schema/20180521000007_metas_activites.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema
     .createTable('activitesTypes', table => {
       table.string('id', 3).primary()
@@ -60,7 +61,7 @@ exports.up = knex =>
       table.string('couleur', 16).notNullable()
     })
 
-exports.down = knex =>
+export const down = (knex: Knex) =>
   knex.schema
     .dropTable('activitesTypes__pays')
     .dropTable('activitesTypes__documentsTypes')
diff --git a/packages/api/src/knex/migrations-schema/20180521000008_metas_travaux.js b/packages/api/src/knex/migrations-schema/20180521000008_metas_travaux.ts
similarity index 95%
rename from packages/api/src/knex/migrations-schema/20180521000008_metas_travaux.js
rename to packages/api/src/knex/migrations-schema/20180521000008_metas_travaux.ts
index e61dd0cfd..958949338 100644
--- a/packages/api/src/knex/migrations-schema/20180521000008_metas_travaux.js
+++ b/packages/api/src/knex/migrations-schema/20180521000008_metas_travaux.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema
     .createTable('travauxTypes', table => {
       table.string('id', 3).primary()
@@ -56,7 +57,7 @@ exports.up = knex =>
       table.primary(['travauxEtapeTypeId', 'documentTypeId'])
     })
 
-exports.down = knex =>
+export const down = (knex: Knex) =>
   knex.schema
     .dropTable('travauxEtapesTypes__documentsTypes')
     .dropTable('travauxEtapesTypes__etapesStatuts')
diff --git a/packages/api/src/knex/migrations-schema/20180521000009_repertoire.js b/packages/api/src/knex/migrations-schema/20180521000009_repertoire.ts
similarity index 98%
rename from packages/api/src/knex/migrations-schema/20180521000009_repertoire.js
rename to packages/api/src/knex/migrations-schema/20180521000009_repertoire.ts
index d6264dc85..68649577c 100644
--- a/packages/api/src/knex/migrations-schema/20180521000009_repertoire.js
+++ b/packages/api/src/knex/migrations-schema/20180521000009_repertoire.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema
     .createTable('entreprises', table => {
       table.string('id', 64).primary()
@@ -225,7 +226,7 @@ exports.up = knex =>
       table.primary(['etapeTypeId', 'documentTypeId'])
     })
 
-exports.down = knex =>
+export const down = (knex: Knex) =>
   knex.schema
     .dropTable('etapesTypes__justificatifsTypes')
     .dropTable('utilisateurs__administrations')
diff --git a/packages/api/src/knex/migrations-schema/20180522000001_titres.js b/packages/api/src/knex/migrations-schema/20180522000001_titres.ts
similarity index 82%
rename from packages/api/src/knex/migrations-schema/20180522000001_titres.js
rename to packages/api/src/knex/migrations-schema/20180522000001_titres.ts
index 6d1991821..8f4bb63c0 100644
--- a/packages/api/src/knex/migrations-schema/20180522000001_titres.js
+++ b/packages/api/src/knex/migrations-schema/20180522000001_titres.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema.createTable('titres', table => {
     table.string('id', 128).primary()
     table.string('slug').index()
@@ -19,7 +20,7 @@ exports.up = knex =>
     table.string('doublonTitreId', 128)
     table.jsonb('contenusTitreEtapesIds')
     table.jsonb('propsTitreEtapesIds').defaultTo({})
-    table.specificType('coordonnees', 'POINT').index(null, 'GIST')
+    table.specificType('coordonnees', 'POINT')
   })
 
-exports.down = knex => knex.schema.dropTable('titres')
+export const down = (knex: Knex) => knex.schema.dropTable('titres')
diff --git a/packages/api/src/knex/migrations-schema/20180522000002_titres_demarches_etapes.js b/packages/api/src/knex/migrations-schema/20180522000002_titres_demarches_etapes.ts
similarity index 96%
rename from packages/api/src/knex/migrations-schema/20180522000002_titres_demarches_etapes.js
rename to packages/api/src/knex/migrations-schema/20180522000002_titres_demarches_etapes.ts
index 83be81163..ae664e75f 100644
--- a/packages/api/src/knex/migrations-schema/20180522000002_titres_demarches_etapes.js
+++ b/packages/api/src/knex/migrations-schema/20180522000002_titres_demarches_etapes.ts
@@ -1,4 +1,5 @@
-exports.up = knex => {
+import { Knex } from 'knex'
+export const up = (knex: Knex) => {
   return knex.schema
     .createTable('titresDemarches', table => {
       table.string('id', 128).primary()
@@ -82,7 +83,7 @@ exports.up = knex => {
     })
 }
 
-exports.down = knex => {
+export const down = (knex: Knex) => {
   return knex.schema
     .dropTable('titresEtapes')
     .dropTable('titresPhases')
diff --git a/packages/api/src/knex/migrations-schema/20180522000003_titres_etapes_substances_emprises.js b/packages/api/src/knex/migrations-schema/20180522000003_titres_etapes_substances_emprises.ts
similarity index 83%
rename from packages/api/src/knex/migrations-schema/20180522000003_titres_etapes_substances_emprises.js
rename to packages/api/src/knex/migrations-schema/20180522000003_titres_etapes_substances_emprises.ts
index dca0cc6a1..ebe932365 100644
--- a/packages/api/src/knex/migrations-schema/20180522000003_titres_etapes_substances_emprises.js
+++ b/packages/api/src/knex/migrations-schema/20180522000003_titres_etapes_substances_emprises.ts
@@ -1,4 +1,5 @@
-exports.up = knex => {
+import { Knex } from 'knex'
+export const up = (knex: Knex) => {
   return knex.schema.createTable('titresSubstances', table => {
     table.string('titreEtapeId', 128).notNullable().index()
     table
@@ -16,6 +17,6 @@ exports.up = knex => {
   })
 }
 
-exports.down = knex => {
+export const down = (knex: Knex) => {
   return knex.schema.dropTable('titresSubstances')
 }
diff --git a/packages/api/src/knex/migrations-schema/20180522000004_titres_etapes_utilisateurs_titulaires_amodiataires_administrations.js b/packages/api/src/knex/migrations-schema/20180522000004_titres_etapes_utilisateurs_titulaires_amodiataires_administrations.ts
similarity index 95%
rename from packages/api/src/knex/migrations-schema/20180522000004_titres_etapes_utilisateurs_titulaires_amodiataires_administrations.js
rename to packages/api/src/knex/migrations-schema/20180522000004_titres_etapes_utilisateurs_titulaires_amodiataires_administrations.ts
index e1055b18a..aacd02765 100644
--- a/packages/api/src/knex/migrations-schema/20180522000004_titres_etapes_utilisateurs_titulaires_amodiataires_administrations.js
+++ b/packages/api/src/knex/migrations-schema/20180522000004_titres_etapes_utilisateurs_titulaires_amodiataires_administrations.ts
@@ -1,4 +1,5 @@
-exports.up = knex => {
+import { Knex } from 'knex'
+export const up = (knex: Knex) => {
   return knex.schema
     .createTable('titresTitulaires', table => {
       table.string('titreEtapeId', 128).notNullable().index()
@@ -72,7 +73,7 @@ exports.up = knex => {
     })
 }
 
-exports.down = knex => {
+export const down = (knex: Knex) => {
   return knex.schema
     .dropTable('titresAdministrationsLocales')
     .dropTable('titresAdministrationsGestionnaires')
diff --git a/packages/api/src/knex/migrations-schema/20180522000005_titres_etapes_points.js b/packages/api/src/knex/migrations-schema/20180522000005_titres_etapes_points.ts
similarity index 87%
rename from packages/api/src/knex/migrations-schema/20180522000005_titres_etapes_points.js
rename to packages/api/src/knex/migrations-schema/20180522000005_titres_etapes_points.ts
index 326f16085..1de3fa148 100644
--- a/packages/api/src/knex/migrations-schema/20180522000005_titres_etapes_points.js
+++ b/packages/api/src/knex/migrations-schema/20180522000005_titres_etapes_points.ts
@@ -1,4 +1,5 @@
-exports.up = knex => {
+import { Knex } from 'knex'
+export const up = (knex: Knex) => {
   return knex.schema
     .createTable('titresPoints', table => {
       table.string('id').primary()
@@ -9,10 +10,7 @@ exports.up = knex => {
         .references('titresEtapes.id')
         .onUpdate('CASCADE')
         .onDelete('CASCADE')
-      table
-        .specificType('coordonnees', 'POINT')
-        .notNullable()
-        .index(null, 'GIST')
+      table.specificType('coordonnees', 'POINT').notNullable()
       table.integer('groupe').notNullable()
       table.integer('contour').notNullable()
       table.integer('point').notNullable()
@@ -37,7 +35,7 @@ exports.up = knex => {
     })
 }
 
-exports.down = knex => {
+export const down = (knex: Knex) => {
   return knex.schema
     .dropTable('titresPointsReferences')
     .dropTable('titresPoints')
diff --git a/packages/api/src/knex/migrations-schema/20180522000006_titres_etapes_territoires.js b/packages/api/src/knex/migrations-schema/20180522000006_titres_etapes_territoires.ts
similarity index 90%
rename from packages/api/src/knex/migrations-schema/20180522000006_titres_etapes_territoires.js
rename to packages/api/src/knex/migrations-schema/20180522000006_titres_etapes_territoires.ts
index e68cc39ef..d5e03f98c 100644
--- a/packages/api/src/knex/migrations-schema/20180522000006_titres_etapes_territoires.js
+++ b/packages/api/src/knex/migrations-schema/20180522000006_titres_etapes_territoires.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema
     .createTable('titresCommunes', table => {
       table.string('titreEtapeId', 128).notNullable().index()
@@ -27,5 +28,5 @@ exports.up = knex =>
       table.primary(['titreEtapeId', 'foretId'])
     })
 
-exports.down = knex =>
+export const down = (knex: Knex) =>
   knex.schema.dropTable('titresCommunes').dropTable('titresForets')
diff --git a/packages/api/src/knex/migrations-schema/20180522000009_titres_references.js b/packages/api/src/knex/migrations-schema/20180522000009_titres_references.ts
similarity index 82%
rename from packages/api/src/knex/migrations-schema/20180522000009_titres_references.js
rename to packages/api/src/knex/migrations-schema/20180522000009_titres_references.ts
index 01c1d2be8..570dc65a6 100644
--- a/packages/api/src/knex/migrations-schema/20180522000009_titres_references.js
+++ b/packages/api/src/knex/migrations-schema/20180522000009_titres_references.ts
@@ -1,4 +1,5 @@
-exports.up = knex => {
+import { Knex } from 'knex'
+export const up = (knex: Knex) => {
   return knex.schema.createTable('titresReferences', table => {
     table.string('titreId', 128).notNullable().index()
     table
@@ -16,6 +17,6 @@ exports.up = knex => {
   })
 }
 
-exports.down = knex => {
+export const down = (knex: Knex) => {
   return knex.schema.dropTable('titresReferences')
 }
diff --git a/packages/api/src/knex/migrations-schema/20181106000002_titres_activites.js b/packages/api/src/knex/migrations-schema/20181106000002_titres_activites.ts
similarity index 85%
rename from packages/api/src/knex/migrations-schema/20181106000002_titres_activites.js
rename to packages/api/src/knex/migrations-schema/20181106000002_titres_activites.ts
index d2d20ffdb..7abd0b170 100644
--- a/packages/api/src/knex/migrations-schema/20181106000002_titres_activites.js
+++ b/packages/api/src/knex/migrations-schema/20181106000002_titres_activites.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema.createTable('titresActivites', table => {
     table.string('id').primary()
     table.string('slug').index()
@@ -28,4 +29,4 @@ exports.up = knex =>
     table.boolean('suppression')
   })
 
-exports.down = knex => knex.schema.dropTable('titresActivites')
+export const down = (knex: Knex) => knex.schema.dropTable('titresActivites')
diff --git a/packages/api/src/knex/migrations-schema/20181106000004_titres_travaux.js b/packages/api/src/knex/migrations-schema/20181106000004_titres_travaux.ts
similarity index 89%
rename from packages/api/src/knex/migrations-schema/20181106000004_titres_travaux.js
rename to packages/api/src/knex/migrations-schema/20181106000004_titres_travaux.ts
index d5b1a7d28..1f567f0b7 100644
--- a/packages/api/src/knex/migrations-schema/20181106000004_titres_travaux.js
+++ b/packages/api/src/knex/migrations-schema/20181106000004_titres_travaux.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema
     .createTable('titresTravaux', table => {
       table.string('id', 128).primary()
@@ -39,4 +40,4 @@ exports.up = knex =>
       table.integer('ordre')
     })
 
-exports.down = knex => knex.schema.dropTable('titresActivites')
+export const down = (knex: Knex) => knex.schema.dropTable('titresActivites')
diff --git a/packages/api/src/knex/migrations-schema/20181106000006_documents.js b/packages/api/src/knex/migrations-schema/20181106000006_documents.ts
similarity index 95%
rename from packages/api/src/knex/migrations-schema/20181106000006_documents.js
rename to packages/api/src/knex/migrations-schema/20181106000006_documents.ts
index b2ba9ef73..1929824af 100644
--- a/packages/api/src/knex/migrations-schema/20181106000006_documents.js
+++ b/packages/api/src/knex/migrations-schema/20181106000006_documents.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema
     .createTable('documents', table => {
       table.string('id').primary()
@@ -59,5 +60,5 @@ exports.up = knex =>
       table.primary(['titreEtapeId', 'documentId'])
     })
 
-exports.down = knex =>
+export const down = (knex: Knex) =>
   knex.schema.dropTable('titresEtapesJustificatifs').dropTable('documents')
diff --git a/packages/api/src/knex/migrations-schema/20181106000007_definitions.js b/packages/api/src/knex/migrations-schema/20181106000007_definitions.ts
similarity index 66%
rename from packages/api/src/knex/migrations-schema/20181106000007_definitions.js
rename to packages/api/src/knex/migrations-schema/20181106000007_definitions.ts
index 5c6452153..89f9928fe 100644
--- a/packages/api/src/knex/migrations-schema/20181106000007_definitions.js
+++ b/packages/api/src/knex/migrations-schema/20181106000007_definitions.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema.createTable('definitions', table => {
     table.string('id', 3).primary()
     table.string('nom').notNullable()
@@ -8,4 +9,4 @@ exports.up = knex =>
     table.text('description')
   })
 
-exports.down = knex => knex.schema.dropTable('definitions')
+export const down = (knex: Knex) => knex.schema.dropTable('definitions')
diff --git a/packages/api/src/knex/migrations-schema/20181106000008_cache.js b/packages/api/src/knex/migrations-schema/20181106000008_cache.js
deleted file mode 100644
index 678be07b5..000000000
--- a/packages/api/src/knex/migrations-schema/20181106000008_cache.js
+++ /dev/null
@@ -1,7 +0,0 @@
-exports.up = knex =>
-  knex.schema.createTable('caches', table => {
-    table.string('id', 128).primary()
-    table.jsonb('valeur')
-  })
-
-exports.down = knex => knex.schema.dropTable('caches')
diff --git a/packages/api/src/knex/migrations-schema/20181106000008_cache.ts b/packages/api/src/knex/migrations-schema/20181106000008_cache.ts
new file mode 100644
index 000000000..58e92f7d4
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20181106000008_cache.ts
@@ -0,0 +1,8 @@
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
+  knex.schema.createTable('caches', table => {
+    table.string('id', 128).primary()
+    table.jsonb('valeur')
+  })
+
+export const down = (knex: Knex) => knex.schema.dropTable('caches')
diff --git a/packages/api/src/knex/migrations-schema/20210915144021_logs.js b/packages/api/src/knex/migrations-schema/20210915144021_logs.ts
similarity index 72%
rename from packages/api/src/knex/migrations-schema/20210915144021_logs.js
rename to packages/api/src/knex/migrations-schema/20210915144021_logs.ts
index 1d6df7988..9e7625c8b 100644
--- a/packages/api/src/knex/migrations-schema/20210915144021_logs.js
+++ b/packages/api/src/knex/migrations-schema/20210915144021_logs.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema.createTable('logs', table => {
     table.string('id').primary()
     table.string('utilisateurId').index().notNullable()
@@ -8,4 +9,4 @@ exports.up = knex =>
     table.jsonb('differences').nullable()
   })
 
-exports.down = knex => knex.schema.dropTable('logs')
+export const down = (knex: Knex) => knex.schema.dropTable('logs')
diff --git a/packages/api/src/knex/migrations-schema/20210928170751_travaux_delete.js b/packages/api/src/knex/migrations-schema/20210928170751_travaux_delete.ts
similarity index 77%
rename from packages/api/src/knex/migrations-schema/20210928170751_travaux_delete.js
rename to packages/api/src/knex/migrations-schema/20210928170751_travaux_delete.ts
index 0831f562d..55ead3cdb 100644
--- a/packages/api/src/knex/migrations-schema/20210928170751_travaux_delete.js
+++ b/packages/api/src/knex/migrations-schema/20210928170751_travaux_delete.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.table('demarchesTypes', table => {
     table.boolean('travaux')
   })
@@ -13,6 +14,6 @@ exports.up = async knex => {
 }
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
-exports.down = knex => {
+export const down = (knex: Knex) => {
   // TODO
 }
diff --git a/packages/api/src/knex/migrations-schema/20210929153443_metas_travaux_delete.js b/packages/api/src/knex/migrations-schema/20210929153443_metas_travaux_delete.ts
similarity index 75%
rename from packages/api/src/knex/migrations-schema/20210929153443_metas_travaux_delete.js
rename to packages/api/src/knex/migrations-schema/20210929153443_metas_travaux_delete.ts
index ddb8d1ab5..b107b48be 100644
--- a/packages/api/src/knex/migrations-schema/20210929153443_metas_travaux_delete.js
+++ b/packages/api/src/knex/migrations-schema/20210929153443_metas_travaux_delete.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   return knex.schema
     .dropTable('travaux_etapes_types__documents_types')
     .dropTable('travaux_etapes_types__etapes_statuts')
@@ -8,6 +9,6 @@ exports.up = async knex => {
 }
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
-exports.down = knex => {
+export const down = (knex: Knex) => {
   // TODO
 }
diff --git a/packages/api/src/knex/migrations-schema/20210930103844_titres_administrations.js b/packages/api/src/knex/migrations-schema/20210930103844_titres_administrations.js
deleted file mode 100644
index f58ba8700..000000000
--- a/packages/api/src/knex/migrations-schema/20210930103844_titres_administrations.js
+++ /dev/null
@@ -1,21 +0,0 @@
-exports.up = knex =>
-  knex.schema
-    .table('titresAdministrationsLocales', table =>
-      table.dropColumn('coordinateur')
-    )
-    .createTable('titresAdministrations', table => {
-      table.string('titreId', 128).notNullable().index()
-      table
-        .foreign('titreId')
-        .references('titres.id')
-        .onUpdate('CASCADE')
-        .onDelete('CASCADE')
-      table
-        .string('administrationId', 128)
-        .index()
-        .references('administrations.id')
-        .notNullable()
-      table.primary(['titreId', 'administrationId'])
-    })
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20210930103844_titres_administrations.ts b/packages/api/src/knex/migrations-schema/20210930103844_titres_administrations.ts
new file mode 100644
index 000000000..6df1c3240
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20210930103844_titres_administrations.ts
@@ -0,0 +1,23 @@
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
+  await knex.schema.table('titresAdministrationsLocales', table =>
+    table.dropColumn('coordinateur')
+  )
+
+  return knex.schema.createTable('titresAdministrations', table => {
+    table.string('titreId', 128).notNullable().index()
+    table
+      .foreign('titreId')
+      .references('titres.id')
+      .onUpdate('CASCADE')
+      .onDelete('CASCADE')
+    table
+      .string('administrationId', 128)
+      .index()
+      .references('administrations.id')
+      .notNullable()
+    table.primary(['titreId', 'administrationId'])
+  })
+}
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20211019161848_administrations-activites-types-emails-create.js b/packages/api/src/knex/migrations-schema/20211019161848_administrations-activites-types-emails-create.ts
similarity index 86%
rename from packages/api/src/knex/migrations-schema/20211019161848_administrations-activites-types-emails-create.js
rename to packages/api/src/knex/migrations-schema/20211019161848_administrations-activites-types-emails-create.ts
index 9785765b6..358106896 100644
--- a/packages/api/src/knex/migrations-schema/20211019161848_administrations-activites-types-emails-create.js
+++ b/packages/api/src/knex/migrations-schema/20211019161848_administrations-activites-types-emails-create.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.createTable(
     'administrations__activitesTypes__emails',
     table => {
@@ -24,5 +25,5 @@ exports.up = async knex => {
   })
 }
 
-exports.down = knex =>
+export const down = (knex: Knex) =>
   knex.schema.dropTable('administrations__activitesTypes__emails')
diff --git a/packages/api/src/knex/migrations-schema/20211027103109_logs_column_titreId_add.js b/packages/api/src/knex/migrations-schema/20211027103109_logs_column_titreId_add.ts
similarity index 75%
rename from packages/api/src/knex/migrations-schema/20211027103109_logs_column_titreId_add.js
rename to packages/api/src/knex/migrations-schema/20211027103109_logs_column_titreId_add.ts
index a35158036..1358a4cde 100644
--- a/packages/api/src/knex/migrations-schema/20211027103109_logs_column_titreId_add.js
+++ b/packages/api/src/knex/migrations-schema/20211027103109_logs_column_titreId_add.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex('logs').delete()
   await knex.schema.renameTable('logs', 'journaux')
 
@@ -12,4 +13,4 @@ exports.up = async knex => {
   })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20211110153616_sdom-zones-create.js b/packages/api/src/knex/migrations-schema/20211110153616_sdom-zones-create.ts
similarity index 87%
rename from packages/api/src/knex/migrations-schema/20211110153616_sdom-zones-create.js
rename to packages/api/src/knex/migrations-schema/20211110153616_sdom-zones-create.ts
index 30cf8751e..4a092ad8c 100644
--- a/packages/api/src/knex/migrations-schema/20211110153616_sdom-zones-create.js
+++ b/packages/api/src/knex/migrations-schema/20211110153616_sdom-zones-create.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema
     .createTable('sdomZones', table => {
       table.string('id', 30).primary()
@@ -20,5 +21,5 @@ exports.up = knex =>
       table.primary(['titreEtapeId', 'sdomZoneId'])
     })
 
-exports.down = knex =>
+export const down = (knex: Knex) =>
   knex.schema.dropTable('sdomZones').dropTable('titres__sdomZones')
diff --git a/packages/api/src/knex/migrations-schema/20211123162004_utilisateurs-titres_create.js b/packages/api/src/knex/migrations-schema/20211123162004_utilisateurs-titres_create.ts
similarity index 68%
rename from packages/api/src/knex/migrations-schema/20211123162004_utilisateurs-titres_create.js
rename to packages/api/src/knex/migrations-schema/20211123162004_utilisateurs-titres_create.ts
index dd7d54143..84f980a6f 100644
--- a/packages/api/src/knex/migrations-schema/20211123162004_utilisateurs-titres_create.js
+++ b/packages/api/src/knex/migrations-schema/20211123162004_utilisateurs-titres_create.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema.createTable('utilisateurs__titres', table => {
     table
       .string('utilisateurId')
@@ -9,4 +10,5 @@ exports.up = knex =>
     table.primary(['utilisateurId', 'titreId'])
   })
 
-exports.down = knex => knex.schema.dropTable('utilisateurs__titres')
+export const down = (knex: Knex) =>
+  knex.schema.dropTable('utilisateurs__titres')
diff --git a/packages/api/src/knex/migrations-schema/20220127141738_titres_demarches_description_add.js b/packages/api/src/knex/migrations-schema/20220127141738_titres_demarches_description_add.ts
similarity index 54%
rename from packages/api/src/knex/migrations-schema/20220127141738_titres_demarches_description_add.js
rename to packages/api/src/knex/migrations-schema/20220127141738_titres_demarches_description_add.ts
index 3158f687a..083a08629 100644
--- a/packages/api/src/knex/migrations-schema/20220127141738_titres_demarches_description_add.js
+++ b/packages/api/src/knex/migrations-schema/20220127141738_titres_demarches_description_add.ts
@@ -1,6 +1,7 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema.alterTable('titres_demarches', function (table) {
     table.string('description').nullable()
   })
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220216142302_titres_etapes_decisions_annexes.js b/packages/api/src/knex/migrations-schema/20220216142302_titres_etapes_decisions_annexes.ts
similarity index 62%
rename from packages/api/src/knex/migrations-schema/20220216142302_titres_etapes_decisions_annexes.js
rename to packages/api/src/knex/migrations-schema/20220216142302_titres_etapes_decisions_annexes.ts
index 78bbc0b42..5f2d0e3f6 100644
--- a/packages/api/src/knex/migrations-schema/20220216142302_titres_etapes_decisions_annexes.js
+++ b/packages/api/src/knex/migrations-schema/20220216142302_titres_etapes_decisions_annexes.ts
@@ -1,8 +1,9 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   return knex.schema.table('titres_etapes', table => {
     table.specificType('decisions_annexes_sections', 'jsonb[]')
     table.json('decisions_annexes_contenu')
   })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220308161359_titres_archive_add.js b/packages/api/src/knex/migrations-schema/20220308161359_titres_archive_add.ts
similarity index 79%
rename from packages/api/src/knex/migrations-schema/20220308161359_titres_archive_add.js
rename to packages/api/src/knex/migrations-schema/20220308161359_titres_archive_add.ts
index 41111229b..bb5ca8092 100644
--- a/packages/api/src/knex/migrations-schema/20220308161359_titres_archive_add.js
+++ b/packages/api/src/knex/migrations-schema/20220308161359_titres_archive_add.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('titres', function (table) {
     table.boolean('archive').defaultTo(false).notNullable()
   })
@@ -11,4 +12,4 @@ exports.up = async knex => {
   })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220325105157_remove-definitions.js b/packages/api/src/knex/migrations-schema/20220325105157_remove-definitions.js
deleted file mode 100644
index b2cf7b6d5..000000000
--- a/packages/api/src/knex/migrations-schema/20220325105157_remove-definitions.js
+++ /dev/null
@@ -1,3 +0,0 @@
-exports.up = knex => knex.schema.dropTable('definitions')
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220325105157_remove-definitions.ts b/packages/api/src/knex/migrations-schema/20220325105157_remove-definitions.ts
new file mode 100644
index 000000000..a76e0f0ff
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20220325105157_remove-definitions.ts
@@ -0,0 +1,4 @@
+import { Knex } from 'knex'
+export const up = (knex: Knex) => knex.schema.dropTable('definitions')
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220427075921_administrations_delete.js b/packages/api/src/knex/migrations-schema/20220427075921_administrations_delete.ts
similarity index 83%
rename from packages/api/src/knex/migrations-schema/20220427075921_administrations_delete.js
rename to packages/api/src/knex/migrations-schema/20220427075921_administrations_delete.ts
index c1cf4e61c..abe409839 100644
--- a/packages/api/src/knex/migrations-schema/20220427075921_administrations_delete.js
+++ b/packages/api/src/knex/migrations-schema/20220427075921_administrations_delete.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.table('administrations', table => {
     table.dropColumn('nom')
     table.dropColumn('abreviation')
@@ -17,4 +18,4 @@ exports.up = async knex => {
   return knex.schema.dropTable('administrations_types')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220511154122_ajoute-date-creation-utilisateur.js b/packages/api/src/knex/migrations-schema/20220511154122_ajoute-date-creation-utilisateur.ts
similarity index 73%
rename from packages/api/src/knex/migrations-schema/20220511154122_ajoute-date-creation-utilisateur.js
rename to packages/api/src/knex/migrations-schema/20220511154122_ajoute-date-creation-utilisateur.ts
index bcf79475d..fdbe40ef8 100644
--- a/packages/api/src/knex/migrations-schema/20220511154122_ajoute-date-creation-utilisateur.js
+++ b/packages/api/src/knex/migrations-schema/20220511154122_ajoute-date-creation-utilisateur.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('utilisateurs', function (table) {
     table.string('dateCreation')
   })
@@ -10,4 +11,4 @@ exports.up = async knex => {
   })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220512121252_supprime-satisfaction-url.js b/packages/api/src/knex/migrations-schema/20220512121252_supprime-satisfaction-url.ts
similarity index 50%
rename from packages/api/src/knex/migrations-schema/20220512121252_supprime-satisfaction-url.js
rename to packages/api/src/knex/migrations-schema/20220512121252_supprime-satisfaction-url.ts
index be51c5e54..983d55fa0 100644
--- a/packages/api/src/knex/migrations-schema/20220512121252_supprime-satisfaction-url.js
+++ b/packages/api/src/knex/migrations-schema/20220512121252_supprime-satisfaction-url.ts
@@ -1,7 +1,8 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.table('activitesTypes', table => {
     table.dropColumn('satisfactionUrl')
   })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220518064538_geo_systemes_delete.js b/packages/api/src/knex/migrations-schema/20220518064538_geo_systemes_delete.js
deleted file mode 100644
index da199cdb2..000000000
--- a/packages/api/src/knex/migrations-schema/20220518064538_geo_systemes_delete.js
+++ /dev/null
@@ -1,5 +0,0 @@
-exports.up = async knex => {
-  return knex.schema.dropTable('geo_systemes')
-}
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220518064538_geo_systemes_delete.ts b/packages/api/src/knex/migrations-schema/20220518064538_geo_systemes_delete.ts
new file mode 100644
index 000000000..0f67f406e
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20220518064538_geo_systemes_delete.ts
@@ -0,0 +1,6 @@
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
+  return knex.schema.dropTable('geo_systemes')
+}
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220518122355_supprime-devises.js b/packages/api/src/knex/migrations-schema/20220518122355_supprime-devises.js
deleted file mode 100644
index 6817eae56..000000000
--- a/packages/api/src/knex/migrations-schema/20220518122355_supprime-devises.js
+++ /dev/null
@@ -1,5 +0,0 @@
-exports.up = async knex => {
-  await knex.schema.dropTable('devises')
-}
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220518122355_supprime-devises.ts b/packages/api/src/knex/migrations-schema/20220518122355_supprime-devises.ts
new file mode 100644
index 000000000..c3f2936c8
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20220518122355_supprime-devises.ts
@@ -0,0 +1,6 @@
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
+  await knex.schema.dropTable('devises')
+}
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220531134336_remove-substances-fiscales.js b/packages/api/src/knex/migrations-schema/20220531134336_remove-substances-fiscales.js
deleted file mode 100644
index 23492e8f2..000000000
--- a/packages/api/src/knex/migrations-schema/20220531134336_remove-substances-fiscales.js
+++ /dev/null
@@ -1,5 +0,0 @@
-exports.up = async knex => {
-  await knex.schema.dropTable('substancesFiscales')
-}
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220531134336_remove-substances-fiscales.ts b/packages/api/src/knex/migrations-schema/20220531134336_remove-substances-fiscales.ts
new file mode 100644
index 000000000..a7fa29661
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20220531134336_remove-substances-fiscales.ts
@@ -0,0 +1,6 @@
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
+  await knex.schema.dropTable('substancesFiscales')
+}
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220601063231_unites_delete.js b/packages/api/src/knex/migrations-schema/20220601063231_unites_delete.js
deleted file mode 100644
index a917dd77a..000000000
--- a/packages/api/src/knex/migrations-schema/20220601063231_unites_delete.js
+++ /dev/null
@@ -1,5 +0,0 @@
-exports.up = async knex => {
-  return knex.schema.dropTable('unites')
-}
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220601063231_unites_delete.ts b/packages/api/src/knex/migrations-schema/20220601063231_unites_delete.ts
new file mode 100644
index 000000000..fba1b8211
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20220601063231_unites_delete.ts
@@ -0,0 +1,6 @@
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
+  return knex.schema.dropTable('unites')
+}
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220609145846_fix-substances-ordre-required.js b/packages/api/src/knex/migrations-schema/20220609145846_fix-substances-ordre-required.ts
similarity index 73%
rename from packages/api/src/knex/migrations-schema/20220609145846_fix-substances-ordre-required.js
rename to packages/api/src/knex/migrations-schema/20220609145846_fix-substances-ordre-required.ts
index 6281b8374..97a9aff9c 100644
--- a/packages/api/src/knex/migrations-schema/20220609145846_fix-substances-ordre-required.js
+++ b/packages/api/src/knex/migrations-schema/20220609145846_fix-substances-ordre-required.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.raw(
     'CREATE UNIQUE INDEX titre_etape_id_ordre_unique on titres_substances(titre_etape_id, ordre) WHERE ordre IS NOT NULL'
   )
@@ -8,4 +9,4 @@ exports.up = async knex => {
   )
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220613152312_remove-permission.js b/packages/api/src/knex/migrations-schema/20220613152312_remove-permission.ts
similarity index 82%
rename from packages/api/src/knex/migrations-schema/20220613152312_remove-permission.js
rename to packages/api/src/knex/migrations-schema/20220613152312_remove-permission.ts
index 53fe9674d..99e0c82b6 100644
--- a/packages/api/src/knex/migrations-schema/20220613152312_remove-permission.js
+++ b/packages/api/src/knex/migrations-schema/20220613152312_remove-permission.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('utilisateurs', function (table) {
     table.dropIndex('permission_id', 'utilisateurs_permissionid_index')
     table.dropForeign('permission_id', 'utilisateurs_permissionid_foreign')
@@ -14,4 +15,4 @@ exports.up = async knex => {
   return knex.schema.dropTable('permissions')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220616132604_utilisateurs-administrations-delete.js b/packages/api/src/knex/migrations-schema/20220616132604_utilisateurs-administrations-delete.ts
similarity index 83%
rename from packages/api/src/knex/migrations-schema/20220616132604_utilisateurs-administrations-delete.js
rename to packages/api/src/knex/migrations-schema/20220616132604_utilisateurs-administrations-delete.ts
index 50b54b806..b1c8c0383 100644
--- a/packages/api/src/knex/migrations-schema/20220616132604_utilisateurs-administrations-delete.js
+++ b/packages/api/src/knex/migrations-schema/20220616132604_utilisateurs-administrations-delete.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.table('utilisateurs', table => {
     table.string('administrationId').index().references('administrations.id')
   })
@@ -19,4 +20,4 @@ exports.up = async knex => {
   return knex.schema.dropTable('utilisateurs__administrations')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220704122849_territoires-delete.js b/packages/api/src/knex/migrations-schema/20220704122849_territoires-delete.ts
similarity index 88%
rename from packages/api/src/knex/migrations-schema/20220704122849_territoires-delete.js
rename to packages/api/src/knex/migrations-schema/20220704122849_territoires-delete.ts
index f6dabcc40..9bcb7315c 100644
--- a/packages/api/src/knex/migrations-schema/20220704122849_territoires-delete.js
+++ b/packages/api/src/knex/migrations-schema/20220704122849_territoires-delete.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('activitesTypes__pays', function (table) {
     table.dropIndex('pays_id', 'activitestypes__pays_paysid_index')
     table.dropForeign('pays_id', 'activitestypes__pays_paysid_foreign')
@@ -20,4 +21,4 @@ exports.up = async knex => {
   return knex.schema.dropTable('pays')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220705125716_administration-delete.js b/packages/api/src/knex/migrations-schema/20220705125716_administration-delete.ts
similarity index 58%
rename from packages/api/src/knex/migrations-schema/20220705125716_administration-delete.js
rename to packages/api/src/knex/migrations-schema/20220705125716_administration-delete.ts
index 8e9552b43..82649973a 100644
--- a/packages/api/src/knex/migrations-schema/20220705125716_administration-delete.js
+++ b/packages/api/src/knex/migrations-schema/20220705125716_administration-delete.ts
@@ -1,6 +1,7 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema.alterTable('administrations', function (table) {
     table.dropColumns('departement_id', 'region_id', 'type_id')
   })
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220706145651_titres-titres-create.js b/packages/api/src/knex/migrations-schema/20220706145651_titres-titres-create.ts
similarity index 77%
rename from packages/api/src/knex/migrations-schema/20220706145651_titres-titres-create.js
rename to packages/api/src/knex/migrations-schema/20220706145651_titres-titres-create.ts
index d90c32e52..17122220b 100644
--- a/packages/api/src/knex/migrations-schema/20220706145651_titres-titres-create.js
+++ b/packages/api/src/knex/migrations-schema/20220706145651_titres-titres-create.ts
@@ -1,4 +1,5 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema.createTable('titres__titres', table => {
     table.string('titreFromId').notNullable().index()
     table.string('titreToId').notNullable().index()
@@ -7,4 +8,4 @@ exports.up = knex =>
     table.primary(['titreFromId', 'titreToId'])
   })
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220727082824_supprime-etapes-statuts.js b/packages/api/src/knex/migrations-schema/20220727082824_supprime-etapes-statuts.ts
similarity index 71%
rename from packages/api/src/knex/migrations-schema/20220727082824_supprime-etapes-statuts.js
rename to packages/api/src/knex/migrations-schema/20220727082824_supprime-etapes-statuts.ts
index e4bd4d2ff..a3e869b7a 100644
--- a/packages/api/src/knex/migrations-schema/20220727082824_supprime-etapes-statuts.js
+++ b/packages/api/src/knex/migrations-schema/20220727082824_supprime-etapes-statuts.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('titres_etapes', function (table) {
     table.dropForeign('statut_id', 'titresetapes_statutid_foreign')
   })
@@ -6,4 +7,4 @@ exports.up = async knex => {
   await knex.schema.dropTable('etapes_statuts')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220810150111_substances-legales-code-delete.js b/packages/api/src/knex/migrations-schema/20220810150111_substances-legales-code-delete.ts
similarity index 64%
rename from packages/api/src/knex/migrations-schema/20220810150111_substances-legales-code-delete.js
rename to packages/api/src/knex/migrations-schema/20220810150111_substances-legales-code-delete.ts
index dca12f058..ce05503ab 100644
--- a/packages/api/src/knex/migrations-schema/20220810150111_substances-legales-code-delete.js
+++ b/packages/api/src/knex/migrations-schema/20220810150111_substances-legales-code-delete.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('substancesLegales', function (table) {
     table.dropColumn('substanceLegaleCodeId')
   })
@@ -6,4 +7,4 @@ exports.up = async knex => {
   return knex.schema.dropTable('substancesLegalesCodes')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220816143105_substances-delete.js b/packages/api/src/knex/migrations-schema/20220816143105_substances-delete.ts
similarity index 87%
rename from packages/api/src/knex/migrations-schema/20220816143105_substances-delete.js
rename to packages/api/src/knex/migrations-schema/20220816143105_substances-delete.ts
index 275855abb..5670b41f0 100644
--- a/packages/api/src/knex/migrations-schema/20220816143105_substances-delete.js
+++ b/packages/api/src/knex/migrations-schema/20220816143105_substances-delete.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('titres_substances', function (table) {
     table.dropForeign('substance_id', 'titressubstances_substanceid_foreign')
     table.integer('ordre').notNullable().alter()
@@ -35,7 +36,10 @@ exports.up = async knex => {
   })
   const titresSubstances = await knex('titres_substances')
 
-  const substanceIdsByTitre = titresSubstances.reduce((acc, ts) => {
+  const substanceIdsByTitre: Record<
+    string,
+    { ordre: number; substanceId: string }[]
+  > = titresSubstances.reduce((acc, ts) => {
     if (!acc[ts.titreEtapeId]) {
       acc[ts.titreEtapeId] = []
     }
@@ -59,4 +63,4 @@ exports.up = async knex => {
   await knex.schema.dropTable('titres_substances')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220819154128_supprime-frequences.js b/packages/api/src/knex/migrations-schema/20220819154128_supprime-frequences.ts
similarity index 76%
rename from packages/api/src/knex/migrations-schema/20220819154128_supprime-frequences.js
rename to packages/api/src/knex/migrations-schema/20220819154128_supprime-frequences.ts
index fa9825a01..78a893685 100644
--- a/packages/api/src/knex/migrations-schema/20220819154128_supprime-frequences.js
+++ b/packages/api/src/knex/migrations-schema/20220819154128_supprime-frequences.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('activites_types', function (table) {
     table.dropForeign('frequence_id', 'activitestypes_frequenceid_foreign')
   })
@@ -10,4 +11,4 @@ exports.up = async knex => {
   return knex.schema.dropTable('frequences')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220825083849_territoires-create.js b/packages/api/src/knex/migrations-schema/20220825083849_territoires-create.ts
similarity index 88%
rename from packages/api/src/knex/migrations-schema/20220825083849_territoires-create.js
rename to packages/api/src/knex/migrations-schema/20220825083849_territoires-create.ts
index cfda2830a..313a989bd 100644
--- a/packages/api/src/knex/migrations-schema/20220825083849_territoires-create.js
+++ b/packages/api/src/knex/migrations-schema/20220825083849_territoires-create.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.raw(
     'alter table communes ADD COLUMN geometry geometry(Multipolygon,4326)'
   )
@@ -28,4 +29,4 @@ exports.up = async knex => {
   })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220830095725_supprime-newsletter.js b/packages/api/src/knex/migrations-schema/20220830095725_supprime-newsletter.ts
similarity index 50%
rename from packages/api/src/knex/migrations-schema/20220830095725_supprime-newsletter.js
rename to packages/api/src/knex/migrations-schema/20220830095725_supprime-newsletter.ts
index 7561448a0..f8f5d065d 100644
--- a/packages/api/src/knex/migrations-schema/20220830095725_supprime-newsletter.js
+++ b/packages/api/src/knex/migrations-schema/20220830095725_supprime-newsletter.ts
@@ -1,6 +1,7 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema.alterTable('utilisateurs', table => {
     table.dropColumn('newsletter')
   })
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220901075840_demarches-statuts-delete.js b/packages/api/src/knex/migrations-schema/20220901075840_demarches-statuts-delete.ts
similarity index 61%
rename from packages/api/src/knex/migrations-schema/20220901075840_demarches-statuts-delete.js
rename to packages/api/src/knex/migrations-schema/20220901075840_demarches-statuts-delete.ts
index c1080f2e4..ac722fa20 100644
--- a/packages/api/src/knex/migrations-schema/20220901075840_demarches-statuts-delete.js
+++ b/packages/api/src/knex/migrations-schema/20220901075840_demarches-statuts-delete.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('titresDemarches', function (table) {
     table.dropForeign('statutId')
   })
@@ -6,4 +7,4 @@ exports.up = async knex => {
   return knex.schema.dropTable('demarchesStatuts')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220905073826_deplace-donnees-postgis-hors-objection.js b/packages/api/src/knex/migrations-schema/20220905073826_deplace-donnees-postgis-hors-objection.ts
similarity index 90%
rename from packages/api/src/knex/migrations-schema/20220905073826_deplace-donnees-postgis-hors-objection.js
rename to packages/api/src/knex/migrations-schema/20220905073826_deplace-donnees-postgis-hors-objection.ts
index 9c24ccd8f..bab26cdfa 100644
--- a/packages/api/src/knex/migrations-schema/20220905073826_deplace-donnees-postgis-hors-objection.js
+++ b/packages/api/src/knex/migrations-schema/20220905073826_deplace-donnees-postgis-hors-objection.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.raw('alter table communes DROP COLUMN geometry')
   await knex.raw('alter table forets DROP COLUMN geometry')
   await knex.raw('alter table sdom_zones DROP COLUMN geometry')
@@ -33,4 +34,4 @@ exports.up = async knex => {
     'CREATE INDEX index_geo_sdom_zones on sdom_zones_postgis using spgist (geometry)'
   )
 }
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220906125338_les-substances-dune-etapes-ne-sont-jamais-nul.js b/packages/api/src/knex/migrations-schema/20220906125338_les-substances-dune-etapes-ne-sont-jamais-nul.ts
similarity index 74%
rename from packages/api/src/knex/migrations-schema/20220906125338_les-substances-dune-etapes-ne-sont-jamais-nul.js
rename to packages/api/src/knex/migrations-schema/20220906125338_les-substances-dune-etapes-ne-sont-jamais-nul.ts
index a487826b1..005627f2a 100644
--- a/packages/api/src/knex/migrations-schema/20220906125338_les-substances-dune-etapes-ne-sont-jamais-nul.js
+++ b/packages/api/src/knex/migrations-schema/20220906125338_les-substances-dune-etapes-ne-sont-jamais-nul.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.raw(
     "update titres_etapes set substances='[]'::jsonb where substances is null"
   )
@@ -10,4 +11,4 @@ exports.up = async knex => {
   )
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220907070928_supprime-titres-statuts.js b/packages/api/src/knex/migrations-schema/20220907070928_supprime-titres-statuts.ts
similarity index 87%
rename from packages/api/src/knex/migrations-schema/20220907070928_supprime-titres-statuts.js
rename to packages/api/src/knex/migrations-schema/20220907070928_supprime-titres-statuts.ts
index 74ace245f..7b30f3430 100644
--- a/packages/api/src/knex/migrations-schema/20220907070928_supprime-titres-statuts.js
+++ b/packages/api/src/knex/migrations-schema/20220907070928_supprime-titres-statuts.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable(
     'administrations__titres_types__titres_statuts',
     function (table) {
@@ -25,4 +26,4 @@ exports.up = async knex => {
   await knex.schema.dropTable('titres_statuts')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20220930084703_supprime-phases-statuts.js b/packages/api/src/knex/migrations-schema/20220930084703_supprime-phases-statuts.ts
similarity index 75%
rename from packages/api/src/knex/migrations-schema/20220930084703_supprime-phases-statuts.js
rename to packages/api/src/knex/migrations-schema/20220930084703_supprime-phases-statuts.ts
index 675c9db0d..5ffd34474 100644
--- a/packages/api/src/knex/migrations-schema/20220930084703_supprime-phases-statuts.js
+++ b/packages/api/src/knex/migrations-schema/20220930084703_supprime-phases-statuts.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('titres_phases', function (table) {
     table.dropForeign('statut_id', 'titresphases_statutid_foreign')
   })
@@ -9,4 +10,4 @@ exports.up = async knex => {
   await knex.schema.dropTable('phases_statuts')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221004061133_globales-delete.js b/packages/api/src/knex/migrations-schema/20221004061133_globales-delete.js
deleted file mode 100644
index 799cb938d..000000000
--- a/packages/api/src/knex/migrations-schema/20221004061133_globales-delete.js
+++ /dev/null
@@ -1,3 +0,0 @@
-exports.up = knex => knex.schema.dropTable('globales')
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221004061133_globales-delete.ts b/packages/api/src/knex/migrations-schema/20221004061133_globales-delete.ts
new file mode 100644
index 000000000..3aea7884b
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20221004061133_globales-delete.ts
@@ -0,0 +1,4 @@
+import { Knex } from 'knex'
+export const up = (knex: Knex) => knex.schema.dropTable('globales')
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221004061444_references-delete.js b/packages/api/src/knex/migrations-schema/20221004061444_references-delete.ts
similarity index 93%
rename from packages/api/src/knex/migrations-schema/20221004061444_references-delete.js
rename to packages/api/src/knex/migrations-schema/20221004061444_references-delete.ts
index c1ae13f3e..adfd89a55 100644
--- a/packages/api/src/knex/migrations-schema/20221004061444_references-delete.js
+++ b/packages/api/src/knex/migrations-schema/20221004061444_references-delete.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('titresReferences', function (table) {
     table.dropForeign('type_id', 'titresreferences_typeid_foreign')
   })
@@ -46,4 +47,4 @@ exports.up = async knex => {
   await knex.raw('alter table titres alter column "references" set not null')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221012094400_utilisateur-qgis-token.js b/packages/api/src/knex/migrations-schema/20221012094400_utilisateur-qgis-token.ts
similarity index 53%
rename from packages/api/src/knex/migrations-schema/20221012094400_utilisateur-qgis-token.js
rename to packages/api/src/knex/migrations-schema/20221012094400_utilisateur-qgis-token.ts
index 74b1066a5..b39360622 100644
--- a/packages/api/src/knex/migrations-schema/20221012094400_utilisateur-qgis-token.js
+++ b/packages/api/src/knex/migrations-schema/20221012094400_utilisateur-qgis-token.ts
@@ -1,6 +1,7 @@
-exports.up = knex =>
+import { Knex } from 'knex'
+export const up = (knex: Knex) =>
   knex.schema.alterTable('utilisateurs', function (table) {
     table.string('qgis_token').index()
   })
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221012121906_add-facades-maritimes.js b/packages/api/src/knex/migrations-schema/20221012121906_add-facades-maritimes.ts
similarity index 90%
rename from packages/api/src/knex/migrations-schema/20221012121906_add-facades-maritimes.js
rename to packages/api/src/knex/migrations-schema/20221012121906_add-facades-maritimes.ts
index ea57ca3ec..562efdb27 100644
--- a/packages/api/src/knex/migrations-schema/20221012121906_add-facades-maritimes.js
+++ b/packages/api/src/knex/migrations-schema/20221012121906_add-facades-maritimes.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.createTable('secteurs_maritime', table => {
     table.integer('id').primary()
     table.string('nom')
@@ -34,4 +35,4 @@ exports.up = async knex => {
   })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221017122409_tde-static.js b/packages/api/src/knex/migrations-schema/20221017122409_tde-static.ts
similarity index 80%
rename from packages/api/src/knex/migrations-schema/20221017122409_tde-static.js
rename to packages/api/src/knex/migrations-schema/20221017122409_tde-static.ts
index 6499321c0..8148e45d0 100644
--- a/packages/api/src/knex/migrations-schema/20221017122409_tde-static.js
+++ b/packages/api/src/knex/migrations-schema/20221017122409_tde-static.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex('activites_types__documents_types')
     .where('document_type_id', 'rwp')
     .update({ documentTypeId: 'rgr' })
@@ -13,4 +14,4 @@ exports.up = async knex => {
   )
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221017132033_administrations-titres-types-delete.js b/packages/api/src/knex/migrations-schema/20221017132033_administrations-titres-types-delete.js
deleted file mode 100644
index f662381f0..000000000
--- a/packages/api/src/knex/migrations-schema/20221017132033_administrations-titres-types-delete.js
+++ /dev/null
@@ -1,3 +0,0 @@
-exports.up = async knex => knex.schema.dropTable('administrations__titresTypes')
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221017132033_administrations-titres-types-delete.ts b/packages/api/src/knex/migrations-schema/20221017132033_administrations-titres-types-delete.ts
new file mode 100644
index 000000000..595d8a801
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20221017132033_administrations-titres-types-delete.ts
@@ -0,0 +1,5 @@
+import { Knex } from 'knex'
+export const up = async (knex: Knex) =>
+  knex.schema.dropTable('administrations__titresTypes')
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221020141021_supprime-secteurs-maritimes.js b/packages/api/src/knex/migrations-schema/20221020141021_supprime-secteurs-maritimes.ts
similarity index 79%
rename from packages/api/src/knex/migrations-schema/20221020141021_supprime-secteurs-maritimes.js
rename to packages/api/src/knex/migrations-schema/20221020141021_supprime-secteurs-maritimes.ts
index 58d30228c..0d817ba8c 100644
--- a/packages/api/src/knex/migrations-schema/20221020141021_supprime-secteurs-maritimes.js
+++ b/packages/api/src/knex/migrations-schema/20221020141021_supprime-secteurs-maritimes.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('secteurs_maritime_postgis', function (table) {
     table.dropForeign('id', 'secteurs_maritime_postgis_id_fkey')
   })
@@ -10,4 +11,4 @@ exports.up = async knex => {
   })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221021121056_delete-titres-administrations.js b/packages/api/src/knex/migrations-schema/20221021121056_delete-titres-administrations.ts
similarity index 88%
rename from packages/api/src/knex/migrations-schema/20221021121056_delete-titres-administrations.js
rename to packages/api/src/knex/migrations-schema/20221021121056_delete-titres-administrations.ts
index fe98d8b2a..848e4cc68 100644
--- a/packages/api/src/knex/migrations-schema/20221021121056_delete-titres-administrations.js
+++ b/packages/api/src/knex/migrations-schema/20221021121056_delete-titres-administrations.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   await knex.schema.alterTable('titres_etapes', function (table) {
     table.jsonb('administrations_locales').index()
   })
@@ -23,4 +24,4 @@ exports.up = async knex => {
   return knex.schema.dropTable('titresAdministrations')
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221102162801_delete-titres-types-titres-statuts.js b/packages/api/src/knex/migrations-schema/20221102162801_delete-titres-types-titres-statuts.js
deleted file mode 100644
index a31f1e3b8..000000000
--- a/packages/api/src/knex/migrations-schema/20221102162801_delete-titres-types-titres-statuts.js
+++ /dev/null
@@ -1,5 +0,0 @@
-exports.up = async knex => {
-  await knex.schema.dropTable('titres_types__titres_statuts')
-}
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221102162801_delete-titres-types-titres-statuts.ts b/packages/api/src/knex/migrations-schema/20221102162801_delete-titres-types-titres-statuts.ts
new file mode 100644
index 000000000..80512ff09
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20221102162801_delete-titres-types-titres-statuts.ts
@@ -0,0 +1,6 @@
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
+  await knex.schema.dropTable('titres_types__titres_statuts')
+}
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221114135447_delete-useless-columns-etapes-types.js b/packages/api/src/knex/migrations-schema/20221114135447_delete-useless-columns-etapes-types.ts
similarity index 77%
rename from packages/api/src/knex/migrations-schema/20221114135447_delete-useless-columns-etapes-types.js
rename to packages/api/src/knex/migrations-schema/20221114135447_delete-useless-columns-etapes-types.ts
index b59c30ecb..55c23db3e 100644
--- a/packages/api/src/knex/migrations-schema/20221114135447_delete-useless-columns-etapes-types.js
+++ b/packages/api/src/knex/migrations-schema/20221114135447_delete-useless-columns-etapes-types.ts
@@ -1,4 +1,5 @@
-exports.up = async knex => {
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
   // colonnes qui servent à rien dans la table etapes_types :
   // - parent_id
   // - legal_ref
@@ -12,4 +13,4 @@ exports.up = async knex => {
   })
 }
 
-exports.down = () => ({})
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221116133048_delete-titres-administrations-gestionnaire.js b/packages/api/src/knex/migrations-schema/20221116133048_delete-titres-administrations-gestionnaire.js
deleted file mode 100644
index 26f37c211..000000000
--- a/packages/api/src/knex/migrations-schema/20221116133048_delete-titres-administrations-gestionnaire.js
+++ /dev/null
@@ -1,5 +0,0 @@
-exports.up = async knex => {
-  return knex.schema.dropTable('titres_administrations_gestionnaires')
-}
-
-exports.down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/20221116133048_delete-titres-administrations-gestionnaire.ts b/packages/api/src/knex/migrations-schema/20221116133048_delete-titres-administrations-gestionnaire.ts
new file mode 100644
index 000000000..06e6dce9b
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/20221116133048_delete-titres-administrations-gestionnaire.ts
@@ -0,0 +1,6 @@
+import { Knex } from 'knex'
+export const up = async (knex: Knex) => {
+  return knex.schema.dropTable('titres_administrations_gestionnaires')
+}
+
+export const down = () => ({})
diff --git a/packages/api/src/knex/migrations-schema/toto.sh b/packages/api/src/knex/migrations-schema/toto.sh
new file mode 100755
index 000000000..6fd95dcc9
--- /dev/null
+++ b/packages/api/src/knex/migrations-schema/toto.sh
@@ -0,0 +1,3 @@
+import {Knex} from "knex" for file in *.js; do 
+    mv -- "$file" "${file%.js}.ts"
+done
diff --git a/packages/api/src/knex/seeding.js b/packages/api/src/knex/seeding.js
deleted file mode 100644
index 75ee72791..000000000
--- a/packages/api/src/knex/seeding.js
+++ /dev/null
@@ -1,31 +0,0 @@
-const INSERT_SIZE = 3000
-
-module.exports = func => knex => {
-  const del = table => {
-    console.info(`suppression des données de la table "${table}"`)
-
-    return knex(table).del()
-  }
-
-  const insert = (table, data) => {
-    console.info(
-      `insertion des données de la table "${table}", (${data.length} élément(s))`
-    )
-
-    const arrs = []
-    for (let i = 0; i < data.length; i += INSERT_SIZE) {
-      arrs.push(data.slice(i, i + INSERT_SIZE))
-    }
-
-    return Promise.all(arrs.map(arr => knex(table).insert(arr))).catch(e => {
-      // si le message d'erreur est trop long
-      // réduit la taille du message à 100 caractères
-      const problem = e.message.split(' - ').pop()
-      const message = `Table "${table}" - ${problem} - ${e.detail}`
-
-      throw new Error(message)
-    })
-  }
-
-  return func({ del, insert })
-}
diff --git a/packages/api/src/knex/seeding.ts b/packages/api/src/knex/seeding.ts
new file mode 100644
index 000000000..37e33eba7
--- /dev/null
+++ b/packages/api/src/knex/seeding.ts
@@ -0,0 +1,39 @@
+import { Knex } from 'knex'
+
+const INSERT_SIZE = 3000
+
+export default (
+    func: (params: {
+      del: (table: Knex.TableDescriptor) => any
+      insert: (table: Knex.TableDescriptor, data: any[]) => any
+    }) => void
+  ) =>
+  (knex: Knex) => {
+    const del = (table: Knex.TableDescriptor) => {
+      console.info(`suppression des données de la table "${table}"`)
+
+      return knex(table).del()
+    }
+
+    const insert = (table: Knex.TableDescriptor, data: any[]) => {
+      console.info(
+        `insertion des données de la table "${table}", (${data.length} élément(s))`
+      )
+
+      const arrs = []
+      for (let i = 0; i < data.length; i += INSERT_SIZE) {
+        arrs.push(data.slice(i, i + INSERT_SIZE))
+      }
+
+      return Promise.all(arrs.map(arr => knex(table).insert(arr))).catch(e => {
+        // si le message d'erreur est trop long
+        // réduit la taille du message à 100 caractères
+        const problem = e.message.split(' - ').pop()
+        const message = `Table "${table}" - ${problem} - ${e.detail}`
+
+        throw new Error(message)
+      })
+    }
+
+    return func({ del, insert })
+  }
diff --git a/packages/api/src/knex/seeds/03-metas.js b/packages/api/src/knex/seeds/03-metas.ts
similarity index 89%
rename from packages/api/src/knex/seeds/03-metas.js
rename to packages/api/src/knex/seeds/03-metas.ts
index d5421f3ef..4e186b482 100644
--- a/packages/api/src/knex/seeds/03-metas.js
+++ b/packages/api/src/knex/seeds/03-metas.ts
@@ -1,6 +1,7 @@
-const seeding = require('../seeding')
-
+import seeding from '../seeding.js'
 /* eslint-disable camelcase */
+import { createRequire } from 'node:module'
+const require = createRequire(import.meta.url)
 
 const domaines = require('../../../sources/domaines.json')
 const titresTypesTypes = require('../../../sources/titres-types-types.json')
@@ -13,7 +14,7 @@ const etapesTypes_justificatifsTypes = require('../../../sources/etapes-types--j
 const entreprises_documentsTypes = require('../../../sources/entreprises--documents-types.json')
 const documentsTypes = require('../../../sources/documents-types.json')
 
-const seed = (module.exports = seeding(async ({ insert }) => {
+export const seed = seeding(async ({ insert }) => {
   await Promise.all([
     insert('domaines', domaines),
     insert('titresTypesTypes', titresTypesTypes),
@@ -31,8 +32,4 @@ const seed = (module.exports = seeding(async ({ insert }) => {
     insert('entreprises__documents_types', entreprises_documentsTypes),
     insert('etapesTypes__justificatifsTypes', etapesTypes_justificatifsTypes)
   ])
-}))
-
-module.exports = seed
-
-module.exports.seed = seed
+})
diff --git a/packages/api/src/knex/seeds/06-metas-activites.js b/packages/api/src/knex/seeds/06-metas-activites.ts
similarity index 75%
rename from packages/api/src/knex/seeds/06-metas-activites.js
rename to packages/api/src/knex/seeds/06-metas-activites.ts
index 462ae7823..08afbc161 100644
--- a/packages/api/src/knex/seeds/06-metas-activites.js
+++ b/packages/api/src/knex/seeds/06-metas-activites.ts
@@ -1,22 +1,18 @@
-const seeding = require('../seeding')
+import seeding from '../seeding.js'
+/* eslint-disable camelcase */
+import { createRequire } from 'node:module'
+const require = createRequire(import.meta.url)
 
 const activitesStatuts = require('../../../sources/activites-statuts.json')
 const activitesTypes = require('../../../sources/activites-types.json')
-// eslint-disable-next-line camelcase
 const activitesTypes__titresTypes = require('../../../sources/activites-types--titres-types.json')
-// eslint-disable-next-line camelcase
 const activitesTypes_pays = require('../../../sources/activites-types--pays.json')
-// eslint-disable-next-line camelcase
 const activitesTypes_documentsTypes = require('../../../sources/activites-types--documents-types.json')
 
-const seed = seeding(async ({ insert }) => {
+export const seed = seeding(async ({ insert }) => {
   await insert('activitesStatuts', activitesStatuts)
   await insert('activitesTypes', activitesTypes)
   await insert('activitesTypes__titresTypes', activitesTypes__titresTypes)
   await insert('activitesTypes__pays', activitesTypes_pays)
   await insert('activitesTypes__documentsTypes', activitesTypes_documentsTypes)
 })
-
-module.exports = seed
-
-module.exports.seed = seed
diff --git a/packages/api/src/knex/seeds/07-administrations.js b/packages/api/src/knex/seeds/07-administrations.js
deleted file mode 100644
index c660fdc9c..000000000
--- a/packages/api/src/knex/seeds/07-administrations.js
+++ /dev/null
@@ -1,145 +0,0 @@
-const seeding = require('../seeding')
-
-// TODO 2022-11-17 USE THIS FROM THE COMMON, CANNOT BECAUSE KNEX MODULE ESM
-const ADMINISTRATION_IDS = {
-  'GENDARMERIE NATIONALE - GUYANE': 'aut-97300-01',
-  'MRAE GUYANE': 'aut-mrae-guyane-01',
-  'DEAL - GUADELOUPE': 'dea-guadeloupe-01',
-  'DGTM - GUYANE': 'dea-guyane-01',
-  'DEAL - MARTINIQUE': 'dea-martinique-01',
-  'DEAL - MAYOTTE': 'dea-mayotte-01',
-  'DEAL - LA RÉUNION': 'dea-reunion-01',
-  'DREAL - AUVERGNE-RHÔNE-ALPES - SIÈGE DE LYON': 'dre-aura-01',
-  'DREAL - BOURGOGNE-FRANCHE-COMTÉ - SIÈGE DE BESANÇON': 'dre-bfc-01',
-  'DREAL - BRETAGNE': 'dre-bretagne-01',
-  'DREAL - CENTRE-VAL-DE-LOIRE': 'dre-centre-val-de-loire-01',
-  'DREAL - CORSE': 'dre-corse-01',
-  'DREAL - GRAND EST - SIÈGE DE METZ': 'dre-grand-est-01',
-  'DREAL - HAUTS-DE-FRANCE - SIÈGE DE LILLE': 'dre-hauts-de-france-01',
-  'DRIEE - ÎLE-DE-FRANCE': 'dre-ile-de-france-01',
-  'DREAL - NORMANDIE - SIÈGE DE ROUEN': 'dre-normandie-01',
-  'DREAL - NOUVELLE-AQUITAINE - SIÈGE DE POITIERS': 'dre-nouvelle-aquitaine-01',
-  'DREAL - OCCITANIE - SIÈGE DE TOULOUSE': 'dre-occitanie-01',
-  "DREAL - PROVENCE-ALPES-CÔTE-D'AZUR": 'dre-paca-01',
-  'DREAL - PAYS DE LA LOIRE': 'dre-pays-de-la-loire-01',
-  "DAJ - MINISTÈRE DE L'ECONOMIE, DES FINANCES ET DE LA RELANCE": 'min-dajb-01',
-  'DGCL/SDFLAE/FL1': 'min-mctrct-dgcl-01',
-  'DGALN/DEB/EARM2': 'min-mtes-dgaln-01',
-  'DGEC/DE/SD2/2A': 'min-mtes-dgec-01',
-  'DGPR/SRT/SDRCP/BSSS': 'min-mtes-dgpr-01',
-  BRGM: 'ope-brgm-01',
-  'BRGM - PROJET ZERCOA': 'ope-brgm-02',
-  CACEM: 'ope-cacem-01',
-  'OFFICE NATIONAL DES FORÊTS': 'ope-onf-973-01',
-  'PÔLE TECHNIQUE MINIER DE GUYANE': 'ope-ptmg-973-01',
-  'PRÉFECTURE - AIN': 'pre-01053-01',
-  'PRÉFECTURE - AISNE': 'pre-02408-01',
-  'PRÉFECTURE - ALLIER': 'pre-03190-01',
-  'PRÉFECTURE - ALPES-DE-HAUTE-PROVENCE': 'pre-04070-01',
-  'PRÉFECTURE - HAUTES-ALPES': 'pre-05061-01',
-  'PRÉFECTURE - ALPES-MARITIMES': 'pre-06088-01',
-  'PRÉFECTURE - ARDÈCHE': 'pre-07186-01',
-  'PRÉFECTURE - ARDENNES': 'pre-08105-01',
-  'PRÉFECTURE - ARIÈGE': 'pre-09122-01',
-  'PRÉFECTURE - AUBE': 'pre-10387-01',
-  'PRÉFECTURE - AUDE': 'pre-11069-01',
-  'PRÉFECTURE - AVEYRON': 'pre-12202-01',
-  'PRÉFECTURE - BOUCHES-DU-RHÔNE': 'pre-13203-01',
-  'PRÉFECTURE - CALVADOS': 'pre-14118-01',
-  'PRÉFECTURE - CANTAL': 'pre-15014-01',
-  'PRÉFECTURE - CHARENTE': 'pre-16015-01',
-  'PRÉFECTURE - CHARENTE-MARITIME': 'pre-17300-01',
-  'PRÉFECTURE - CHER': 'pre-18033-01',
-  'PRÉFECTURE - CORRÈZE': 'pre-19272-01',
-  "PRÉFECTURE - CÔTE-D'OR": 'pre-21231-01',
-  "PRÉFECTURE - CÔTES-D'ARMOR": 'pre-22278-01',
-  'PRÉFECTURE - CREUSE': 'pre-23096-01',
-  'PRÉFECTURE - DORDOGNE': 'pre-24322-01',
-  'PRÉFECTURE - DOUBS': 'pre-25056-01',
-  'PRÉFECTURE - DRÔME': 'pre-26362-01',
-  'PRÉFECTURE - EURE': 'pre-27229-01',
-  'PRÉFECTURE - EURE-ET-LOIR': 'pre-28085-01',
-  'PRÉFECTURE - FINISTÈRE': 'pre-29232-01',
-  'PRÉFECTURE - CORSE-DU-SUD': 'pre-2A004-01',
-  'PRÉFECTURE - HAUTE-CORSE': 'pre-2B033-01',
-  'PRÉFECTURE - GARD': 'pre-30189-01',
-  'PRÉFECTURE - HAUTE-GARONNE': 'pre-31555-01',
-  'PRÉFECTURE - GERS': 'pre-32013-01',
-  'PRÉFECTURE - GIRONDE': 'pre-33063-01',
-  'PRÉFECTURE - HÉRAULT': 'pre-34172-01',
-  'PRÉFECTURE - ILLE-ET-VILAINE': 'pre-35238-01',
-  'PRÉFECTURE - INDRE': 'pre-36044-01',
-  'PRÉFECTURE - INDRE-ET-LOIRE': 'pre-37261-01',
-  'PRÉFECTURE - ISÈRE': 'pre-38185-01',
-  'PRÉFECTURE - JURA': 'pre-39300-01',
-  'PRÉFECTURE - LANDES': 'pre-40192-01',
-  'PRÉFECTURE - LOIR-ET-CHER': 'pre-41018-01',
-  'PRÉFECTURE - LOIRE': 'pre-42218-01',
-  'PRÉFECTURE - HAUTE-LOIRE': 'pre-43157-01',
-  'PRÉFECTURE - LOIRE-ATLANTIQUE': 'pre-44109-01',
-  'PRÉFECTURE - LOIRET': 'pre-45234-01',
-  'PRÉFECTURE - LOT': 'pre-46042-01',
-  'PRÉFECTURE - LOT-ET-GARONNE': 'pre-47001-01',
-  'PRÉFECTURE - LOZÈRE': 'pre-48095-01',
-  'PRÉFECTURE - MAINE-ET-LOIRE': 'pre-49007-01',
-  'PRÉFECTURE - MANCHE': 'pre-50502-01',
-  'PRÉFECTURE - MARNE': 'pre-51108-01',
-  'PRÉFECTURE - HAUTE-MARNE': 'pre-52121-01',
-  'PRÉFECTURE - MAYENNE': 'pre-53130-01',
-  'PRÉFECTURE - MEURTHE-ET-MOSELLE': 'pre-54395-01',
-  'PRÉFECTURE - MEUSE': 'pre-55029-01',
-  'PRÉFECTURE - MORBIHAN': 'pre-56260-01',
-  'PRÉFECTURE - MOSELLE': 'pre-57463-01',
-  'PRÉFECTURE - NIÈVRE': 'pre-58194-01',
-  'PRÉFECTURE - NORD': 'pre-59350-01',
-  'PRÉFECTURE - OISE': 'pre-60057-01',
-  'PRÉFECTURE - ORNE': 'pre-61001-01',
-  'PRÉFECTURE - PAS-DE-CALAIS': 'pre-62041-01',
-  'PRÉFECTURE - PUY-DE-DÔME': 'pre-63113-01',
-  'PRÉFECTURE - PYRÉNÉES-ATLANTIQUES': 'pre-64445-01',
-  'PRÉFECTURE - HAUTES-PYRÉNÉES': 'pre-65440-01',
-  'PRÉFECTURE - PYRÉNÉES-ORIENTALES': 'pre-66136-01',
-  'PRÉFECTURE - BAS-RHIN': 'pre-67482-01',
-  'PRÉFECTURE - HAUT-RHIN': 'pre-68066-01',
-  'PRÉFECTURE - RHÔNE': 'pre-69383-01',
-  'PRÉFECTURE - HAUTE-SAÔNE': 'pre-70550-01',
-  'PRÉFECTURE - SAÔNE-ET-LOIRE': 'pre-71270-01',
-  'PRÉFECTURE - SARTHE': 'pre-72181-01',
-  'PRÉFECTURE - SAVOIE': 'pre-73065-01',
-  'PRÉFECTURE - HAUTE-SAVOIE': 'pre-74010-01',
-  'PRÉFECTURE - ÎLE-DE-FRANCE': 'pre-75104-01',
-  'PRÉFECTURE - SEINE-MARITIME': 'pre-76540-01',
-  'PRÉFECTURE - SEINE-ET-MARNE': 'pre-77288-01',
-  'PRÉFECTURE - YVELINES': 'pre-78646-01',
-  'PRÉFECTURE - DEUX-SÈVRES': 'pre-79191-01',
-  'PRÉFECTURE - SOMME': 'pre-80021-01',
-  'PRÉFECTURE - TARN': 'pre-81004-01',
-  'PRÉFECTURE - TARN-ET-GARONNE': 'pre-82121-01',
-  'PRÉFECTURE - VAR': 'pre-83137-01',
-  'PRÉFECTURE - VAUCLUSE': 'pre-84007-01',
-  'PRÉFECTURE - VENDÉE': 'pre-85191-01',
-  'PRÉFECTURE - VIENNE': 'pre-86194-01',
-  'PRÉFECTURE - HAUTE-VIENNE': 'pre-87085-01',
-  'PRÉFECTURE - VOSGES': 'pre-88160-01',
-  'PRÉFECTURE - YONNE': 'pre-89024-01',
-  'PRÉFECTURE - TERRITOIRE DE BELFORT': 'pre-90010-01',
-  'PRÉFECTURE - ESSONNE': 'pre-91228-01',
-  'PRÉFECTURE - HAUTS-DE-SEINE': 'pre-92050-01',
-  'PRÉFECTURE - SEINE-SAINT-DENIS': 'pre-93008-01',
-  'PRÉFECTURE - VAL-DE-MARNE': 'pre-94028-01',
-  "PRÉFECTURE - VAL-D'OISE": 'pre-95127-01',
-  'PRÉFECTURE - GUADELOUPE': 'pre-97105-01',
-  'PRÉFECTURE - MARTINIQUE': 'pre-97209-01',
-  'PRÉFECTURE - GUYANE': 'pre-97302-01',
-  'PRÉFECTURE - RÉUNION': 'pre-97411-01',
-  'PRÉFECTURE - MAYOTTE': 'pre-97611-01'
-}
-
-const seed = seeding(async ({ insert }) => {
-  const administrations = Object.values(ADMINISTRATION_IDS).map(id => ({ id }))
-  await insert('administrations', administrations)
-})
-
-module.exports = seed
-
-module.exports.seed = seed
diff --git a/packages/api/src/knex/seeds/07-administrations.ts b/packages/api/src/knex/seeds/07-administrations.ts
new file mode 100644
index 000000000..9ee870e1d
--- /dev/null
+++ b/packages/api/src/knex/seeds/07-administrations.ts
@@ -0,0 +1,7 @@
+import { ADMINISTRATION_IDS } from 'camino-common/src/static/administrations.js'
+import seeding from '../seeding.js'
+
+export const seed = seeding(async ({ insert }) => {
+  const administrations = Object.values(ADMINISTRATION_IDS).map(id => ({ id }))
+  await insert('administrations', administrations)
+})
diff --git a/packages/api/src/knex/seeds/08-autorisations.js b/packages/api/src/knex/seeds/08-autorisations.ts
similarity index 74%
rename from packages/api/src/knex/seeds/08-autorisations.js
rename to packages/api/src/knex/seeds/08-autorisations.ts
index 29907077a..9fd81ee83 100644
--- a/packages/api/src/knex/seeds/08-autorisations.js
+++ b/packages/api/src/knex/seeds/08-autorisations.ts
@@ -1,13 +1,14 @@
-const seeding = require('../seeding')
+import seeding from '../seeding.js'
+/* eslint-disable camelcase */
+
+import { createRequire } from 'node:module'
+const require = createRequire(import.meta.url)
 
-// eslint-disable-next-line camelcase
 const administrations_activitesTypes = require('../../../sources/administrations--activites-types.json')
-// eslint-disable-next-line camelcase
 const administrations__titresTypes__titresStatuts = require('../../../sources/administrations--titres-types--titres-statuts.json')
-// eslint-disable-next-line camelcase
 const administrations__titresTypes__etapesTypes = require('../../../sources/administrations--titres-types--etapes-types.json')
 
-const seed = seeding(async ({ insert }) => {
+export const seed = seeding(async ({ insert }) => {
   await Promise.all([
     insert(
       'administrations__titresTypes__titresStatuts',
@@ -20,7 +21,3 @@ const seed = seeding(async ({ insert }) => {
     insert('administrations__activitesTypes', administrations_activitesTypes)
   ])
 })
-
-module.exports = seed
-
-module.exports.seed = seed
diff --git a/packages/api/src/knex/user-add.ts b/packages/api/src/knex/user-add.ts
index 6320bb1cf..53568dd19 100644
--- a/packages/api/src/knex/user-add.ts
+++ b/packages/api/src/knex/user-add.ts
@@ -1,8 +1,8 @@
 import { Knex } from 'knex'
 import emailRegex from 'email-regex'
 import bcrypt from 'bcryptjs'
-import { IUtilisateur } from '../types'
-import { idGenerate } from '../database/models/_format/id-create'
+import { IUtilisateur } from '../types.js'
+import { idGenerate } from '../database/models/_format/id-create.js'
 
 export const userAdd = async (
   knex: Knex,
diff --git a/packages/api/src/monthly_tasks.ts b/packages/api/src/monthly_tasks.ts
index c9dad40ce..28ae0c892 100644
--- a/packages/api/src/monthly_tasks.ts
+++ b/packages/api/src/monthly_tasks.ts
@@ -1,9 +1,9 @@
 import './init'
-import { consoleOverride } from './config/logger'
-import { mailjetSend } from './tools/api-mailjet/emails'
+import { consoleOverride } from './config/logger.js'
+import { mailjetSend } from './tools/api-mailjet/emails.js'
 import { readFileSync, writeFileSync, createWriteStream } from 'fs'
 import * as Console from 'console'
-import { monthly } from './business/monthly'
+import { monthly } from './business/monthly.js'
 
 const logFile = '/tmp/monthly.log'
 
diff --git a/packages/api/src/scripts/administrations-update.ts b/packages/api/src/scripts/administrations-update.ts
index f394f2555..3f0887855 100644
--- a/packages/api/src/scripts/administrations-update.ts
+++ b/packages/api/src/scripts/administrations-update.ts
@@ -1,8 +1,8 @@
 import '../init'
 
-import { organismesDepartementsGet } from '../tools/api-administrations'
-import { Administrations } from 'camino-common/src/static/administrations'
-import { DepartementId } from 'camino-common/src/static/departement'
+import { organismesDepartementsGet } from '../tools/api-administrations/index.js'
+import { Administrations } from 'camino-common/src/static/administrations.js'
+import { DepartementId } from 'camino-common/src/static/departement.js'
 import { readFileSync, writeFileSync } from 'fs'
 
 const administrationsUpdate = async () => {
diff --git a/packages/api/src/scripts/daily.ts b/packages/api/src/scripts/daily.ts
index 98383bba7..ada080687 100644
--- a/packages/api/src/scripts/daily.ts
+++ b/packages/api/src/scripts/daily.ts
@@ -1,6 +1,6 @@
 import '../init'
 
-import daily from '../business/daily'
+import daily from '../business/daily.js'
 
 daily()
   .then(() => {
diff --git a/packages/api/src/scripts/database-to-json-export.ts b/packages/api/src/scripts/database-to-json-export.ts
index ef419a93b..3cc33e949 100644
--- a/packages/api/src/scripts/database-to-json-export.ts
+++ b/packages/api/src/scripts/database-to-json-export.ts
@@ -1,6 +1,6 @@
 import '../init'
 
-import { databaseToJsonExport } from '../tools/database-to-json/index'
+import { databaseToJsonExport } from '../tools/database-to-json/index.js'
 
 databaseToJsonExport()
   .then(() => {
diff --git a/packages/api/src/scripts/demarches-definitions-check.ts b/packages/api/src/scripts/demarches-definitions-check.ts
index 231ac8ca4..a6e1425b0 100644
--- a/packages/api/src/scripts/demarches-definitions-check.ts
+++ b/packages/api/src/scripts/demarches-definitions-check.ts
@@ -1,5 +1,5 @@
 import '../init'
-import demarchesDefinitionsCheck from '../tools/demarches/definitions-check'
+import demarchesDefinitionsCheck from '../tools/demarches/definitions-check.js'
 
 demarchesDefinitionsCheck()
   .then(() => {
diff --git a/packages/api/src/scripts/demarches-etape-statut-check.ts b/packages/api/src/scripts/demarches-etape-statut-check.ts
index ecb566065..465128665 100644
--- a/packages/api/src/scripts/demarches-etape-statut-check.ts
+++ b/packages/api/src/scripts/demarches-etape-statut-check.ts
@@ -1,5 +1,5 @@
 import '../init'
-import { etapeStatutCheck } from '../tools/demarches/etape-statut-check'
+import { etapeStatutCheck } from '../tools/demarches/etape-statut-check.js'
 
 etapeStatutCheck()
   .then(() => {
diff --git a/packages/api/src/scripts/demarches-tde-check.ts b/packages/api/src/scripts/demarches-tde-check.ts
index 8a6db8320..a6e04c3cc 100644
--- a/packages/api/src/scripts/demarches-tde-check.ts
+++ b/packages/api/src/scripts/demarches-tde-check.ts
@@ -1,5 +1,5 @@
 import '../init'
-import { titreTypeDemarcheTypeEtapeTypeCheck } from '../tools/demarches/tde-check'
+import { titreTypeDemarcheTypeEtapeTypeCheck } from '../tools/demarches/tde-check.js'
 
 titreTypeDemarcheTypeEtapeTypeCheck()
   .then(() => {
diff --git a/packages/api/src/scripts/documents-check.ts b/packages/api/src/scripts/documents-check.ts
index b99a262a3..428fad280 100644
--- a/packages/api/src/scripts/documents-check.ts
+++ b/packages/api/src/scripts/documents-check.ts
@@ -1,5 +1,5 @@
 import '../init'
-import documentsCheck from '../tools/documents/check'
+import documentsCheck from '../tools/documents/check.js'
 
 documentsCheck()
   .then(() => {
diff --git a/packages/api/src/scripts/documents-clean.ts b/packages/api/src/scripts/documents-clean.ts
index 9caa53b80..f5532f674 100644
--- a/packages/api/src/scripts/documents-clean.ts
+++ b/packages/api/src/scripts/documents-clean.ts
@@ -1,5 +1,5 @@
 import '../init'
-import { documentsClean } from '../tools/documents/clean'
+import { documentsClean } from '../tools/documents/clean.js'
 
 documentsClean()
   .then(() => {
diff --git a/packages/api/src/scripts/entreprises-guyane.ts b/packages/api/src/scripts/entreprises-guyane.ts
index d52e664d3..d630b52ea 100644
--- a/packages/api/src/scripts/entreprises-guyane.ts
+++ b/packages/api/src/scripts/entreprises-guyane.ts
@@ -1,5 +1,5 @@
 import '../init'
-import { subscribeUsersToGuyaneExploitants } from '../business/entreprises-guyane'
+import { subscribeUsersToGuyaneExploitants } from '../business/entreprises-guyane.js'
 
 // Retourne tous les utilisateurs 'entreprise' et 'bureau d'études' associés à des entreprises de Guyane
 subscribeUsersToGuyaneExploitants()
diff --git a/packages/api/src/scripts/matrices.ts b/packages/api/src/scripts/matrices.ts
index 01bd4c825..2a983e68d 100644
--- a/packages/api/src/scripts/matrices.ts
+++ b/packages/api/src/scripts/matrices.ts
@@ -1,4 +1,4 @@
-import { matrices } from '../business/matrices'
+import { matrices } from '../business/matrices.js'
 
 matrices(process.env.ANNEE ? Number.parseInt(process.env.ANNEE, 10) : 2021)
   .then(() => {
diff --git a/packages/api/src/scripts/monthly.ts b/packages/api/src/scripts/monthly.ts
index 421ba3161..2378c0dc5 100644
--- a/packages/api/src/scripts/monthly.ts
+++ b/packages/api/src/scripts/monthly.ts
@@ -1,5 +1,5 @@
 import '../init'
-import { monthly } from '../business/monthly'
+import { monthly } from '../business/monthly.js'
 
 monthly()
   .then(() => {
diff --git a/packages/api/src/scripts/territoires-update.ts b/packages/api/src/scripts/territoires-update.ts
index 4a72bd633..fcf6adcf3 100644
--- a/packages/api/src/scripts/territoires-update.ts
+++ b/packages/api/src/scripts/territoires-update.ts
@@ -1,4 +1,4 @@
-import { updateTerritoires } from '../tools/territoires-update'
+import { updateTerritoires } from '../tools/territoires-update.js'
 
 updateTerritoires()
   .then(() => process.exit(0))
diff --git a/packages/api/src/server/auth-basic.ts b/packages/api/src/server/auth-basic.ts
index 14d0a0c0d..7816a1d56 100644
--- a/packages/api/src/server/auth-basic.ts
+++ b/packages/api/src/server/auth-basic.ts
@@ -2,8 +2,8 @@ import express from 'express'
 import basicAuth from 'basic-auth'
 import bcrypt from 'bcryptjs'
 
-import { emailCheck } from '../tools/email-check'
-import { userByEmailGet } from '../database/queries/utilisateurs'
+import { emailCheck } from '../tools/email-check.js'
+import { userByEmailGet } from '../database/queries/utilisateurs.js'
 
 const userCredentialsCheck = async (email: string, motDePasse: string) => {
   email = email.toLowerCase()
diff --git a/packages/api/src/server/auth-jwt.ts b/packages/api/src/server/auth-jwt.ts
index b0cfd7c6c..ff26a8c7c 100644
--- a/packages/api/src/server/auth-jwt.ts
+++ b/packages/api/src/server/auth-jwt.ts
@@ -1,12 +1,12 @@
 import express from 'express'
 import expressJwt from 'express-jwt'
 import jwt from 'jsonwebtoken'
-import { userByRefreshTokenGet } from '../database/queries/utilisateurs'
+import { userByRefreshTokenGet } from '../database/queries/utilisateurs.js'
 import {
   accessTokenGet,
   cookieSet,
   userTokensDelete
-} from '../api/graphql/resolvers/utilisateurs'
+} from '../api/graphql/resolvers/utilisateurs.js'
 
 const authJwt = expressJwt({
   credentialsRequired: false,
diff --git a/packages/api/src/server/graphql.ts b/packages/api/src/server/graphql.ts
index fdc3fd6f7..d604cf937 100644
--- a/packages/api/src/server/graphql.ts
+++ b/packages/api/src/server/graphql.ts
@@ -1,8 +1,8 @@
 import { graphqlHTTP } from 'express-graphql'
 import http from 'http'
 
-import rootValue from '../api/graphql/resolvers'
-import schema from '../api/graphql/schemas'
+import rootValue from '../api/graphql/resolvers.js'
+import schema from '../api/graphql/schemas.js'
 
 interface IAuthRequestHttp extends http.IncomingMessage {
   user?: {
diff --git a/packages/api/src/server/rest.ts b/packages/api/src/server/rest.ts
index add8b95de..192b3d8cf 100644
--- a/packages/api/src/server/rest.ts
+++ b/packages/api/src/server/rest.ts
@@ -1,30 +1,40 @@
-import { IFormat, Index, IUser } from '../types'
+import { IFormat, Index, IUser } from '../types.js'
 
 import express from 'express'
 import { join } from 'path'
 
-import { titre, titres, demarches, activites, entreprises } from '../api/rest'
-import { etapeFichier, etapeTelecharger, fichier } from '../api/rest/fichiers'
+import {
+  titre,
+  titres,
+  demarches,
+  activites,
+  entreprises
+} from '../api/rest/index.js'
+import {
+  etapeFichier,
+  etapeTelecharger,
+  fichier
+} from '../api/rest/fichiers.js'
 import {
   getTitreLiaisons,
   postTitreLiaisons,
   titresDREAL,
   titresONF,
   titresPTMG
-} from '../api/rest/titres'
-import { fiscalite } from '../api/rest/entreprises'
+} from '../api/rest/titres.js'
+import { fiscalite } from '../api/rest/entreprises.js'
 import {
   generateQgisToken,
   isSubscribedToNewsletter,
   manageNewsletterSubscription,
   utilisateurs
-} from '../api/rest/utilisateurs'
+} from '../api/rest/utilisateurs.js'
 import {
   getDGTMStats,
   getGuyaneStats,
   getMinerauxMetauxMetropolesStats
-} from '../api/rest/statistiques'
-import { CaminoRestRoutes } from 'camino-common/src/rest'
+} from '../api/rest/statistiques/index.js'
+import { CaminoRestRoutes } from 'camino-common/src/rest.js'
 const contentTypes = {
   csv: 'text/csv',
   geojson: 'application/geojson',
diff --git a/packages/api/src/server/upload.ts b/packages/api/src/server/upload.ts
index 92e48abcd..c7cd3ccb6 100644
--- a/packages/api/src/server/upload.ts
+++ b/packages/api/src/server/upload.ts
@@ -1,8 +1,8 @@
 import express from 'express'
 import { Server, FileStore } from 'tus-node-server'
 import { graphqlUploadExpress } from 'graphql-upload'
-import { userGet } from '../database/queries/utilisateurs'
-import { isDefault } from 'camino-common/src/roles'
+import { userGet } from '../database/queries/utilisateurs.js'
+import { isDefault } from 'camino-common/src/roles.js'
 
 // Téléversement REST
 const uploadAllowedMiddleware = async (
diff --git a/packages/api/src/tools/annees-build.test.ts b/packages/api/src/tools/annees-build.test.ts
index 1461cefda..006f50742 100644
--- a/packages/api/src/tools/annees-build.test.ts
+++ b/packages/api/src/tools/annees-build.test.ts
@@ -1,4 +1,4 @@
-import { anneesBuild } from './annees-build'
+import { anneesBuild } from './annees-build.js'
 import { describe, expect, test } from 'vitest'
 describe('liste les années entre deux dates', () => {
   test("retourne un tableau d'années entre deux date", () => {
diff --git a/packages/api/src/tools/api-administrations/index.ts b/packages/api/src/tools/api-administrations/index.ts
index 6168860c4..187ce5a7c 100644
--- a/packages/api/src/tools/api-administrations/index.ts
+++ b/packages/api/src/tools/api-administrations/index.ts
@@ -1,13 +1,13 @@
 // https://etablissements-publics.api.gouv.fr
 import fetch from 'node-fetch'
 
-import errorLog from '../error-log'
-import { DepartementId } from 'camino-common/src/static/departement'
+import errorLog from '../error-log.js'
+import { DepartementId } from 'camino-common/src/static/departement.js'
 import {
   Administration,
   AdministrationId,
   AdministrationTypeId
-} from 'camino-common/src/static/administrations'
+} from 'camino-common/src/static/administrations.js'
 
 const MAX_CALLS_MINUTE = 200
 
diff --git a/packages/api/src/tools/api-cerbere/index.ts b/packages/api/src/tools/api-cerbere/index.ts
index ae0c02579..0fb1041ea 100644
--- a/packages/api/src/tools/api-cerbere/index.ts
+++ b/packages/api/src/tools/api-cerbere/index.ts
@@ -1,5 +1,5 @@
 import Cerbere from 'cerbere'
-import { IUtilisateurCreation } from '../../types'
+import { IUtilisateurCreation } from '../../types.js'
 
 const config = {
   cerbereUrl:
diff --git a/packages/api/src/tools/api-insee/fetch.ts b/packages/api/src/tools/api-insee/fetch.ts
index 8e46e0113..a4ccbc255 100644
--- a/packages/api/src/tools/api-insee/fetch.ts
+++ b/packages/api/src/tools/api-insee/fetch.ts
@@ -7,9 +7,9 @@ import {
   IApiSirenQueryToken,
   IApiSirenEtablissement,
   IApiSirenUniteLegale
-} from './types'
+} from './types.js'
 
-import errorLog from '../error-log'
+import errorLog from '../error-log.js'
 
 const MAX_CALLS_MINUTE = 30
 const MAX_RESULTS = 20
diff --git a/packages/api/src/tools/api-insee/format.ts b/packages/api/src/tools/api-insee/format.ts
index dcc05227c..b2e52ff61 100644
--- a/packages/api/src/tools/api-insee/format.ts
+++ b/packages/api/src/tools/api-insee/format.ts
@@ -1,19 +1,18 @@
-import dateFormat from 'dateformat'
-
 import {
   IApiSirenEtablissement,
   IApiSirenUniteLegalePeriode,
   IApiSirenUnionUniteLegalePeriodeEtablissmentUnite,
   IApiSirenUnionUniteLegaleEtablissmentUnite,
   IApiSirenUniteLegale
-} from './types'
-import { IEntrepriseEtablissement, IEntreprise } from '../../types'
+} from './types.js'
+import { IEntrepriseEtablissement, IEntreprise } from '../../types.js'
 
-import inseePays from './definitions/pays'
-import inseeCategoriesJuridiques from './definitions/categories-juridiques'
-import inseeTypesVoies from './definitions/voies'
+import inseePays from './definitions/pays.js'
+import inseeCategoriesJuridiques from './definitions/categories-juridiques.js'
+import inseeTypesVoies from './definitions/voies.js'
 
-import { checkCodePostal } from 'camino-common/src/static/departement'
+import { checkCodePostal } from 'camino-common/src/static/departement.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 
 interface IApiSirenNomFormat
   extends IApiSirenUnionUniteLegalePeriodeEtablissmentUnite,
@@ -92,7 +91,7 @@ const entrepriseEtablissementFormat = (
 ) => {
   const entrepriseId = `fr-${uniteLegale.siren}`
   const nic = uniteLegalePeriode.nicSiegeUniteLegale || 'xxxxx'
-  const dateDebut = dateFormat(uniteLegalePeriode.dateDebut, 'yyyy-mm-dd')
+  const dateDebut = toCaminoDate(uniteLegalePeriode.dateDebut)
 
   const nom = nomFormat(Object.assign({}, uniteLegale, uniteLegalePeriode))
   const legalSiret = `${uniteLegale.siren}${nic}`
@@ -105,7 +104,7 @@ const entrepriseEtablissementFormat = (
   } as IEntrepriseEtablissement
 
   if (uniteLegalePeriode.dateFin) {
-    etablissement.dateFin = dateFormat(uniteLegalePeriode.dateFin, 'yyyy-mm-dd')
+    etablissement.dateFin = toCaminoDate(uniteLegalePeriode.dateFin)
   }
 
   return etablissement
@@ -230,10 +229,7 @@ export const entrepriseFormat = ({
   }
 
   if (uniteLegale.dateCreationUniteLegale) {
-    entreprise.dateCreation = dateFormat(
-      uniteLegale.dateCreationUniteLegale,
-      'yyyy-mm-dd'
-    )
+    entreprise.dateCreation = toCaminoDate(uniteLegale.dateCreationUniteLegale)
   }
 
   return entreprise
diff --git a/packages/api/src/tools/api-insee/index.ts b/packages/api/src/tools/api-insee/index.ts
index 196478228..3b972dc51 100644
--- a/packages/api/src/tools/api-insee/index.ts
+++ b/packages/api/src/tools/api-insee/index.ts
@@ -1,11 +1,11 @@
-import errorLog from '../error-log'
-import { entrepriseEtablissementsFormat, entrepriseFormat } from './format'
+import errorLog from '../error-log.js'
+import { entrepriseEtablissementsFormat, entrepriseFormat } from './format.js'
 import {
   entreprisesFetch,
   entreprisesEtablissementsFetch,
   tokenInitialize
-} from './fetch'
-import { IEntreprise, IEntrepriseEtablissement } from '../../types'
+} from './fetch.js'
+import { IEntreprise, IEntrepriseEtablissement } from '../../types.js'
 
 // cherche les établissements des entreprises
 // retourne des objets du modèle EntrepriseEtablissements
diff --git a/packages/api/src/tools/api-mailjet/emails.ts b/packages/api/src/tools/api-mailjet/emails.ts
index 4fdca256a..98380886a 100644
--- a/packages/api/src/tools/api-mailjet/emails.ts
+++ b/packages/api/src/tools/api-mailjet/emails.ts
@@ -1,8 +1,8 @@
 import { convert } from 'html-to-text'
 import emailRegex from 'email-regex'
 
-import { mailjet } from './index'
-import { EmailTemplateId } from './types'
+import { mailjet } from './index.js'
+import { EmailTemplateId } from './types.js'
 
 const from = {
   email: process.env.API_MAILJET_EMAIL,
diff --git a/packages/api/src/tools/api-mailjet/index.ts b/packages/api/src/tools/api-mailjet/index.ts
index 0d0ef639a..c97e0f0dd 100644
--- a/packages/api/src/tools/api-mailjet/index.ts
+++ b/packages/api/src/tools/api-mailjet/index.ts
@@ -1,5 +1,6 @@
 import Mailjet from 'node-mailjet'
 
+// eslint-disable-next-line new-cap
 export const mailjet = new Mailjet({
   apiKey: process.env.API_MAILJET_KEY || 'fakeKey',
   apiSecret: process.env.API_MAILJET_SECRET || 'fakeSecret'
diff --git a/packages/api/src/tools/api-mailjet/newsletter.ts b/packages/api/src/tools/api-mailjet/newsletter.ts
index 31fdc69c5..dc1b31802 100644
--- a/packages/api/src/tools/api-mailjet/newsletter.ts
+++ b/packages/api/src/tools/api-mailjet/newsletter.ts
@@ -1,4 +1,4 @@
-import { mailjet } from './index'
+import { mailjet } from './index.js'
 
 interface IContactListAdd {
   ListID: number
diff --git a/packages/api/src/tools/api-matomo/index.test.ts b/packages/api/src/tools/api-matomo/index.test.ts
index 1b1f7555c..f860a67ee 100644
--- a/packages/api/src/tools/api-matomo/index.test.ts
+++ b/packages/api/src/tools/api-matomo/index.test.ts
@@ -1,4 +1,4 @@
-import { timeFormat } from './index'
+import { timeFormat } from './index.js'
 import { describe, expect, test } from 'vitest'
 
 describe('timeFormat', () => {
diff --git a/packages/api/src/tools/api-matomo/index.ts b/packages/api/src/tools/api-matomo/index.ts
index ca0da4511..d323c1817 100644
--- a/packages/api/src/tools/api-matomo/index.ts
+++ b/packages/api/src/tools/api-matomo/index.ts
@@ -1,7 +1,7 @@
 import fetch from 'node-fetch'
 
-import { cacheGet, cacheUpsert } from '../../database/queries/caches'
-import { Statistiques } from 'camino-common/src/statistiques'
+import { cacheGet, cacheUpsert } from '../../database/queries/caches.js'
+import { Statistiques } from 'camino-common/src/statistiques.js'
 
 interface IMatomoSectionData {
   label: string
diff --git a/packages/api/src/tools/api-openfisca/index.ts b/packages/api/src/tools/api-openfisca/index.ts
index 18e5c09d1..005950057 100644
--- a/packages/api/src/tools/api-openfisca/index.ts
+++ b/packages/api/src/tools/api-openfisca/index.ts
@@ -1,6 +1,6 @@
 import fetch, { Response } from 'node-fetch'
-import { SubstanceFiscale } from 'camino-common/src/static/substancesFiscales'
-import { Unite, Unites } from 'camino-common/src/static/unites'
+import { SubstanceFiscale } from 'camino-common/src/static/substancesFiscales.js'
+import { Unite, Unites } from 'camino-common/src/static/unites.js'
 type Attribute =
   | 'surface_communale'
   | 'surface_communale_proportionnee'
diff --git a/packages/api/src/tools/database-to-json/index.ts b/packages/api/src/tools/database-to-json/index.ts
index 83f5a3b3f..9f6cb0b7e 100644
--- a/packages/api/src/tools/database-to-json/index.ts
+++ b/packages/api/src/tools/database-to-json/index.ts
@@ -1,9 +1,9 @@
 import { rmSync, writeFileSync, mkdirSync } from 'fs'
 import decamelize from 'decamelize'
 
-import { ICoordonnees } from '../../types'
-import { knex } from '../../knex'
-import { tables } from './tables'
+import { ICoordonnees } from '../../types.js'
+import { knex } from '../../knex.js'
+import { tables } from './tables.js'
 
 const dir = 'sources'
 
diff --git a/packages/api/src/tools/date.test.ts b/packages/api/src/tools/date.test.ts
index 4c8fd8125..29cb03c99 100644
--- a/packages/api/src/tools/date.test.ts
+++ b/packages/api/src/tools/date.test.ts
@@ -1,5 +1,11 @@
-import { dateAddDays, dateAddMonths, datesSubtract, dateValidate } from './date'
+import {
+  dateAddDays,
+  dateAddMonths,
+  datesSubtract,
+  dateValidate
+} from './date.js'
 import { describe, expect, test } from 'vitest'
+import { toCaminoDate } from 'camino-common/src/date.js'
 
 describe('test les utilitaires de date', () => {
   test("retourne une erreur si aucune date n'est fournie", () => {
@@ -26,7 +32,7 @@ describe('test les utilitaires de date', () => {
     ['2020-01-01', 31, '2020-02-01'],
     ['2020-12-31', 1, '2021-01-01']
   ])('ajoute des jours à une date', (date, days, result) => {
-    expect(dateAddDays(date, days)).toBe(result)
+    expect(dateAddDays(toCaminoDate(date), days)).toBe(result)
   })
 
   test.each([
@@ -37,13 +43,15 @@ describe('test les utilitaires de date', () => {
     ['2020-01-31', 3, '2020-05-01'],
     ['2020-12-01', 3, '2021-03-01']
   ])('ajoute $months mois à la date $date', (date, months, result) => {
-    expect(dateAddMonths(date, months)).toBe(result)
+    expect(dateAddMonths(toCaminoDate(date), months)).toBe(result)
   })
 
   test("la méthode dateAddMonths n'est pas idempotente", () => {
     const date = '2022-05-30'
 
-    expect(dateAddMonths(dateAddMonths(date, -3), 3)).toBe('2022-06-02')
+    expect(dateAddMonths(dateAddMonths(toCaminoDate(date), -3), 3)).toBe(
+      '2022-06-02'
+    )
   })
 
   test.each([
diff --git a/packages/api/src/tools/date.ts b/packages/api/src/tools/date.ts
index e9983e7a0..13edc6a37 100644
--- a/packages/api/src/tools/date.ts
+++ b/packages/api/src/tools/date.ts
@@ -1,4 +1,4 @@
-import dateFormat from 'dateformat'
+import { CaminoDate, toCaminoDate } from 'camino-common/src/date.js'
 
 export const dateValidate = (str: string | undefined | null) => {
   if (!str) return 'Date manquante'
@@ -13,17 +13,17 @@ export const dateValidate = (str: string | undefined | null) => {
 }
 
 // ajoute une durée en jours à une string au format YYYY-MM-DD
-export const dateAddDays = (date: string, days: number) => {
+export const dateAddDays = (date: CaminoDate, days: number): CaminoDate => {
   const [y, m, d] = date.split('-')
 
-  return dateFormat(new Date(+y, +m - 1, +d + days), 'yyyy-mm-dd')
+  return toCaminoDate(new Date(+y, +m - 1, +d + days))
 }
 
 // ajoute une durée en mois à une string au format YYYY-MM-DD
-export const dateAddMonths = (date: string, months: number) => {
+export const dateAddMonths = (date: CaminoDate, months: number): CaminoDate => {
   const [y, m, d] = date.split('-')
 
-  return dateFormat(new Date(+y, +m - 1 + months, +d), 'yyyy-mm-dd')
+  return toCaminoDate(new Date(+y, +m - 1 + months, +d))
 }
 
 // calcul le nombre de mois entre 2 dates
diff --git a/packages/api/src/tools/demarches/definitions-check.ts b/packages/api/src/tools/demarches/definitions-check.ts
index 8272bb193..764d2f741 100644
--- a/packages/api/src/tools/demarches/definitions-check.ts
+++ b/packages/api/src/tools/demarches/definitions-check.ts
@@ -4,11 +4,11 @@ import {
   IEtapeTypeIdCondition,
   isDemarcheDefinitionRestriction,
   DemarcheDefinitionRestriction
-} from '../../business/rules-demarches/definitions'
-import { titresDemarchesGet } from '../../database/queries/titres-demarches'
-import { titreDemarcheUpdatedEtatValidate } from '../../business/validations/titre-demarche-etat-validate'
-import { userSuper } from '../../database/user-super'
-import TitresTypesDemarchesTypesEtapesTypes from '../../database/models/titres-types--demarches-types-etapes-types'
+} from '../../business/rules-demarches/definitions.js'
+import { titresDemarchesGet } from '../../database/queries/titres-demarches.js'
+import { titreDemarcheUpdatedEtatValidate } from '../../business/validations/titre-demarche-etat-validate.js'
+import { userSuper } from '../../database/user-super.js'
+import TitresTypesDemarchesTypesEtapesTypes from '../../database/models/titres-types--demarches-types-etapes-types.js'
 
 const etapeTypeIdsGet = (contraintes?: IEtapeTypeIdCondition[][]) => {
   const etapeTypeIds = [] as string[]
diff --git a/packages/api/src/tools/demarches/etape-statut-check.ts b/packages/api/src/tools/demarches/etape-statut-check.ts
index 9a7614ed1..b8d297d61 100644
--- a/packages/api/src/tools/demarches/etape-statut-check.ts
+++ b/packages/api/src/tools/demarches/etape-statut-check.ts
@@ -1,7 +1,7 @@
-import { titresEtapesGet } from '../../database/queries/titres-etapes'
-import { titresTypesDemarchesTypesEtapesTypesGet } from '../../database/queries/metas'
-import { userSuper } from '../../database/user-super'
-import { getEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts'
+import { titresEtapesGet } from '../../database/queries/titres-etapes.js'
+import { titresTypesDemarchesTypesEtapesTypesGet } from '../../database/queries/metas.js'
+import { userSuper } from '../../database/user-super.js'
+import { getEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts.js'
 
 export const etapeStatutCheck = async () => {
   console.info()
diff --git a/packages/api/src/tools/demarches/tde-check.ts b/packages/api/src/tools/demarches/tde-check.ts
index d90faabe1..42baf62e3 100644
--- a/packages/api/src/tools/demarches/tde-check.ts
+++ b/packages/api/src/tools/demarches/tde-check.ts
@@ -1,6 +1,6 @@
-import { titresTypesDemarchesTypesEtapesTypesGet } from '../../database/queries/metas'
-import { titresDemarchesGet } from '../../database/queries/titres-demarches'
-import { userSuper } from '../../database/user-super'
+import { titresTypesDemarchesTypesEtapesTypesGet } from '../../database/queries/metas.js'
+import { titresDemarchesGet } from '../../database/queries/titres-demarches.js'
+import { userSuper } from '../../database/user-super.js'
 
 export const titreTypeDemarcheTypeEtapeTypeCheck = async () => {
   console.info()
diff --git a/packages/api/src/tools/demarches/tests-creation.ts b/packages/api/src/tools/demarches/tests-creation.ts
index f50a7e01b..a2ffb2e69 100644
--- a/packages/api/src/tools/demarches/tests-creation.ts
+++ b/packages/api/src/tools/demarches/tests-creation.ts
@@ -1,17 +1,17 @@
 import '../../init'
 
-import { titresDemarchesGet } from '../../database/queries/titres-demarches'
-import { userSuper } from '../../database/user-super'
-import { titreDemarcheDepotDemandeDateFind } from '../../business/rules/titre-demarche-depot-demande-date-find'
+import { titresDemarchesGet } from '../../database/queries/titres-demarches.js'
+import { userSuper } from '../../database/user-super.js'
+import { titreDemarcheDepotDemandeDateFind } from '../../business/rules/titre-demarche-depot-demande-date-find.js'
 import { writeFileSync } from 'fs'
 import {
   Etape,
   toMachineEtapes
-} from '../../business/rules-demarches/machine-common'
+} from '../../business/rules-demarches/machine-common.js'
 import {
   demarchesDefinitions,
   isDemarcheDefinitionMachine
-} from '../../business/rules-demarches/definitions'
+} from '../../business/rules-demarches/definitions.js'
 
 const writeEtapesForTest = async () => {
   const demarcheDefinitionMachines = demarchesDefinitions.filter(
diff --git a/packages/api/src/tools/dir-create.ts b/packages/api/src/tools/dir-create.ts
index e819c207f..b7d90967f 100644
--- a/packages/api/src/tools/dir-create.ts
+++ b/packages/api/src/tools/dir-create.ts
@@ -1,6 +1,6 @@
 import { mkdir } from 'fs'
 
-import errorLog from './error-log'
+import errorLog from './error-log.js'
 
 const dirCreate = async (name: string) =>
   new Promise((resolve, reject) => {
diff --git a/packages/api/src/tools/dir-delete.ts b/packages/api/src/tools/dir-delete.ts
index 5de46f721..118e1cc4b 100644
--- a/packages/api/src/tools/dir-delete.ts
+++ b/packages/api/src/tools/dir-delete.ts
@@ -1,6 +1,6 @@
 import { rm } from 'fs'
 
-import errorLog from './error-log'
+import errorLog from './error-log.js'
 
 export const dirDelete = async (name: string) =>
   new Promise((resolve, reject) => {
diff --git a/packages/api/src/tools/documents/_types.ts b/packages/api/src/tools/documents/_types.ts
index 36bd4eeb9..bc5339c0c 100644
--- a/packages/api/src/tools/documents/_types.ts
+++ b/packages/api/src/tools/documents/_types.ts
@@ -1,3 +1,3 @@
-import { IDocument, Index } from '../../types'
+import { IDocument, Index } from '../../types.js'
 
 export type IndexFile = Index<{ document: IDocument; path: string }>
diff --git a/packages/api/src/tools/documents/_utils.ts b/packages/api/src/tools/documents/_utils.ts
index 0b837d316..0c8fe524c 100644
--- a/packages/api/src/tools/documents/_utils.ts
+++ b/packages/api/src/tools/documents/_utils.ts
@@ -1,4 +1,4 @@
-import { Index } from '../../types'
+import { Index } from '../../types.js'
 
 const hashGet = (str: string) => str.split('-').pop()
 
diff --git a/packages/api/src/tools/documents/check.ts b/packages/api/src/tools/documents/check.ts
index fbdf74bd1..87241e0a1 100644
--- a/packages/api/src/tools/documents/check.ts
+++ b/packages/api/src/tools/documents/check.ts
@@ -1,8 +1,8 @@
-import { filesDocumentCheck } from './files-document-check'
-import { documentsIndexBuild } from './documents-index-build'
-import { filesIndexBuild } from './files-index-build'
-import { documentsFilesCheck } from './documents-files-check'
-import { filesPathCheck } from './files-path-check'
+import { filesDocumentCheck } from './files-document-check.js'
+import { documentsIndexBuild } from './documents-index-build.js'
+import { filesIndexBuild } from './files-index-build.js'
+import { documentsFilesCheck } from './documents-files-check.js'
+import { filesPathCheck } from './files-path-check.js'
 
 const documentsCheck = async () => {
   console.info()
diff --git a/packages/api/src/tools/documents/clean.ts b/packages/api/src/tools/documents/clean.ts
index bf6c93579..240afacc3 100644
--- a/packages/api/src/tools/documents/clean.ts
+++ b/packages/api/src/tools/documents/clean.ts
@@ -1,9 +1,9 @@
-import Document from '../../database/models/documents'
-import { documentFilePathFind } from './document-path-find'
+import Document from '../../database/models/documents.js'
+import { documentFilePathFind } from './document-path-find.js'
 import * as fs from 'fs'
-import { documentSupprimer } from '../../api/graphql/resolvers/documents'
-import { userSuper } from '../../database/user-super'
-import { datesDiffInDays } from 'camino-common/src/date'
+import { documentSupprimer } from '../../api/graphql/resolvers/documents.js'
+import { userSuper } from '../../database/user-super.js'
+import { datesDiffInDays } from 'camino-common/src/date.js'
 
 export const documentsClean = async () => {
   console.info()
diff --git a/packages/api/src/tools/documents/document-path-find.ts b/packages/api/src/tools/documents/document-path-find.ts
index f93df46e3..40d730448 100644
--- a/packages/api/src/tools/documents/document-path-find.ts
+++ b/packages/api/src/tools/documents/document-path-find.ts
@@ -1,6 +1,6 @@
-import { IDocument } from '../../types'
-import { documentRepertoireFind } from './document-repertoire-find'
-import dirCreate from '../dir-create'
+import { IDocument } from '../../types.js'
+import { documentRepertoireFind } from './document-repertoire-find.js'
+import dirCreate from '../dir-create.js'
 
 export const documentFilePathFind = async (
   document: IDocument,
diff --git a/packages/api/src/tools/documents/document-repertoire-find.ts b/packages/api/src/tools/documents/document-repertoire-find.ts
index b1a3ea989..432a4aca4 100644
--- a/packages/api/src/tools/documents/document-repertoire-find.ts
+++ b/packages/api/src/tools/documents/document-repertoire-find.ts
@@ -1,4 +1,4 @@
-import { IDocument, IDocumentRepertoire } from '../../types'
+import { IDocument, IDocumentRepertoire } from '../../types.js'
 
 export const documentRepertoireFind = (
   document: IDocument
diff --git a/packages/api/src/tools/documents/documents-files-check.ts b/packages/api/src/tools/documents/documents-files-check.ts
index 3c456055a..0caec8e14 100644
--- a/packages/api/src/tools/documents/documents-files-check.ts
+++ b/packages/api/src/tools/documents/documents-files-check.ts
@@ -1,6 +1,6 @@
-import { Index } from '../../types'
-import { IndexFile } from './_types'
-import { matchFuzzy } from './_utils'
+import { Index } from '../../types.js'
+import { IndexFile } from './_types.js'
+import { matchFuzzy } from './_utils.js'
 
 export const documentsFilesCheck = (
   documentsIndex: IndexFile,
diff --git a/packages/api/src/tools/documents/documents-index-build.ts b/packages/api/src/tools/documents/documents-index-build.ts
index 456eb9b9a..3f799e6b5 100644
--- a/packages/api/src/tools/documents/documents-index-build.ts
+++ b/packages/api/src/tools/documents/documents-index-build.ts
@@ -1,9 +1,9 @@
-import { IDocument } from '../../types'
-import { IndexFile } from './_types'
+import { IDocument } from '../../types.js'
+import { IndexFile } from './_types.js'
 
-import { documentsGet } from '../../database/queries/documents'
-import { userSuper } from '../../database/user-super'
-import { documentRepertoireFind } from './document-repertoire-find'
+import { documentsGet } from '../../database/queries/documents.js'
+import { userSuper } from '../../database/user-super.js'
+import { documentRepertoireFind } from './document-repertoire-find.js'
 
 const documentPathGet = (document: IDocument) => {
   let path = documentRepertoireFind(document)
diff --git a/packages/api/src/tools/documents/files-document-check.ts b/packages/api/src/tools/documents/files-document-check.ts
index b661f76e2..7bd892468 100644
--- a/packages/api/src/tools/documents/files-document-check.ts
+++ b/packages/api/src/tools/documents/files-document-check.ts
@@ -1,10 +1,10 @@
-import { Index } from '../../types'
-import { IndexFile } from './_types'
-import { matchFuzzy } from './_utils'
-import { titreEtapeGet } from '../../database/queries/titres-etapes'
-import { userSuper } from '../../database/user-super'
-import { contenuFilesGet } from '../../business/utils/contenu-element-file-process'
-import { etapeTypeSectionsFormat } from '../../api/_format/etapes-types'
+import { Index } from '../../types.js'
+import { IndexFile } from './_types.js'
+import { matchFuzzy } from './_utils.js'
+import { titreEtapeGet } from '../../database/queries/titres-etapes.js'
+import { userSuper } from '../../database/user-super.js'
+import { contenuFilesGet } from '../../business/utils/contenu-element-file-process.js'
+import { etapeTypeSectionsFormat } from '../../api/_format/etapes-types.js'
 
 const etapeGet = (str: string) => str.split('-').slice(0, -1).join('-')
 
diff --git a/packages/api/src/tools/documents/files-index-build.test.ts b/packages/api/src/tools/documents/files-index-build.test.ts
index a0197e000..51689b7e2 100644
--- a/packages/api/src/tools/documents/files-index-build.test.ts
+++ b/packages/api/src/tools/documents/files-index-build.test.ts
@@ -1,4 +1,4 @@
-import { filesIndexBuild } from './files-index-build'
+import { filesIndexBuild } from './files-index-build.js'
 import { expect, test } from 'vitest'
 
 test('filesIndexBuild', () => {
diff --git a/packages/api/src/tools/documents/files-index-build.ts b/packages/api/src/tools/documents/files-index-build.ts
index 4d58e3435..dd9014e42 100644
--- a/packages/api/src/tools/documents/files-index-build.ts
+++ b/packages/api/src/tools/documents/files-index-build.ts
@@ -1,7 +1,7 @@
 import { execSync } from 'child_process'
 import { basename } from 'path'
 
-import { Index } from '../../types'
+import { Index } from '../../types.js'
 
 export const filesIndexBuild = (path = './files'): Index<string> => {
   const filesNames = execSync(`find ${path} | grep pdf`).toString().split('\n')
diff --git a/packages/api/src/tools/documents/files-path-check.test.ts b/packages/api/src/tools/documents/files-path-check.test.ts
index e7c7c843f..2fa541d0a 100644
--- a/packages/api/src/tools/documents/files-path-check.test.ts
+++ b/packages/api/src/tools/documents/files-path-check.test.ts
@@ -1,5 +1,5 @@
-import { filesPathCheck } from './files-path-check'
-import { IndexFile } from './_types'
+import { filesPathCheck } from './files-path-check.js'
+import { IndexFile } from './_types.js'
 import { expect, test } from 'vitest'
 
 test('filesPathCheck', () => {
diff --git a/packages/api/src/tools/documents/files-path-check.ts b/packages/api/src/tools/documents/files-path-check.ts
index b489f57fb..17ec3a95b 100644
--- a/packages/api/src/tools/documents/files-path-check.ts
+++ b/packages/api/src/tools/documents/files-path-check.ts
@@ -1,5 +1,5 @@
-import { Index } from '../../types'
-import { IndexFile } from './_types'
+import { Index } from '../../types.js'
+import { IndexFile } from './_types.js'
 
 export const filesPathCheck = (
   documentsIndex: IndexFile,
diff --git a/packages/api/src/tools/file-create.test.ts b/packages/api/src/tools/file-create.test.ts
index f6e9f3ea3..5b4f01185 100644
--- a/packages/api/src/tools/file-create.test.ts
+++ b/packages/api/src/tools/file-create.test.ts
@@ -1,4 +1,4 @@
-import fileCreate from './file-create'
+import fileCreate from './file-create.js'
 import { mkdirSync, readFileSync, rmdirSync } from 'fs'
 import { vi, beforeEach, afterEach, describe, expect, test } from 'vitest'
 
diff --git a/packages/api/src/tools/file-create.ts b/packages/api/src/tools/file-create.ts
index 9747bc0af..9524c51cb 100644
--- a/packages/api/src/tools/file-create.ts
+++ b/packages/api/src/tools/file-create.ts
@@ -1,6 +1,6 @@
 import { writeFile } from 'fs'
 
-import errorLog from './error-log'
+import errorLog from './error-log.js'
 
 const fileCreate = async (name: string, content: string) =>
   new Promise((resolve, reject) => {
diff --git a/packages/api/src/tools/file-delete.ts b/packages/api/src/tools/file-delete.ts
index b67c0200f..005f1a303 100644
--- a/packages/api/src/tools/file-delete.ts
+++ b/packages/api/src/tools/file-delete.ts
@@ -1,6 +1,6 @@
 import { unlink } from 'fs'
 
-import errorLog from './error-log'
+import errorLog from './error-log.js'
 
 const fileDelete = async (path: string) =>
   new Promise((resolve, reject) =>
diff --git a/packages/api/src/tools/file-rename.test.ts b/packages/api/src/tools/file-rename.test.ts
index bad393b14..05119fed1 100644
--- a/packages/api/src/tools/file-rename.test.ts
+++ b/packages/api/src/tools/file-rename.test.ts
@@ -1,7 +1,7 @@
 import { mkdirSync, readFileSync, rmdirSync } from 'fs'
 import { vi, beforeEach, afterEach, describe, expect, test } from 'vitest'
-import fileRename from './file-rename'
-import fileCreate from './file-create'
+import fileRename from './file-rename.js'
+import fileCreate from './file-create.js'
 
 console.error = vi.fn()
 console.info = vi.fn()
diff --git a/packages/api/src/tools/file-rename.ts b/packages/api/src/tools/file-rename.ts
index 15c2557c6..4ed011bcb 100644
--- a/packages/api/src/tools/file-rename.ts
+++ b/packages/api/src/tools/file-rename.ts
@@ -1,7 +1,7 @@
 import { rename } from 'fs'
 import { join, basename } from 'path'
 
-import errorLog from './error-log'
+import errorLog from './error-log.js'
 
 const fileRename = async (oldFileName: string, newFileName: string) =>
   new Promise((resolve, reject) => {
diff --git a/packages/api/src/tools/file-stream-create.ts b/packages/api/src/tools/file-stream-create.ts
index ca41c642e..ea8a3338c 100644
--- a/packages/api/src/tools/file-stream-create.ts
+++ b/packages/api/src/tools/file-stream-create.ts
@@ -1,6 +1,6 @@
 import { createWriteStream, unlink } from 'fs'
 
-import errorLog from './error-log'
+import errorLog from './error-log.js'
 
 const fileStreamCreate = async (stream: any, path: string) =>
   new Promise((resolve, reject) => {
diff --git a/packages/api/src/tools/geo-convert.test.ts b/packages/api/src/tools/geo-convert.test.ts
index 308e73f80..eb25101a5 100644
--- a/packages/api/src/tools/geo-convert.test.ts
+++ b/packages/api/src/tools/geo-convert.test.ts
@@ -1,5 +1,5 @@
-import { geoConvert } from './geo-convert'
-import { GEO_SYSTEME_IDS } from 'camino-common/src/static/geoSystemes'
+import { geoConvert } from './geo-convert.js'
+import { GEO_SYSTEME_IDS } from 'camino-common/src/static/geoSystemes.js'
 import { describe, expect, test } from 'vitest'
 
 describe('teste la conversion des projections', () => {
diff --git a/packages/api/src/tools/geo-convert.ts b/packages/api/src/tools/geo-convert.ts
index 2650f5c82..d3099e0b9 100644
--- a/packages/api/src/tools/geo-convert.ts
+++ b/packages/api/src/tools/geo-convert.ts
@@ -1,9 +1,9 @@
 import proj4 from 'proj4'
-import { ICoordonnees } from '../types'
+import { ICoordonnees } from '../types.js'
 import {
   GEO_SYSTEME_IDS,
   GeoSystemeId
-} from 'camino-common/src/static/geoSystemes'
+} from 'camino-common/src/static/geoSystemes.js'
 
 export const geoConvert = (
   epsgId: GeoSystemeId,
diff --git a/packages/api/src/tools/geojson.ts b/packages/api/src/tools/geojson.ts
index f2b97decc..c742a7c0c 100644
--- a/packages/api/src/tools/geojson.ts
+++ b/packages/api/src/tools/geojson.ts
@@ -1,11 +1,11 @@
 import rewind from 'geojson-rewind'
 import center from '@turf/center'
 
-import { IGeometry, ITitrePoint } from '../types'
-import { Feature } from '@turf/helpers'
-import { knex } from '../knex'
-import { SDOMZoneId } from 'camino-common/src/static/sdom'
-import { SecteursMaritimesIds } from 'camino-common/src/static/facades'
+import { IGeometry, ITitrePoint } from '../types.js'
+import { knex } from '../knex.js'
+import { SDOMZoneId } from 'camino-common/src/static/sdom.js'
+import { SecteursMaritimesIds } from 'camino-common/src/static/facades.js'
+import { Feature } from 'geojson'
 
 // convertit des points
 // en un geojson de type 'MultiPolygon'
diff --git a/packages/api/src/tools/index.test.ts b/packages/api/src/tools/index.test.ts
index 7bc924357..fe67fb419 100644
--- a/packages/api/src/tools/index.test.ts
+++ b/packages/api/src/tools/index.test.ts
@@ -1,4 +1,4 @@
-import { objectsDiffer, dupRemove, dupFind, objectClone } from './index'
+import { objectsDiffer, dupRemove, dupFind, objectClone } from './index.js'
 import { describe, expect, test } from 'vitest'
 describe('comparaison entre des objets', () => {
   test('retourne false si les objets sont identiques (dates)', () => {
diff --git a/packages/api/src/tools/index.ts b/packages/api/src/tools/index.ts
index e03582b45..4fd2cdf5b 100644
--- a/packages/api/src/tools/index.ts
+++ b/packages/api/src/tools/index.ts
@@ -1,6 +1,6 @@
 import { serialize, deserialize } from 'v8'
 
-import { Index } from '../types'
+import { Index } from '../types.js'
 
 export const dupRemove = (key: string, ...arrays: Index<any>[][]) =>
   arrays.reduce(
diff --git a/packages/api/src/tools/territoires-update.ts b/packages/api/src/tools/territoires-update.ts
index e113187df..74140a8a2 100644
--- a/packages/api/src/tools/territoires-update.ts
+++ b/packages/api/src/tools/territoires-update.ts
@@ -1,20 +1,20 @@
 import '../init'
-import { knex } from '../knex'
+import { knex } from '../knex.js'
 import fetch from 'node-fetch'
-import Communes from '../database/models/communes'
+import Communes from '../database/models/communes.js'
 import JSZip from 'jszip'
-import Forets from '../database/models/forets'
+import Forets from '../database/models/forets.js'
 import { streamArray } from 'stream-json/streamers/StreamArray'
 import Pick from 'stream-json/filters/Pick'
 import { chain } from 'stream-chain'
 import { Readable } from 'stream'
-import SDOMZones from '../database/models/sdom-zones'
-import { SDOMZoneId, SDOMZoneIds } from 'camino-common/src/static/sdom'
+import SDOMZones from '../database/models/sdom-zones.js'
+import { SDOMZoneId, SDOMZoneIds } from 'camino-common/src/static/sdom.js'
 import {
   assertsFacade,
   assertsSecteur,
   secteurAJour
-} from 'camino-common/src/static/facades'
+} from 'camino-common/src/static/facades.js'
 
 const communesUpdate = async () => {
   const communesIdsKnown = (await Communes.query()).map(({ id }) => id)
@@ -28,6 +28,9 @@ const communesUpdate = async () => {
   )
 
   console.info('Traitement du fichier des communes')
+  if (communesFetch.body === null) {
+    throw new Error('Les communes sont vides')
+  }
   const pipeline = chain([
     new Readable().wrap(communesFetch.body),
     Pick.withParser({ filter: 'features' }),
@@ -89,7 +92,9 @@ const communesUpdate = async () => {
 
 const geoguyaneFileGet = async (path: string) => {
   const dataUrlFetch = await fetch(path)
-  const dataUrlJson = await dataUrlFetch.json()
+  const dataUrlJson = await dataUrlFetch
+    .json()
+    .then(value => value as { data: any })
 
   console.info('Téléchargement des données', dataUrlJson.data)
   const foretsZip = await fetch(dataUrlJson.data)
@@ -157,7 +162,9 @@ const secteursMaritimeUpdates = async () => {
   const secteursUrl =
     'https://gisdata.cerema.fr/arcgis/rest/services/Carte_vocation_dsf_2020/MapServer/0/query?where=1%3D1&text=&objectIds=&time=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&relationParam=&outFields=secteur%2Cfacade%2COBJECTID%2Cid&returnGeometry=true&returnTrueCurves=false&maxAllowableOffset=&geometryPrecision=&outSR=&having=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&historicMoment=&returnDistinctValues=false&resultOffset=&resultRecordCount=&queryByDistance=&returnExtentOnly=false&datumTransformation=&parameterValues=&rangeValues=&quantizationParameters=&f=geojson'
 
-  const secteurs = await (await fetch(secteursUrl)).json()
+  const secteurs = await (await fetch(secteursUrl))
+    .json()
+    .then(value => value as { features: any[] })
 
   const secteurIdsKnown: number[] = (
     await knex.select('id').from('secteurs_maritime_postgis')
diff --git a/packages/api/src/types.ts b/packages/api/src/types.ts
index 6226b8cb1..b775b7633 100644
--- a/packages/api/src/types.ts
+++ b/packages/api/src/types.ts
@@ -2,30 +2,33 @@ import { FileUpload } from 'graphql-upload'
 import {
   AdministrationId,
   AdministrationTypeId
-} from 'camino-common/src/static/administrations'
-import { CodePostal, DepartementId } from 'camino-common/src/static/departement'
-import { RegionId } from 'camino-common/src/static/region'
-import { GeoSystemeId } from 'camino-common/src/static/geoSystemes'
-import { Role } from 'camino-common/src/roles'
-import { DomaineId } from 'camino-common/src/static/domaines'
-import { TitreTypeTypeId } from 'camino-common/src/static/titresTypesTypes'
-import { PaysId } from 'camino-common/src/static/pays'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
-import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes'
-import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts'
-import { Couleur } from 'camino-common/src/static/couleurs'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { SubstanceLegaleId } from 'camino-common/src/static/substancesLegales'
-import { UniteId } from 'camino-common/src/static/unites'
-import { FrequenceId } from 'camino-common/src/static/frequence'
-import { DemarcheStatutId } from 'camino-common/src/static/demarchesStatuts'
-import { TitreStatutId } from 'camino-common/src/static/titresStatuts'
-import { PhaseStatutId } from 'camino-common/src/static/phasesStatuts'
-import { TitreReference } from 'camino-common/src/titres-references'
-import { DocumentType } from 'camino-common/src/static/documentsTypes'
-import { SecteursMaritimes } from 'camino-common/src/static/facades'
-import { CaminoDate } from 'camino-common/src/date'
-import { EntrepriseId } from 'camino-common/src/entreprise'
+} from 'camino-common/src/static/administrations.js'
+import {
+  CodePostal,
+  DepartementId
+} from 'camino-common/src/static/departement.js'
+import { RegionId } from 'camino-common/src/static/region.js'
+import { GeoSystemeId } from 'camino-common/src/static/geoSystemes.js'
+import { Role } from 'camino-common/src/roles.js'
+import { DomaineId } from 'camino-common/src/static/domaines.js'
+import { TitreTypeTypeId } from 'camino-common/src/static/titresTypesTypes.js'
+import { PaysId } from 'camino-common/src/static/pays.js'
+import { TitreTypeId } from 'camino-common/src/static/titresTypes.js'
+import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes.js'
+import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts.js'
+import { Couleur } from 'camino-common/src/static/couleurs.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
+import { SubstanceLegaleId } from 'camino-common/src/static/substancesLegales.js'
+import { UniteId } from 'camino-common/src/static/unites.js'
+import { FrequenceId } from 'camino-common/src/static/frequence.js'
+import { DemarcheStatutId } from 'camino-common/src/static/demarchesStatuts.js'
+import { TitreStatutId } from 'camino-common/src/static/titresStatuts.js'
+import { PhaseStatutId } from 'camino-common/src/static/phasesStatuts.js'
+import { TitreReference } from 'camino-common/src/titres-references.js'
+import { DocumentType } from 'camino-common/src/static/documentsTypes.js'
+import { SecteursMaritimes } from 'camino-common/src/static/facades.js'
+import { CaminoDate } from 'camino-common/src/date.js'
+import { EntrepriseId } from 'camino-common/src/entreprise.js'
 
 enum TitreEtapesTravauxTypes {
   DemandeAutorisationOuverture = 'wfa',
@@ -538,7 +541,7 @@ interface ITitreActivite {
   slug?: string
   titreId: string
   titre?: ITitre | null
-  date: string
+  date: CaminoDate
   typeId: string
   type?: IActiviteType | null
   statutId: string
@@ -547,7 +550,7 @@ interface ITitreActivite {
   annee: number
   utilisateurId?: string | null
   utilisateur?: IUtilisateur | null
-  dateSaisie?: string
+  dateSaisie?: CaminoDate
   contenu?: IContenu | null
   sections: ISection[]
   documents?: IDocument[] | null
diff --git a/packages/api/tests/__mocks__/fetch-insee-api.ts b/packages/api/tests/__mocks__/fetch-insee-api.ts
index d98cc8a88..3b8eb4812 100644
--- a/packages/api/tests/__mocks__/fetch-insee-api.ts
+++ b/packages/api/tests/__mocks__/fetch-insee-api.ts
@@ -1,7 +1,7 @@
 import {
   IApiSirenEtablissement,
   IApiSirenUniteLegale
-} from '../../src/tools/api-insee/types'
+} from '../../src/tools/api-insee/types.js'
 
 const entreprise = {
   siren: '729800706',
diff --git a/packages/api/tests/_utils/administrations-permissions.ts b/packages/api/tests/_utils/administrations-permissions.ts
index 49671d3d1..6b8110a5f 100644
--- a/packages/api/tests/_utils/administrations-permissions.ts
+++ b/packages/api/tests/_utils/administrations-permissions.ts
@@ -3,36 +3,36 @@ import {
   IEtapeType,
   ITitre,
   ITitreTypeDemarcheTypeEtapeType
-} from '../../src/types'
+} from '../../src/types.js'
 
-import { graphQLCall, queryImport } from './index'
-import { administrationsWithRelations } from './administrations'
+import { graphQLCall, queryImport } from './index.js'
+import { administrationsWithRelations } from './administrations.js'
 
-import Titres from '../../src/database/models/titres'
-import DemarchesTypes from '../../src/database/models/demarches-types'
-import options from '../../src/database/queries/_options'
+import Titres from '../../src/database/models/titres.js'
+import DemarchesTypes from '../../src/database/models/demarches-types.js'
+import options from '../../src/database/queries/_options.js'
 import {
   etapeTypeGet,
   titreTypeDemarcheTypeEtapeTypeGet
-} from '../../src/database/queries/metas'
-import { titreEtapePropsIds } from '../../src/business/utils/titre-etape-heritage-props-find'
-import { etapeTypeSectionsFormat } from '../../src/api/_format/etapes-types'
-import { Role } from 'camino-common/src/roles'
-import { AdministrationId } from 'camino-common/src/static/administrations'
+} from '../../src/database/queries/metas.js'
+import { titreEtapePropsIds } from '../../src/business/utils/titre-etape-heritage-props-find.js'
+import { etapeTypeSectionsFormat } from '../../src/api/_format/etapes-types.js'
+import { Role } from 'camino-common/src/roles.js'
+import { AdministrationId } from 'camino-common/src/static/administrations.js'
 import {
   idGenerate,
   newDemarcheId
-} from '../../src/database/models/_format/id-create'
+} from '../../src/database/models/_format/id-create.js'
 import {
   getDomaineId,
   getTitreTypeType,
   TitreTypeId
-} from 'camino-common/src/static/titresTypes'
-import { getDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes'
-import { documentCreate } from '../../src/database/queries/documents'
-import { isGestionnaire } from 'camino-common/src/static/administrationsTitresTypes'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { toCaminoDate } from 'camino-common/src/date'
+} from 'camino-common/src/static/titresTypes.js'
+import { getDocuments } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes.js'
+import { documentCreate } from '../../src/database/queries/documents.js'
+import { isGestionnaire } from 'camino-common/src/static/administrationsTitresTypes.js'
+import { EtapeTypeId } from 'camino-common/src/static/etapesTypes.js'
+import { toCaminoDate } from 'camino-common/src/date.js'
 import { expect } from 'vitest'
 export const visibleCheck = async (
   administrationId: AdministrationId,
diff --git a/packages/api/tests/_utils/administrations.ts b/packages/api/tests/_utils/administrations.ts
index df7671a26..445a7ca72 100644
--- a/packages/api/tests/_utils/administrations.ts
+++ b/packages/api/tests/_utils/administrations.ts
@@ -8,12 +8,12 @@ import {
   IAdministrationTitreTypeTitreStatut,
   IEtapeType,
   ITitreType
-} from '../../src/types'
+} from '../../src/types.js'
 
 import {
   Administration,
   Administrations
-} from 'camino-common/src/static/administrations'
+} from 'camino-common/src/static/administrations.js'
 
 interface ISources {
   titresTypes: {
diff --git a/packages/api/tests/_utils/index.ts b/packages/api/tests/_utils/index.ts
index b68e7bd2f..76b12c716 100644
--- a/packages/api/tests/_utils/index.ts
+++ b/packages/api/tests/_utils/index.ts
@@ -3,17 +3,17 @@ import path from 'path'
 import jwt from 'jsonwebtoken'
 import request from 'supertest'
 
-import { Index, IUtilisateur } from '../../src/types'
+import { Index, IUtilisateur } from '../../src/types.js'
 
-import { app } from '../app'
+import { app } from '../app.js'
 import {
   utilisateurCreate,
   utilisateurGet
-} from '../../src/database/queries/utilisateurs'
-import { userSuper } from '../../src/database/user-super'
-import { AdministrationId } from 'camino-common/src/static/administrations'
-import dateFormat from 'dateformat'
-import { Role } from 'camino-common/src/roles'
+} from '../../src/database/queries/utilisateurs.js'
+import { userSuper } from '../../src/database/user-super.js'
+import { AdministrationId } from 'camino-common/src/static/administrations.js'
+import { Role } from 'camino-common/src/roles.js'
+import { getCurrent } from 'camino-common/src/date.js'
 
 const queryImport = (nom: string) =>
   fs
@@ -105,7 +105,7 @@ const userTokenGenerate = async (
         nom: `nom-${role}`,
         email: `${id}@camino.local`,
         motDePasse: 'mot-de-passe',
-        dateCreation: dateFormat(new Date(), 'yyyy-mm-dd'),
+        dateCreation: getCurrent(),
         role,
         administrationId
       },
diff --git a/packages/api/tests/app.ts b/packages/api/tests/app.ts
index 20e786987..dac1eae65 100644
--- a/packages/api/tests/app.ts
+++ b/packages/api/tests/app.ts
@@ -1,10 +1,10 @@
 import express from 'express'
 
-import { graphql } from '../src/server/graphql'
-import { authJwt } from '../src/server/auth-jwt'
-import { restUpload, uploadAllowedMiddleware } from '../src/server/upload'
+import { graphql } from '../src/server/graphql.js'
+import { authJwt } from '../src/server/auth-jwt.js'
+import { restUpload, uploadAllowedMiddleware } from '../src/server/upload.js'
 import cookieParser from 'cookie-parser'
-import { rest } from '../src/server/rest'
+import { rest } from '../src/server/rest.js'
 
 const app = express()
 app.disable('x-powered-by')
diff --git a/packages/api/tests/db-manager.ts b/packages/api/tests/db-manager.ts
index 0394cb01a..66420f12d 100644
--- a/packages/api/tests/db-manager.ts
+++ b/packages/api/tests/db-manager.ts
@@ -1,7 +1,7 @@
 import { join } from 'path'
 
-import { idGenerate } from '../src/database/models/_format/id-create'
-import { knexInstanceSet } from '../src/knex'
+import { idGenerate } from '../src/database/models/_format/id-create.js'
+import { knexInstanceSet } from '../src/knex.js'
 import knex, { Knex } from 'knex'
 import { Client } from 'pg'
 import { knexSnakeCaseMappers, Model } from 'objection'
@@ -38,11 +38,11 @@ class DbManager {
 
     this.knexInstance = this.getKnex()
     if (newDatabase) {
-      await this.knexInstance.raw('CREATE EXTENSION postgis')
+      await this.knexInstance!.raw('CREATE EXTENSION postgis')
     }
-    Model.knex(this.knexInstance)
-    knexInstanceSet(this.knexInstance)
-    await this.knexInstance.migrate.latest()
+    Model.knex(this.knexInstance!)
+    knexInstanceSet(this.knexInstance!)
+    await this.knexInstance!.migrate.latest()
   }
 
   private getKnex() {
@@ -56,7 +56,9 @@ class DbManager {
         password: DbManager.getPgPassword()
       },
       migrations: {
-        directory: [join(__dirname, '../src/knex/migrations-schema')]
+        directory: [join(__dirname, '../src/knex/migrations-schema')],
+        loadExtensions: ['.ts'],
+        extension: 'ts'
       },
       seeds: {
         directory: join(__dirname, '../src/knex/seeds')
diff --git a/packages/api/tests/setup.ts b/packages/api/tests/setup.ts
deleted file mode 100644
index 4f00a626e..000000000
--- a/packages/api/tests/setup.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import 'dotenv/config'
-
-import { mailjet } from '../src/tools/api-mailjet'
-
-export default async () => {
-  // https://github.com/mailjet/mailjet-apiv3-nodejs#disable-api-call
-  mailjet.post('send', { version: 'v3.1', perform_api_call: false })
-}
diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json
index 7d37fdd1d..6e25e5c97 100644
--- a/packages/api/tsconfig.json
+++ b/packages/api/tsconfig.json
@@ -4,10 +4,10 @@
     "allowSyntheticDefaultImports": true,
     "alwaysStrict": true,
     "esModuleInterop": true,
-    "inlineSources": true,
+    "inlineSources": false,
     "lib": ["es2020", "dom"],
-    "module": "commonjs",
-    "moduleResolution": "node",
+    "module": "ES2020",
+    "moduleResolution": "Node",
     "noFallthroughCasesInSwitch": true,
     "noImplicitAny": true,
     "noImplicitReturns": true,
@@ -15,10 +15,11 @@
     "outDir": "dist",
     "strict": true,
     "strictNullChecks": true,
-    "sourceMap": true,
+    "sourceMap": false,
     "target": "ES2020",
     "types": ["node"],
     "resolveJsonModule": true,
+    "noEmit": true,
     "paths": {
       "geojson-rewind": ["./src/@types/geojson-rewind"],
       "graphql-fields": ["./src/@types/graphql-fields"],
@@ -28,7 +29,5 @@
       "turf-center": ["./src/@types/turf-center"],
       "tus-node-server": ["./src/@types/tus-node-server"]
     }
-  },
-  "exclude": ["node_modules", "**/__mocks__/*"],
-  "include": ["src/**/*", "sources/**/*", "../common/src/**/*"]
+  }
 }
diff --git a/packages/api/vitest.integration.config.ts b/packages/api/vitest.integration.config.ts
index 446b77ea1..c71399eac 100644
--- a/packages/api/vitest.integration.config.ts
+++ b/packages/api/vitest.integration.config.ts
@@ -5,6 +5,7 @@ export default defineConfig({
     include: ['**/*.test.integration.ts'],
     threads: false,
     setupFiles: '../tests/vitestSetup.ts',
-    testTimeout: 10000
+    testTimeout: 10000,
+    hookTimeout: 30000
   }
 })
diff --git a/packages/common/package.json b/packages/common/package.json
index 0c806383a..ef971f78b 100644
--- a/packages/common/package.json
+++ b/packages/common/package.json
@@ -3,6 +3,7 @@
   "version": "1.0.0",
   "description": "Le cadastre minier numérique ouvert",
   "private": true,
+  "type": "module",
   "scripts": {
     "test": "vitest --environment node --root src/",
     "format": "prettier --write src",
diff --git a/packages/common/src/date.test.ts b/packages/common/src/date.test.ts
index de3e3c413..2139ae30c 100644
--- a/packages/common/src/date.test.ts
+++ b/packages/common/src/date.test.ts
@@ -1,4 +1,4 @@
-import { anneePrecedente, anneeSuivante, datesDiffInDays, daysBetween, getAnnee, isAnnee, toCaminoDate, valideAnnee } from './date'
+import { anneePrecedente, anneeSuivante, datesDiffInDays, daysBetween, getAnnee, isAnnee, toCaminoDate, toCaminoAnnee } from './date.js'
 import { test, expect } from 'vitest'
 test.each([
   ['2020-06-02T13:35:11.366Z', '2021-06-03T13:35:11.366Z', 366],
@@ -25,14 +25,14 @@ test('isAnnee', () => {
   expect(isAnnee('20220')).toBe(false)
 })
 
-test('valideAnnee', () => {
-  expect(valideAnnee('2022')).toBe('2022')
-  expect(valideAnnee('1812')).toBe('1812')
-  expect(valideAnnee(2022)).toBe('2022')
-  expect(valideAnnee(1812)).toBe('1812')
-  expect(() => valideAnnee('toto')).toThrowErrorMatchingInlineSnapshot(`"l'année toto n'est pas une année valide"`)
-  expect(() => valideAnnee('12')).toThrowErrorMatchingInlineSnapshot(`"l'année 12 n'est pas une année valide"`)
-  expect(() => valideAnnee('20220')).toThrowErrorMatchingInlineSnapshot(`"l'année 20220 n'est pas une année valide"`)
+test('toCaminoAnnee', () => {
+  expect(toCaminoAnnee('2022')).toBe('2022')
+  expect(toCaminoAnnee('1812')).toBe('1812')
+  expect(toCaminoAnnee(2022)).toBe('2022')
+  expect(toCaminoAnnee(1812)).toBe('1812')
+  expect(() => toCaminoAnnee('toto')).toThrowErrorMatchingInlineSnapshot(`"l'année toto n'est pas une année valide"`)
+  expect(() => toCaminoAnnee('12')).toThrowErrorMatchingInlineSnapshot(`"l'année 12 n'est pas une année valide"`)
+  expect(() => toCaminoAnnee('20220')).toThrowErrorMatchingInlineSnapshot(`"l'année 20220 n'est pas une année valide"`)
 })
 
 test('daysBetween', () => {
@@ -44,8 +44,8 @@ test('daysBetween', () => {
   expect(daysBetween(toCaminoDate('2021-01-02'), toCaminoDate('2021-01-01'))).toBe(-1)
 })
 test('anneeSuivante', () => {
-  expect(anneeSuivante(valideAnnee('2022'))).toBe(valideAnnee('2023'))
+  expect(anneeSuivante(toCaminoAnnee('2022'))).toBe(toCaminoAnnee('2023'))
 })
 test('anneePrecedente', () => {
-  expect(anneePrecedente(valideAnnee('2022'))).toBe(valideAnnee('2021'))
+  expect(anneePrecedente(toCaminoAnnee('2022'))).toBe(toCaminoAnnee('2021'))
 })
diff --git a/packages/common/src/date.ts b/packages/common/src/date.ts
index b977db5b3..210b0bbc9 100644
--- a/packages/common/src/date.ts
+++ b/packages/common/src/date.ts
@@ -10,6 +10,7 @@ export const daysBetween = (a: CaminoDate, b: CaminoDate) => {
 }
 
 export type CaminoDate = string & { __camino: 'Date' }
+export type CaminoDateFormated = string & { __camino: 'DateFormated' }
 
 const checkValidCaminoDate = (str: string): str is CaminoDate => {
   return str.match(/^\d{4}-\d{2}-\d{2}$/) !== null
@@ -34,7 +35,11 @@ export const toCaminoDate = (date: Date | string): CaminoDate => {
 export type CaminoAnnee = string & { __camino: 'Annee' }
 
 export const getAnnee = (date: CaminoDate): CaminoAnnee => {
-  return valideAnnee(date.substring(0, 4))
+  return toCaminoAnnee(date.substring(0, 4))
+}
+
+export const dateFormat = (date: CaminoDate): CaminoDateFormated => {
+  return `${date.substring(8)}—${date.substring(5, 7)}-${date.substring(0, 4)}` as CaminoDateFormated
 }
 
 export const getCurrent = () => toCaminoDate(new Date())
@@ -44,8 +49,8 @@ export const isAnnee = (annee: string): annee is CaminoAnnee => {
   return annee.match(/^\d{4}$/) !== null
 }
 
-export const anneeSuivante = (annee: CaminoAnnee): CaminoAnnee => valideAnnee(Number(annee) + 1)
-export const anneePrecedente = (annee: CaminoAnnee): CaminoAnnee => valideAnnee(Number(annee) - 1)
+export const anneeSuivante = (annee: CaminoAnnee): CaminoAnnee => toCaminoAnnee(Number(annee) + 1)
+export const anneePrecedente = (annee: CaminoAnnee): CaminoAnnee => toCaminoAnnee(Number(annee) - 1)
 
 export function checkValideAnnee(annee: string): asserts annee is CaminoAnnee {
   if (!isAnnee(annee)) {
@@ -53,9 +58,9 @@ export function checkValideAnnee(annee: string): asserts annee is CaminoAnnee {
   }
 }
 
-export function valideAnnee(annee: string | number): CaminoAnnee {
+export function toCaminoAnnee(annee: string | number): CaminoAnnee {
   if (typeof annee === 'number') {
-    return valideAnnee(annee.toString(10))
+    return toCaminoAnnee(annee.toString(10))
   }
   checkValideAnnee(annee)
 
diff --git a/packages/common/src/entreprise.ts b/packages/common/src/entreprise.ts
index 84e25bcc3..d2d2b92c8 100644
--- a/packages/common/src/entreprise.ts
+++ b/packages/common/src/entreprise.ts
@@ -1,4 +1,4 @@
-import { CaminoDate } from './date'
+import { CaminoDate } from './date.js'
 
 export type EntrepriseId = string & { __camino: 'entrepriseId' }
 
diff --git a/packages/common/src/etape.ts b/packages/common/src/etape.ts
index 091b11206..01df66fa8 100644
--- a/packages/common/src/etape.ts
+++ b/packages/common/src/etape.ts
@@ -1,7 +1,7 @@
-import { CaminoDate } from './date'
-import { EntrepriseId } from './entreprise'
-import { EtapeTypeId } from './static/etapesTypes'
-import { SubstanceLegaleId } from './static/substancesLegales'
+import { CaminoDate } from './date.js'
+import { EntrepriseId } from './entreprise.js'
+import { EtapeTypeId } from './static/etapesTypes.js'
+import { SubstanceLegaleId } from './static/substancesLegales.js'
 
 export type HeritageProp<T> =
   | {
diff --git a/packages/common/src/fiscalite.test.ts b/packages/common/src/fiscalite.test.ts
index 1939d99c4..ce75bdfa8 100644
--- a/packages/common/src/fiscalite.test.ts
+++ b/packages/common/src/fiscalite.test.ts
@@ -1,4 +1,4 @@
-import { fiscaliteVisible, fraisGestion, UserFiscalite } from './fiscalite'
+import { fiscaliteVisible, fraisGestion, UserFiscalite } from './fiscalite.js'
 import { test, expect } from 'vitest'
 
 test('fraisGestion', () => {
diff --git a/packages/common/src/fiscalite.ts b/packages/common/src/fiscalite.ts
index d9b842cb0..85bfc1b2a 100644
--- a/packages/common/src/fiscalite.ts
+++ b/packages/common/src/fiscalite.ts
@@ -1,7 +1,7 @@
-import { isAdministration, isEntreprise, isSuper, Role } from './roles'
-import { AdministrationId } from './static/administrations'
-import { DOMAINES_IDS } from './static/domaines'
-import { CommonTitre } from './titres'
+import { isAdministration, isEntreprise, isSuper, Role } from './roles.js'
+import { AdministrationId } from './static/administrations.js'
+import { DOMAINES_IDS } from './static/domaines.js'
+import { CommonTitre } from './titres.js'
 
 export type Fiscalite = FiscaliteGuyane | FiscaliteFrance
 export interface FiscaliteFrance {
diff --git a/packages/common/src/permissions/administrations.test.ts b/packages/common/src/permissions/administrations.test.ts
index 71e77de0d..61ac28217 100644
--- a/packages/common/src/permissions/administrations.test.ts
+++ b/packages/common/src/permissions/administrations.test.ts
@@ -1,6 +1,6 @@
-import { canReadActivitesTypesEmails } from './administrations'
-import { User } from '../roles'
-import { ADMINISTRATION_IDS } from '../static/administrations'
+import { canReadActivitesTypesEmails } from './administrations.js'
+import { User } from '../roles.js'
+import { ADMINISTRATION_IDS } from '../static/administrations.js'
 import { test, expect } from 'vitest'
 
 test.each<[User, boolean]>([
diff --git a/packages/common/src/permissions/administrations.ts b/packages/common/src/permissions/administrations.ts
index 19eecb832..6015cc81d 100644
--- a/packages/common/src/permissions/administrations.ts
+++ b/packages/common/src/permissions/administrations.ts
@@ -1,6 +1,6 @@
-import { isAdministration, isSuper, User } from '../roles'
-import { AdministrationId, Administrations, sortedAdministrations } from '../static/administrations'
-import { Departements } from '../static/departement'
+import { isAdministration, isSuper, User } from '../roles.js'
+import { AdministrationId, Administrations, sortedAdministrations } from '../static/administrations.js'
+import { Departements } from '../static/departement.js'
 
 export const canReadActivitesTypesEmails = (user: User, administrationId: AdministrationId) => {
   if (isSuper(user) || (isAdministration(user) && Administrations[user.administrationId].typeId === 'min')) {
diff --git a/packages/common/src/permissions/titres-etapes.test.ts b/packages/common/src/permissions/titres-etapes.test.ts
index 36507e698..ac1e14f9c 100644
--- a/packages/common/src/permissions/titres-etapes.test.ts
+++ b/packages/common/src/permissions/titres-etapes.test.ts
@@ -1,9 +1,9 @@
-import { TitreTypeId } from '../static/titresTypes'
-import { EtapeTypeId } from '../static/etapesTypes'
-import { DemarcheTypeId } from '../static/demarchesTypes'
-import { canEditAmodiataires, canEditDates, canEditDuree, canEditTitulaires, dureeOptionalCheck } from './titres-etapes'
-import { User } from '../roles'
-import { ADMINISTRATION_IDS } from '../static/administrations'
+import { TitreTypeId } from '../static/titresTypes.js'
+import { EtapeTypeId } from '../static/etapesTypes.js'
+import { DemarcheTypeId } from '../static/demarchesTypes.js'
+import { canEditAmodiataires, canEditDates, canEditDuree, canEditTitulaires, dureeOptionalCheck } from './titres-etapes.js'
+import { User } from '../roles.js'
+import { ADMINISTRATION_IDS } from '../static/administrations.js'
 import { test, expect } from 'vitest'
 
 test.each<{ etapeTypeId: EtapeTypeId; demarcheTypeId: DemarcheTypeId; titreTypeId: TitreTypeId; optional: boolean }>([
diff --git a/packages/common/src/permissions/titres-etapes.ts b/packages/common/src/permissions/titres-etapes.ts
index 364831148..3c045a256 100644
--- a/packages/common/src/permissions/titres-etapes.ts
+++ b/packages/common/src/permissions/titres-etapes.ts
@@ -1,7 +1,7 @@
-import { ETAPES_TYPES, EtapeTypeId } from '../static/etapesTypes'
-import { TitreTypeId } from '../static/titresTypes'
-import { DEMARCHES_TYPES_IDS, DemarcheTypeId, isDemarcheTypeWithPhase } from '../static/demarchesTypes'
-import { isAdministrationAdmin, isAdministrationEditeur, isSuper, User } from '../roles'
+import { ETAPES_TYPES, EtapeTypeId } from '../static/etapesTypes.js'
+import { TitreTypeId } from '../static/titresTypes.js'
+import { DEMARCHES_TYPES_IDS, DemarcheTypeId, isDemarcheTypeWithPhase } from '../static/demarchesTypes.js'
+import { isAdministrationAdmin, isAdministrationEditeur, isSuper, User } from '../roles.js'
 
 export const dureeOptionalCheck = (etapeTypeId: EtapeTypeId, demarcheTypeId: DemarcheTypeId, titreTypeId: TitreTypeId): boolean => {
   if (titreTypeId !== 'axm' && titreTypeId !== 'arm') {
diff --git a/packages/common/src/permissions/titres.test.ts b/packages/common/src/permissions/titres.test.ts
index 428cb62eb..73bd9f82d 100644
--- a/packages/common/src/permissions/titres.test.ts
+++ b/packages/common/src/permissions/titres.test.ts
@@ -1,7 +1,7 @@
-import { canCreateTitre, canLinkTitres, getLinkConfig } from './titres'
-import { TitresTypesIds, TitreTypeId } from '../static/titresTypes'
-import { User } from '../roles'
-import { ADMINISTRATION_IDS, AdministrationId } from '../static/administrations'
+import { canCreateTitre, canLinkTitres, getLinkConfig } from './titres.js'
+import { TitresTypesIds, TitreTypeId } from '../static/titresTypes.js'
+import { User } from '../roles.js'
+import { ADMINISTRATION_IDS, AdministrationId } from '../static/administrations.js'
 import { test, expect } from 'vitest'
 
 test('getTitreFromTypeId pas de fusions', () => {
diff --git a/packages/common/src/permissions/titres.ts b/packages/common/src/permissions/titres.ts
index 4cff0d453..ac975b978 100644
--- a/packages/common/src/permissions/titres.ts
+++ b/packages/common/src/permissions/titres.ts
@@ -1,8 +1,8 @@
-import { isTitreType, TitresTypes, TitreTypeId } from '../static/titresTypes'
-import { DemarcheTypeId } from '../static/demarchesTypes'
-import { isAdministrationAdmin, isAdministrationEditeur, isBureauDEtudes, isEntreprise, isSuper, Role, User } from '../roles'
-import { AdministrationId } from '../static/administrations'
-import { isGestionnaire } from '../static/administrationsTitresTypes'
+import { isTitreType, TitresTypes, TitreTypeId } from '../static/titresTypes.js'
+import { DemarcheTypeId } from '../static/demarchesTypes.js'
+import { isAdministrationAdmin, isAdministrationEditeur, isBureauDEtudes, isEntreprise, isSuper, Role, User } from '../roles.js'
+import { AdministrationId } from '../static/administrations.js'
+import { isGestionnaire } from '../static/administrationsTitresTypes.js'
 
 export const getLinkConfig = (typeId: TitreTypeId, demarches: { typeId: DemarcheTypeId }[]): { count: 'single' | 'multiple'; typeId: TitreTypeId } | null => {
   switch (typeId) {
diff --git a/packages/common/src/roles.test.ts b/packages/common/src/roles.test.ts
index 1ddec3359..8cc61f126 100644
--- a/packages/common/src/roles.test.ts
+++ b/packages/common/src/roles.test.ts
@@ -1,5 +1,5 @@
-import { isEntreprise, isSuper, isAdministration, isAdministrationEditeur, isAdministrationAdmin, isAdministrationLecteur, isDefault, isRole, ROLES, isBureauDEtudes } from './roles'
-import { ADMINISTRATION_IDS } from './static/administrations'
+import { isEntreprise, isSuper, isAdministration, isAdministrationEditeur, isAdministrationAdmin, isAdministrationLecteur, isDefault, isRole, ROLES, isBureauDEtudes } from './roles.js'
+import { ADMINISTRATION_IDS } from './static/administrations.js'
 import { test, expect, describe } from 'vitest'
 const administrationId = ADMINISTRATION_IDS.CACEM
 describe('role', () => {
diff --git a/packages/common/src/roles.ts b/packages/common/src/roles.ts
index e8968344d..680430c3a 100644
--- a/packages/common/src/roles.ts
+++ b/packages/common/src/roles.ts
@@ -1,5 +1,5 @@
-import { AdministrationId } from './static/administrations'
-import { isNotNullNorUndefined } from './typescript-tools'
+import { AdministrationId } from './static/administrations.js'
+import { isNotNullNorUndefined } from './typescript-tools.js'
 export const ROLES = ['super', 'admin', 'editeur', 'lecteur', 'entreprise', 'bureau d’études', 'defaut'] as const
 export type Role = typeof ROLES[number]
 type UserEntreprise = { role: 'entreprise'; administrationId: undefined; entreprises: string[] }
diff --git a/packages/common/src/static/administrations.test.ts b/packages/common/src/static/administrations.test.ts
index 8d1099103..d6647cef9 100644
--- a/packages/common/src/static/administrations.test.ts
+++ b/packages/common/src/static/administrations.test.ts
@@ -1,4 +1,4 @@
-import { ADMINISTRATION_IDS, isAdministrationId, sortedAdministrationTypes } from './administrations'
+import { ADMINISTRATION_IDS, isAdministrationId, sortedAdministrationTypes } from './administrations.js'
 import { test, expect } from 'vitest'
 
 test('sortedAdministrationTypes', () => {
diff --git a/packages/common/src/static/administrations.ts b/packages/common/src/static/administrations.ts
index cd00ec936..d46a9d185 100644
--- a/packages/common/src/static/administrations.ts
+++ b/packages/common/src/static/administrations.ts
@@ -1,6 +1,6 @@
-import { Definition } from '../definition'
-import { RegionId } from './region'
-import { DepartementId } from './departement'
+import { Definition } from '../definition.js'
+import { RegionId } from './region.js'
+import { DepartementId } from './departement.js'
 
 export const ADMINISTRATION_TYPE_IDS_ARRAY = ['aut', 'dea', 'dre', 'min', 'ope', 'pre'] as const
 
diff --git a/packages/common/src/static/administrationsTitresTypes.test.ts b/packages/common/src/static/administrationsTitresTypes.test.ts
index 3d3929f39..80458cdd0 100644
--- a/packages/common/src/static/administrationsTitresTypes.test.ts
+++ b/packages/common/src/static/administrationsTitresTypes.test.ts
@@ -1,6 +1,6 @@
-import { AdministrationId, ADMINISTRATION_IDS } from './administrations'
-import { isAssociee, isGestionnaire, getTitreTypeIdsByAdministration } from './administrationsTitresTypes'
-import { TitresTypesIds, TitreTypeId } from './titresTypes'
+import { AdministrationId, ADMINISTRATION_IDS } from './administrations.js'
+import { isAssociee, isGestionnaire, getTitreTypeIdsByAdministration } from './administrationsTitresTypes.js'
+import { TitresTypesIds, TitreTypeId } from './titresTypes.js'
 import { test, expect } from 'vitest'
 
 interface AdministrationsWithTitreTypeId {
diff --git a/packages/common/src/static/administrationsTitresTypes.ts b/packages/common/src/static/administrationsTitresTypes.ts
index 967184345..eda2093b5 100644
--- a/packages/common/src/static/administrationsTitresTypes.ts
+++ b/packages/common/src/static/administrationsTitresTypes.ts
@@ -1,6 +1,6 @@
-import { getKeys, PartialRecord } from '../typescript-tools'
-import { AdministrationId, isAdministrationId } from './administrations'
-import { isTitreType, TitreTypeId } from './titresTypes'
+import { getKeys, PartialRecord } from '../typescript-tools.js'
+import { AdministrationId, isAdministrationId } from './administrations.js'
+import { isTitreType, TitreTypeId } from './titresTypes.js'
 
 type AdministrationTitreType = PartialRecord<
   TitreTypeId,
diff --git a/packages/common/src/static/demarchesStatuts.ts b/packages/common/src/static/demarchesStatuts.ts
index ca0b2fd96..02b341fa8 100644
--- a/packages/common/src/static/demarchesStatuts.ts
+++ b/packages/common/src/static/demarchesStatuts.ts
@@ -1,5 +1,5 @@
-import { Definition } from '../definition'
-import { Couleur } from './couleurs'
+import { Definition } from '../definition.js'
+import { Couleur } from './couleurs.js'
 
 export const DemarchesStatutsIds = {
   Accepte: 'acc',
diff --git a/packages/common/src/static/demarchesTypes.test.ts b/packages/common/src/static/demarchesTypes.test.ts
index 5ed1a2b79..b8ff9b192 100644
--- a/packages/common/src/static/demarchesTypes.test.ts
+++ b/packages/common/src/static/demarchesTypes.test.ts
@@ -1,4 +1,4 @@
-import { DemarchesTypesIds, DEMARCHES_TYPES_IDS, isDemarcheTypeId, isDemarcheTypeOctroi, isDemarcheTypeWithPhase } from './demarchesTypes'
+import { DemarchesTypesIds, DEMARCHES_TYPES_IDS, isDemarcheTypeId, isDemarcheTypeOctroi, isDemarcheTypeWithPhase } from './demarchesTypes.js'
 import { test, expect } from 'vitest'
 
 test('isDemarcheTypeId', () => {
diff --git a/packages/common/src/static/demarchesTypes.ts b/packages/common/src/static/demarchesTypes.ts
index 7a5b093df..583c787f8 100644
--- a/packages/common/src/static/demarchesTypes.ts
+++ b/packages/common/src/static/demarchesTypes.ts
@@ -1,4 +1,4 @@
-import { Definition } from '../definition'
+import { Definition } from '../definition.js'
 
 interface DemarchesDefinition<T> extends Definition<T> {
   titulaires?: boolean
diff --git a/packages/common/src/static/departement.test.ts b/packages/common/src/static/departement.test.ts
index ef2b1fce7..b788bb7fa 100644
--- a/packages/common/src/static/departement.test.ts
+++ b/packages/common/src/static/departement.test.ts
@@ -1,4 +1,4 @@
-import { checkCodePostal, isDepartementId, toDepartementId, departementsMetropole } from './departement'
+import { checkCodePostal, isDepartementId, toDepartementId, departementsMetropole } from './departement.js'
 import { test, expect } from 'vitest'
 
 test('isDepartementId', () => {
diff --git a/packages/common/src/static/departement.ts b/packages/common/src/static/departement.ts
index 958fbbcdc..78edca647 100644
--- a/packages/common/src/static/departement.ts
+++ b/packages/common/src/static/departement.ts
@@ -1,5 +1,5 @@
-import { PAYS_IDS } from './pays'
-import { RegionId, Regions } from './region'
+import { PAYS_IDS } from './pays.js'
+import { RegionId, Regions } from './region.js'
 
 export const DEPARTEMENT_IDS = {
   Ain: '01',
diff --git a/packages/common/src/static/devise.ts b/packages/common/src/static/devise.ts
index 6171730b3..58b3d1d9d 100644
--- a/packages/common/src/static/devise.ts
+++ b/packages/common/src/static/devise.ts
@@ -1,4 +1,4 @@
-import { Definition } from '../definition'
+import { Definition } from '../definition.js'
 
 export const DEVISES_IDS = {
   Euros: 'EUR',
diff --git a/packages/common/src/static/documentsTypes.test.ts b/packages/common/src/static/documentsTypes.test.ts
index 86181cb4b..5596fd2ae 100644
--- a/packages/common/src/static/documentsTypes.test.ts
+++ b/packages/common/src/static/documentsTypes.test.ts
@@ -1,4 +1,4 @@
-import { isDocumentTypeId } from './documentsTypes'
+import { isDocumentTypeId } from './documentsTypes.js'
 import { test, expect } from 'vitest'
 
 test('isDocumentTypeId', () => {
diff --git a/packages/common/src/static/domaines.test.ts b/packages/common/src/static/domaines.test.ts
index ca4b26a21..5f0e16ae5 100644
--- a/packages/common/src/static/domaines.test.ts
+++ b/packages/common/src/static/domaines.test.ts
@@ -1,4 +1,4 @@
-import { Domaines, DOMAINES_IDS, isDomaineId } from './domaines'
+import { Domaines, DOMAINES_IDS, isDomaineId } from './domaines.js'
 import { test, expect } from 'vitest'
 
 test('domaine', () => {
diff --git a/packages/common/src/static/domaines.ts b/packages/common/src/static/domaines.ts
index 6f39c0d0a..801cf251a 100644
--- a/packages/common/src/static/domaines.ts
+++ b/packages/common/src/static/domaines.ts
@@ -1,4 +1,4 @@
-import { Definition } from '../definition'
+import { Definition } from '../definition.js'
 
 export const DOMAINES_IDS = {
   METAUX: 'm',
diff --git a/packages/common/src/static/etapesStatuts.ts b/packages/common/src/static/etapesStatuts.ts
index 9eabc5196..b860a322d 100644
--- a/packages/common/src/static/etapesStatuts.ts
+++ b/packages/common/src/static/etapesStatuts.ts
@@ -1,4 +1,4 @@
-import { Couleur } from './couleurs'
+import { Couleur } from './couleurs.js'
 
 export const ETAPES_STATUTS = {
   ACCEPTE: 'acc',
diff --git a/packages/common/src/static/etapesTypes.ts b/packages/common/src/static/etapesTypes.ts
index 374b6fc17..78b818b16 100644
--- a/packages/common/src/static/etapesTypes.ts
+++ b/packages/common/src/static/etapesTypes.ts
@@ -1,4 +1,4 @@
-import { Definition } from '../definition'
+import { Definition } from '../definition.js'
 
 export const ETAPES_TYPES = {
   avisDeDirectionRegionaleDesAffairesCulturelles: 'aac',
diff --git a/packages/common/src/static/etapesTypesEtapesStatuts.test.ts b/packages/common/src/static/etapesTypesEtapesStatuts.test.ts
index cfb95405b..c764ad832 100644
--- a/packages/common/src/static/etapesTypesEtapesStatuts.test.ts
+++ b/packages/common/src/static/etapesTypesEtapesStatuts.test.ts
@@ -1,6 +1,6 @@
-import { EtapesStatuts, EtapeStatutKey, ETAPES_STATUTS, isEtapeStatutKey } from './etapesStatuts'
-import { ETAPES_TYPES } from './etapesTypes'
-import { EtapesTypesEtapesStatuts, EtapeTypeEtapeStatut, getEtapesStatuts } from './etapesTypesEtapesStatuts'
+import { EtapesStatuts, EtapeStatutKey, ETAPES_STATUTS, isEtapeStatutKey } from './etapesStatuts.js'
+import { ETAPES_TYPES } from './etapesTypes.js'
+import { EtapesTypesEtapesStatuts, EtapeTypeEtapeStatut, getEtapesStatuts } from './etapesTypesEtapesStatuts.js'
 import { test, expect } from 'vitest'
 
 test('getEtapesStatuts', () => {
diff --git a/packages/common/src/static/etapesTypesEtapesStatuts.ts b/packages/common/src/static/etapesTypesEtapesStatuts.ts
index 69190612a..fd257ee62 100644
--- a/packages/common/src/static/etapesTypesEtapesStatuts.ts
+++ b/packages/common/src/static/etapesTypesEtapesStatuts.ts
@@ -1,5 +1,5 @@
-import { EtapesStatuts, EtapeStatut, EtapeStatutId } from './etapesStatuts'
-import { ETAPES_TYPES, EtapeTypeId } from './etapesTypes'
+import { EtapesStatuts, EtapeStatut, EtapeStatutId } from './etapesStatuts.js'
+import { ETAPES_TYPES, EtapeTypeId } from './etapesTypes.js'
 
 export interface EtapeTypeEtapeStatut {
   etapeStatutId: EtapeStatutId
diff --git a/packages/common/src/static/facades.test.ts b/packages/common/src/static/facades.test.ts
index 14bd0728d..0affdaec0 100644
--- a/packages/common/src/static/facades.test.ts
+++ b/packages/common/src/static/facades.test.ts
@@ -1,5 +1,5 @@
-import { getDepartementsByIds, getSecteurMaritime } from './facades'
-import { DEPARTEMENT_IDS } from './departement'
+import { getDepartementsByIds, getSecteurMaritime } from './facades.js'
+import { DEPARTEMENT_IDS } from './departement.js'
 import { test, expect } from 'vitest'
 
 test('getDepartementsByIds', () => {
diff --git a/packages/common/src/static/facades.ts b/packages/common/src/static/facades.ts
index 7a5329717..8b5056e29 100644
--- a/packages/common/src/static/facades.ts
+++ b/packages/common/src/static/facades.ts
@@ -1,5 +1,5 @@
-import { DepartementId, DEPARTEMENT_IDS } from './departement'
-import { getEntries, getKeys, onlyUnique } from '../typescript-tools'
+import { DepartementId, DEPARTEMENT_IDS } from './departement.js'
+import { getEntries, getKeys, onlyUnique } from '../typescript-tools.js'
 
 const facades = {
   'Manche Est - Mer du Nord': {
diff --git a/packages/common/src/static/frequence.test.ts b/packages/common/src/static/frequence.test.ts
index 3da225985..78e32afc9 100644
--- a/packages/common/src/static/frequence.test.ts
+++ b/packages/common/src/static/frequence.test.ts
@@ -1,4 +1,4 @@
-import { FREQUENCES_IDS, getMonth, getPeriode } from './frequence'
+import { FREQUENCES_IDS, getMonth, getPeriode } from './frequence.js'
 import { test, expect } from 'vitest'
 
 test('getPeriode', () => {
diff --git a/packages/common/src/static/pays.test.ts b/packages/common/src/static/pays.test.ts
index 33d89dbfe..6192e44e0 100644
--- a/packages/common/src/static/pays.test.ts
+++ b/packages/common/src/static/pays.test.ts
@@ -1,4 +1,4 @@
-import { isPaysId, PAYS_IDS } from './pays'
+import { isPaysId, PAYS_IDS } from './pays.js'
 import { test, expect } from 'vitest'
 
 test('isPaysId', () => {
diff --git a/packages/common/src/static/phasesStatuts.ts b/packages/common/src/static/phasesStatuts.ts
index d10ff03c8..c0fa9b9dd 100644
--- a/packages/common/src/static/phasesStatuts.ts
+++ b/packages/common/src/static/phasesStatuts.ts
@@ -1,4 +1,4 @@
-import { Couleur } from './couleurs'
+import { Couleur } from './couleurs.js'
 
 export const PHASES_STATUTS_IDS = {
   Echu: 'ech',
diff --git a/packages/common/src/static/region.test.ts b/packages/common/src/static/region.test.ts
index b0cc5ed2b..84876f420 100644
--- a/packages/common/src/static/region.test.ts
+++ b/packages/common/src/static/region.test.ts
@@ -1,4 +1,4 @@
-import { isRegionId } from './region'
+import { isRegionId } from './region.js'
 import { test, expect } from 'vitest'
 
 test('isRegionId', () => {
diff --git a/packages/common/src/static/region.ts b/packages/common/src/static/region.ts
index 1080f4060..37ae146fc 100644
--- a/packages/common/src/static/region.ts
+++ b/packages/common/src/static/region.ts
@@ -1,4 +1,4 @@
-import { PaysId } from './pays'
+import { PaysId } from './pays.js'
 
 export const REGION_IDS = {
   Guadeloupe: '01',
diff --git a/packages/common/src/static/substancesFiscales.test.ts b/packages/common/src/static/substancesFiscales.test.ts
index 8cce74b84..37029161b 100644
--- a/packages/common/src/static/substancesFiscales.test.ts
+++ b/packages/common/src/static/substancesFiscales.test.ts
@@ -1,4 +1,4 @@
-import { isSubstanceFiscale, substancesFiscalesBySubstanceLegale } from './substancesFiscales'
+import { isSubstanceFiscale, substancesFiscalesBySubstanceLegale } from './substancesFiscales.js'
 import { test, expect } from 'vitest'
 
 test('isSubstanceFiscale', () => {
diff --git a/packages/common/src/static/substancesFiscales.ts b/packages/common/src/static/substancesFiscales.ts
index d527fa118..b0da84b1a 100644
--- a/packages/common/src/static/substancesFiscales.ts
+++ b/packages/common/src/static/substancesFiscales.ts
@@ -1,5 +1,5 @@
-import { UniteId } from './unites'
-import { SubstanceLegaleId, SubstancesLegales } from './substancesLegales'
+import { UniteId } from './unites.js'
+import { SubstanceLegaleId, SubstancesLegales } from './substancesLegales.js'
 
 export const SUBSTANCES_FISCALES_IDS = {
   bauxite: 'aloh',
diff --git a/packages/common/src/static/substancesLegales.test.ts b/packages/common/src/static/substancesLegales.test.ts
index 200e85217..4825f29c9 100644
--- a/packages/common/src/static/substancesLegales.test.ts
+++ b/packages/common/src/static/substancesLegales.test.ts
@@ -1,4 +1,4 @@
-import { isSubstanceLegale } from './substancesLegales'
+import { isSubstanceLegale } from './substancesLegales.js'
 import { test, expect } from 'vitest'
 
 test('isSubstanceLegale', () => {
diff --git a/packages/common/src/static/substancesLegales.ts b/packages/common/src/static/substancesLegales.ts
index e945b85c7..c4662a66f 100644
--- a/packages/common/src/static/substancesLegales.ts
+++ b/packages/common/src/static/substancesLegales.ts
@@ -1,4 +1,4 @@
-import { DomaineId } from './domaines'
+import { DomaineId } from './domaines.js'
 
 export const SUBSTANCES_LEGALES_IDS = {
   'combustibles fossiles': 'cfxx',
diff --git a/packages/common/src/static/titresStatuts.ts b/packages/common/src/static/titresStatuts.ts
index a88c4df6e..0d073d9c6 100644
--- a/packages/common/src/static/titresStatuts.ts
+++ b/packages/common/src/static/titresStatuts.ts
@@ -1,5 +1,5 @@
-import { Couleur } from './couleurs'
-import { Definition } from '../definition'
+import { Couleur } from './couleurs.js'
+import { Definition } from '../definition.js'
 
 interface TitreStatutDefinition<T> extends Definition<T> {
   couleur: Couleur
diff --git a/packages/common/src/static/titresTypes.test.ts b/packages/common/src/static/titresTypes.test.ts
index 464b71655..d04ea67f4 100644
--- a/packages/common/src/static/titresTypes.test.ts
+++ b/packages/common/src/static/titresTypes.test.ts
@@ -1,5 +1,5 @@
-import { DomaineId, domainesIds } from './domaines'
-import { TitresTypesIds, isTitreType, toTitreTypeId, getTitreTypeType, getDomaineId, getTitreTypeTypeByDomaineId } from './titresTypes'
+import { DomaineId, domainesIds } from './domaines.js'
+import { TitresTypesIds, isTitreType, toTitreTypeId, getTitreTypeType, getDomaineId, getTitreTypeTypeByDomaineId } from './titresTypes.js'
 import { test, expect } from 'vitest'
 
 test('isTitreType', () => {
diff --git a/packages/common/src/static/titresTypes.ts b/packages/common/src/static/titresTypes.ts
index e47320e82..4ada742b0 100644
--- a/packages/common/src/static/titresTypes.ts
+++ b/packages/common/src/static/titresTypes.ts
@@ -1,5 +1,5 @@
-import { DomaineId, isDomaineId } from './domaines'
-import { isTitreTypeType, TitreTypeTypeId } from './titresTypesTypes'
+import { DomaineId, isDomaineId } from './domaines.js'
+import { isTitreTypeType, TitreTypeTypeId } from './titresTypesTypes.js'
 
 interface Definition<T> {
   id: T
diff --git a/packages/common/src/static/titresTypesTypes.test.ts b/packages/common/src/static/titresTypesTypes.test.ts
index 3c070b95e..affcaa603 100644
--- a/packages/common/src/static/titresTypesTypes.test.ts
+++ b/packages/common/src/static/titresTypesTypes.test.ts
@@ -1,4 +1,4 @@
-import { isTitreTypeType } from './titresTypesTypes'
+import { isTitreTypeType } from './titresTypesTypes.js'
 import { test, expect } from 'vitest'
 
 test('isTitreTypeType', () => {
diff --git a/packages/common/src/static/titresTypesTypes.ts b/packages/common/src/static/titresTypesTypes.ts
index 5515081e5..6200fe75e 100644
--- a/packages/common/src/static/titresTypesTypes.ts
+++ b/packages/common/src/static/titresTypesTypes.ts
@@ -1,4 +1,4 @@
-import { Definition } from '../definition'
+import { Definition } from '../definition.js'
 
 export const TITRES_TYPES_TYPES_IDS = {
   AUTORISATION_DE_PROSPECTION: 'ap',
diff --git a/packages/common/src/static/titresTypesTypes_domaine_titresStatuts.test.ts b/packages/common/src/static/titresTypesTypes_domaine_titresStatuts.test.ts
index ac7c296a8..7d36327dc 100644
--- a/packages/common/src/static/titresTypesTypes_domaine_titresStatuts.test.ts
+++ b/packages/common/src/static/titresTypesTypes_domaine_titresStatuts.test.ts
@@ -1,8 +1,8 @@
-import { DEMARCHES_TYPES_IDS } from './demarchesTypes'
-import { DOMAINES_IDS } from './domaines'
-import { TitresStatutIds } from './titresStatuts'
-import { TITRES_TYPES_TYPES_IDS } from './titresTypesTypes'
-import { titrePublicFind } from './titresTypesTypes_domaine_titresStatuts'
+import { DEMARCHES_TYPES_IDS } from './demarchesTypes.js'
+import { DOMAINES_IDS } from './domaines.js'
+import { TitresStatutIds } from './titresStatuts.js'
+import { TITRES_TYPES_TYPES_IDS } from './titresTypesTypes.js'
+import { titrePublicFind } from './titresTypesTypes_domaine_titresStatuts.js'
 import { test, expect, describe } from 'vitest'
 
 describe("publicité d'un titre", () => {
diff --git a/packages/common/src/static/titresTypesTypes_domaine_titresStatuts.ts b/packages/common/src/static/titresTypesTypes_domaine_titresStatuts.ts
index 1d7a80704..8d4d675cb 100644
--- a/packages/common/src/static/titresTypesTypes_domaine_titresStatuts.ts
+++ b/packages/common/src/static/titresTypesTypes_domaine_titresStatuts.ts
@@ -1,9 +1,9 @@
-import { isNotNullNorUndefined } from '../typescript-tools'
-import { DemarcheTypeId, isDemarcheTypeOctroi } from './demarchesTypes'
-import { DomaineId, DOMAINES_IDS, isDomaineId } from './domaines'
-import { TitresStatutIds, TitreStatutId } from './titresStatuts'
-import { TitreTypeId, toTitreTypeId } from './titresTypes'
-import { TITRES_TYPES_TYPES_IDS, TitreTypeTypeId, isTitreTypeType } from './titresTypesTypes'
+import { isNotNullNorUndefined } from '../typescript-tools.js'
+import { DemarcheTypeId, isDemarcheTypeOctroi } from './demarchesTypes.js'
+import { DomaineId, DOMAINES_IDS, isDomaineId } from './domaines.js'
+import { TitresStatutIds, TitreStatutId } from './titresStatuts.js'
+import { TitreTypeId, toTitreTypeId } from './titresTypes.js'
+import { TITRES_TYPES_TYPES_IDS, TitreTypeTypeId, isTitreTypeType } from './titresTypesTypes.js'
 
 export const titrePublicFind = (
   titreStatutId: TitreStatutId | null | undefined,
diff --git a/packages/common/src/static/titresTypes_demarchesTypes_etapesTypes.test.ts b/packages/common/src/static/titresTypes_demarchesTypes_etapesTypes.test.ts
index ff40a2703..0fc773a47 100644
--- a/packages/common/src/static/titresTypes_demarchesTypes_etapesTypes.test.ts
+++ b/packages/common/src/static/titresTypes_demarchesTypes_etapesTypes.test.ts
@@ -1,4 +1,4 @@
-import { getDocuments } from './titresTypes_demarchesTypes_etapesTypes'
+import { getDocuments } from './titresTypes_demarchesTypes_etapesTypes.js'
 import { test, expect } from 'vitest'
 
 test('getDocuments erreurs', () => {
diff --git a/packages/common/src/static/titresTypes_demarchesTypes_etapesTypes.ts b/packages/common/src/static/titresTypes_demarchesTypes_etapesTypes.ts
index 708e90b56..b2dbd47a6 100644
--- a/packages/common/src/static/titresTypes_demarchesTypes_etapesTypes.ts
+++ b/packages/common/src/static/titresTypes_demarchesTypes_etapesTypes.ts
@@ -1,10 +1,10 @@
-import { isNotNullNorUndefined, onlyUnique } from '../typescript-tools'
-import { DEMARCHES_TYPES_IDS, DemarcheTypeId, isDemarcheTypeId } from './demarchesTypes'
-import { DocumentsTypes, DOCUMENTS_TYPES_IDS, DocumentType, DocumentTypeId, isDocumentTypeId } from './documentsTypes'
-import { DomaineId, DOMAINES_IDS, isDomaineId } from './domaines'
-import { ETAPES_TYPES, EtapeTypeId, isEtapeTypeId } from './etapesTypes'
-import { isTitreTypeType, TITRES_TYPES_TYPES_IDS, TitreTypeTypeId } from './titresTypesTypes'
-import { TitreTypeId, toTitreTypeId } from './titresTypes'
+import { isNotNullNorUndefined, onlyUnique } from '../typescript-tools.js'
+import { DEMARCHES_TYPES_IDS, DemarcheTypeId, isDemarcheTypeId } from './demarchesTypes.js'
+import { DocumentsTypes, DOCUMENTS_TYPES_IDS, DocumentType, DocumentTypeId, isDocumentTypeId } from './documentsTypes.js'
+import { DomaineId, DOMAINES_IDS, isDomaineId } from './domaines.js'
+import { ETAPES_TYPES, EtapeTypeId, isEtapeTypeId } from './etapesTypes.js'
+import { isTitreTypeType, TITRES_TYPES_TYPES_IDS, TitreTypeTypeId } from './titresTypesTypes.js'
+import { TitreTypeId, toTitreTypeId } from './titresTypes.js'
 
 const EtapesTypesDocumentsTypes: { [key in EtapeTypeId]?: DocumentTypeId[] } = {
   [ETAPES_TYPES.avisDeDirectionRegionaleDesAffairesCulturelles]: [DOCUMENTS_TYPES_IDS.avisDesServicesCivilsEtMilitaires, DOCUMENTS_TYPES_IDS.avis],
diff --git a/packages/common/src/static/unites.test.ts b/packages/common/src/static/unites.test.ts
index 813b0b5e6..93b59727b 100644
--- a/packages/common/src/static/unites.test.ts
+++ b/packages/common/src/static/unites.test.ts
@@ -1,4 +1,4 @@
-import { fromUniteFiscaleToUnite } from './unites'
+import { fromUniteFiscaleToUnite } from './unites.js'
 import { test, expect } from 'vitest'
 
 test('fromUniteFiscaleToUnite', () => {
diff --git a/packages/common/src/statistiques.ts b/packages/common/src/statistiques.ts
index dc983b4d7..0d61965f1 100644
--- a/packages/common/src/statistiques.ts
+++ b/packages/common/src/statistiques.ts
@@ -1,9 +1,9 @@
-import { CaminoAnnee } from './date'
-import { AdministrationTypeId } from './static/administrations'
-import { RegionId } from './static/region'
-import { SDOMZoneIds } from './static/sdom'
-import { SUBSTANCES_FISCALES_IDS } from './static/substancesFiscales'
-import { TitresTypes } from './static/titresTypes'
+import { CaminoAnnee } from './date.js'
+import { AdministrationTypeId } from './static/administrations.js'
+import { RegionId } from './static/region.js'
+import { SDOMZoneIds } from './static/sdom.js'
+import { SUBSTANCES_FISCALES_IDS } from './static/substancesFiscales.js'
+import { TitresTypes } from './static/titresTypes.js'
 
 export interface QuantiteParMois {
   mois: string
diff --git a/packages/common/src/titres-references.ts b/packages/common/src/titres-references.ts
index 2d50d3649..6b025ce3d 100644
--- a/packages/common/src/titres-references.ts
+++ b/packages/common/src/titres-references.ts
@@ -1,4 +1,4 @@
-import { ReferenceTypeId } from './static/referencesTypes'
+import { ReferenceTypeId } from './static/referencesTypes.js'
 
 export interface TitreReference {
   referenceTypeId: ReferenceTypeId
diff --git a/packages/common/src/titres.ts b/packages/common/src/titres.ts
index c30feb4f9..7a9ea787d 100644
--- a/packages/common/src/titres.ts
+++ b/packages/common/src/titres.ts
@@ -1,9 +1,9 @@
-import { DomaineId } from './static/domaines'
-import { TitreTypeTypeId } from './static/titresTypesTypes'
-import { TitreStatutId } from './static/titresStatuts'
-import { TitreReference } from './titres-references'
-import { EtapeTypeId } from './static/etapesTypes'
-import { CaminoDate } from './date'
+import { DomaineId } from './static/domaines.js'
+import { TitreTypeTypeId } from './static/titresTypesTypes.js'
+import { TitreStatutId } from './static/titresStatuts.js'
+import { TitreReference } from './titres-references.js'
+import { EtapeTypeId } from './static/etapesTypes.js'
+import { CaminoDate } from './date.js'
 
 export interface CommonTitre {
   id: string
diff --git a/packages/common/src/typescript-tools.test.ts b/packages/common/src/typescript-tools.test.ts
index 28344f040..8779e97c5 100644
--- a/packages/common/src/typescript-tools.test.ts
+++ b/packages/common/src/typescript-tools.test.ts
@@ -1,7 +1,7 @@
-import { isNotNullNorUndefined, onlyUnique } from './typescript-tools'
-import { Role } from './roles'
-import { AdministrationId } from './static/administrations'
-import { Departements } from './static/departement'
+import { isNotNullNorUndefined, onlyUnique } from './typescript-tools.js'
+import { Role } from './roles.js'
+import { AdministrationId } from './static/administrations.js'
+import { Departements } from './static/departement.js'
 import { test, expect, describe } from 'vitest'
 
 describe('isNotNullNorUndefined', () => {
diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json
index fdf0e322f..38a097067 100644
--- a/packages/common/tsconfig.json
+++ b/packages/common/tsconfig.json
@@ -4,23 +4,22 @@
     "allowSyntheticDefaultImports": true,
     "alwaysStrict": true,
     "esModuleInterop": true,
-    "inlineSources": true,
+    "inlineSources": false,
     "lib": ["es2020", "dom"],
-    "module": "commonjs",
-    "moduleResolution": "node",
+    "module": "ES2020",
+    "moduleResolution": "Node",
     "noFallthroughCasesInSwitch": true,
     "noImplicitAny": true,
     "noImplicitReturns": true,
     "noImplicitThis": true,
-    "outDir": ".",
-    "rootDir": ".",
+    "outDir": "dist",
+    "rootDir": "./src",
     "strict": true,
     "strictNullChecks": true,
-    "sourceMap": true,
+    "sourceMap": false,
     "target": "ES2020",
     "types": ["node"],
-    "resolveJsonModule": true
-  },
-  "exclude": ["node_modules"],
-  "include": ["src/**/*"],
+    "resolveJsonModule": true,
+    "noEmit": true
+  }
 }
diff --git a/packages/ui/package.json b/packages/ui/package.json
index fb80836c3..448858f6f 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -5,7 +5,6 @@
   "private": true,
   "scripts": {
     "build": "vue-tsc --noEmit && vite build --emptyOutDir",
-    "predev": "find ../common/src -name '*.js*' -delete",
     "dev": "vite",
     "dev:update": "npm-check-updates && npm install && npm audit fix",
     "start": "node ./index.js",
diff --git a/packages/ui/src/components/dashboard/testData.ts b/packages/ui/src/components/dashboard/testData.ts
index e73f4d258..52e0e36f3 100644
--- a/packages/ui/src/components/dashboard/testData.ts
+++ b/packages/ui/src/components/dashboard/testData.ts
@@ -1,4 +1,4 @@
-import { toCaminoDate, valideAnnee } from 'camino-common/src/date'
+import { toCaminoDate, toCaminoAnnee } from 'camino-common/src/date'
 import { ETAPES_TYPES } from 'camino-common/src/static/etapesTypes'
 import { StatistiquesDGTM } from 'camino-common/src/statistiques'
 import { CommonTitreDREAL } from 'camino-common/src/titres'
@@ -96,73 +96,73 @@ export const titresDreal: CommonTitreDREAL[] = [
 
 export const statistiquesDGTMFake: StatistiquesDGTM = {
   avisAXM: {
-    [valideAnnee('2017')]: {
+    [toCaminoAnnee('2017')]: {
       apd: { ajo: 1, def: 2, dre: 2, fav: 2, fre: 9 },
       apo: { ajo: 1, def: 2, dre: 2, fav: 2, fre: 9 }
     },
-    [valideAnnee('2018')]: {
+    [toCaminoAnnee('2018')]: {
       apd: { ajo: 1, def: 2, dre: 2, fav: 2, fre: 9 },
       apo: { ajo: 1, def: 2, dre: 2, fav: 2, fre: 9 }
     },
-    [valideAnnee('2019')]: {
+    [toCaminoAnnee('2019')]: {
       apd: { ajo: 1, def: 2, dre: 2, fav: 2, fre: 9 },
       apo: { ajo: 1, def: 2, dre: 2, fav: 2, fre: 9 }
     },
-    [valideAnnee('2020')]: {
+    [toCaminoAnnee('2020')]: {
       apd: { ajo: 1, def: 2, dre: 2, fav: 2, fre: 9 },
       apo: { ajo: 1, def: 2, dre: 2, fav: 2, fre: 9 }
     }
   },
   producteursOr: {
-    [valideAnnee('2017')]: 12,
-    [valideAnnee('2018')]: 13,
-    [valideAnnee('2019')]: 13,
-    [valideAnnee('2020')]: 15
+    [toCaminoAnnee('2017')]: 12,
+    [toCaminoAnnee('2018')]: 13,
+    [toCaminoAnnee('2019')]: 13,
+    [toCaminoAnnee('2020')]: 15
   },
   depotEtInstructions: {
-    [valideAnnee('2015')]: {
+    [toCaminoAnnee('2015')]: {
       totalAXMDeposees: 11,
       totalAXMOctroyees: 22,
       totalTitresDeposes: 28,
       totalTitresOctroyes: 89
     },
-    [valideAnnee('2016')]: {
+    [toCaminoAnnee('2016')]: {
       totalAXMDeposees: 14,
       totalAXMOctroyees: 35,
       totalTitresDeposes: 46,
       totalTitresOctroyes: 111
     },
-    [valideAnnee('2017')]: {
+    [toCaminoAnnee('2017')]: {
       totalAXMDeposees: 9,
       totalAXMOctroyees: 20,
       totalTitresDeposes: 34,
       totalTitresOctroyes: 50
     },
-    [valideAnnee('2018')]: {
+    [toCaminoAnnee('2018')]: {
       totalAXMDeposees: 9,
       totalAXMOctroyees: 23,
       totalTitresDeposes: 22,
       totalTitresOctroyes: 73
     },
-    [valideAnnee('2019')]: {
+    [toCaminoAnnee('2019')]: {
       totalAXMDeposees: 14,
       totalAXMOctroyees: 15,
       totalTitresDeposes: 77,
       totalTitresOctroyes: 64
     },
-    [valideAnnee('2020')]: {
+    [toCaminoAnnee('2020')]: {
       totalAXMDeposees: 33,
       totalAXMOctroyees: 13,
       totalTitresDeposes: 95,
       totalTitresOctroyes: 50
     },
-    [valideAnnee('2021')]: {
+    [toCaminoAnnee('2021')]: {
       totalAXMDeposees: 27,
       totalAXMOctroyees: 19,
       totalTitresDeposes: 73,
       totalTitresOctroyes: 48
     },
-    [valideAnnee('2022')]: {
+    [toCaminoAnnee('2022')]: {
       totalAXMDeposees: 12,
       totalAXMOctroyees: 19,
       totalTitresDeposes: 39,
@@ -170,56 +170,56 @@ export const statistiquesDGTMFake: StatistiquesDGTM = {
     }
   },
   sdom: {
-    [valideAnnee('2015')]: {
+    [toCaminoAnnee('2015')]: {
       '0': { depose: 0, octroye: 4 },
       '0_potentielle': { depose: 0, octroye: 1 },
       '1': { depose: 0, octroye: 0 },
       '2': { depose: 0, octroye: 26 },
       '3': { depose: 0, octroye: 26 }
     },
-    [valideAnnee('2016')]: {
+    [toCaminoAnnee('2016')]: {
       '0': { depose: 0, octroye: 4 },
       '0_potentielle': { depose: 0, octroye: 4 },
       '1': { depose: 0, octroye: 0 },
       '2': { depose: 0, octroye: 43 },
       '3': { depose: 0, octroye: 26 }
     },
-    [valideAnnee('2017')]: {
+    [toCaminoAnnee('2017')]: {
       '0': { depose: 0, octroye: 2 },
       '0_potentielle': { depose: 0, octroye: 2 },
       '1': { depose: 0, octroye: 0 },
       '2': { depose: 0, octroye: 14 },
       '3': { depose: 0, octroye: 26 }
     },
-    [valideAnnee('2018')]: {
+    [toCaminoAnnee('2018')]: {
       '0': { depose: 0, octroye: 1 },
       '0_potentielle': { depose: 0, octroye: 1 },
       '1': { depose: 0, octroye: 0 },
       '2': { depose: 0, octroye: 30 },
       '3': { depose: 0, octroye: 26 }
     },
-    [valideAnnee('2019')]: {
+    [toCaminoAnnee('2019')]: {
       '0': { depose: 0, octroye: 0 },
       '0_potentielle': { depose: 0, octroye: 1 },
       '1': { depose: 0, octroye: 0 },
       '2': { depose: 0, octroye: 19 },
       '3': { depose: 0, octroye: 26 }
     },
-    [valideAnnee('2020')]: {
+    [toCaminoAnnee('2020')]: {
       '0': { depose: 0, octroye: 0 },
       '0_potentielle': { depose: 0, octroye: 0 },
       '1': { depose: 0, octroye: 0 },
       '2': { depose: 0, octroye: 11 },
       '3': { depose: 0, octroye: 26 }
     },
-    [valideAnnee('2021')]: {
+    [toCaminoAnnee('2021')]: {
       '0': { depose: 0, octroye: 0 },
       '0_potentielle': { depose: 0, octroye: 0 },
       '1': { depose: 0, octroye: 0 },
       '2': { depose: 0, octroye: 19 },
       '3': { depose: 0, octroye: 26 }
     },
-    [valideAnnee('2022')]: {
+    [toCaminoAnnee('2022')]: {
       '0': { depose: 0, octroye: 0 },
       '0_potentielle': { depose: 0, octroye: 0 },
       '1': { depose: 0, octroye: 0 },
@@ -228,7 +228,7 @@ export const statistiquesDGTMFake: StatistiquesDGTM = {
     }
   },
   delais: {
-    [valideAnnee('2015')]: {
+    [toCaminoAnnee('2015')]: {
       axm: {
         delaiCommissionDepartementaleEnJours: [591],
         delaiInstructionEnJours: [1341, 496, 1327, 633, 607, 1044],
@@ -245,7 +245,7 @@ export const statistiquesDGTMFake: StatistiquesDGTM = {
         delaiDecisionPrefetEnJours: [127]
       }
     },
-    [valideAnnee('2017')]: {
+    [toCaminoAnnee('2017')]: {
       axm: {
         delaiCommissionDepartementaleEnJours: [401, 568, 758, 167],
         delaiInstructionEnJours: [698, 821, 1449, 1823],
@@ -262,7 +262,7 @@ export const statistiquesDGTMFake: StatistiquesDGTM = {
         delaiDecisionPrefetEnJours: [12]
       }
     },
-    [valideAnnee('2018')]: {
+    [toCaminoAnnee('2018')]: {
       axm: {
         delaiCommissionDepartementaleEnJours: [387, 273, 100],
         delaiInstructionEnJours: [618],
@@ -279,7 +279,7 @@ export const statistiquesDGTMFake: StatistiquesDGTM = {
         delaiDecisionPrefetEnJours: [523]
       }
     },
-    [valideAnnee('2019')]: {
+    [toCaminoAnnee('2019')]: {
       axm: {
         delaiCommissionDepartementaleEnJours: [223, 125, 281],
         delaiInstructionEnJours: [276, 970, 303],
@@ -296,7 +296,7 @@ export const statistiquesDGTMFake: StatistiquesDGTM = {
         delaiDecisionPrefetEnJours: [123]
       }
     },
-    [valideAnnee('2020')]: {
+    [toCaminoAnnee('2020')]: {
       axm: {
         delaiCommissionDepartementaleEnJours: [
           546, 415, 85, 85, 49, 49, 55, 72, 86, 55, 319, 284, 140, 56, 72, 181,
@@ -331,7 +331,7 @@ export const statistiquesDGTMFake: StatistiquesDGTM = {
         delaiDecisionPrefetEnJours: [87]
       }
     },
-    [valideAnnee('2021')]: {
+    [toCaminoAnnee('2021')]: {
       axm: {
         delaiCommissionDepartementaleEnJours: [
           74, 83, 121, 121, 65, 65, 74, 58, 58, 101, 115, 115, 96, 115, 121,
@@ -366,7 +366,7 @@ export const statistiquesDGTMFake: StatistiquesDGTM = {
         delaiDecisionPrefetEnJours: [1]
       }
     },
-    [valideAnnee('2022')]: {
+    [toCaminoAnnee('2022')]: {
       axm: {
         delaiCommissionDepartementaleEnJours: [
           64, 64, 58, 53, 52, 52, 114, 99, 61
diff --git a/packages/ui/src/components/entreprise.vue b/packages/ui/src/components/entreprise.vue
index 22d0808b6..b1a8a8da4 100644
--- a/packages/ui/src/components/entreprise.vue
+++ b/packages/ui/src/components/entreprise.vue
@@ -215,7 +215,7 @@ import {
   User
 } from 'camino-common/src/roles'
 import Icon from './_ui/icon.vue'
-import { CaminoAnnee, valideAnnee } from 'camino-common/src/date'
+import { CaminoAnnee, toCaminoAnnee } from 'camino-common/src/date'
 import { computed, onBeforeUnmount, onMounted, watch } from 'vue'
 import { useStore } from 'vuex'
 import { useRoute } from 'vue-router'
@@ -234,12 +234,12 @@ const getFiscaliteEntreprise = async (annee: CaminoAnnee): Promise<Fiscalite> =>
 const annees = computed(() => {
   const anneeDepart = 2021
   const anneeCourante = new Date().getFullYear()
-  const caminoAnneeCourante = valideAnnee(anneeCourante.toString())
+  const caminoAnneeCourante = toCaminoAnnee(anneeCourante.toString())
   let anneeAAjouter = anneeDepart
-  const annees = [valideAnnee(anneeAAjouter.toString())]
+  const annees = [toCaminoAnnee(anneeAAjouter.toString())]
   while (annees[annees.length - 1] !== caminoAnneeCourante) {
     anneeAAjouter++
-    annees.push(valideAnnee(anneeAAjouter.toString()))
+    annees.push(toCaminoAnnee(anneeAAjouter.toString()))
   }
   return annees
 })
diff --git a/packages/ui/src/components/entreprise/pure-entreprise-fiscalite.stories.ts b/packages/ui/src/components/entreprise/pure-entreprise-fiscalite.stories.ts
index e25239381..c9d7b0a08 100644
--- a/packages/ui/src/components/entreprise/pure-entreprise-fiscalite.stories.ts
+++ b/packages/ui/src/components/entreprise/pure-entreprise-fiscalite.stories.ts
@@ -1,7 +1,7 @@
 import PureEntrepriseFiscalite from './pure-entreprise-fiscalite.vue'
 import { Meta, Story } from '@storybook/vue3'
 import { Fiscalite } from 'camino-common/src/fiscalite'
-import { CaminoAnnee, valideAnnee } from 'camino-common/src/date'
+import { CaminoAnnee, toCaminoAnnee } from 'camino-common/src/date'
 
 const meta: Meta = {
   title: 'Components/PureEntrepriseFiscalite',
@@ -31,8 +31,8 @@ Ok.args = {
       redevanceCommunale: 1600.071,
       redevanceDepartementale: 330.98
     }),
-  anneeCourante: valideAnnee('2022'),
-  annees: [valideAnnee('2021'), valideAnnee('2022')]
+  anneeCourante: toCaminoAnnee('2022'),
+  annees: [toCaminoAnnee('2021'), toCaminoAnnee('2022')]
 }
 
 export const Guyane = Template.bind({})
@@ -47,8 +47,8 @@ Guyane.args = {
         taxeAurifere: Number.parseInt(annee) * 210
       }
     }),
-  anneeCourante: valideAnnee('2022'),
-  annees: [valideAnnee('2021'), valideAnnee('2022')]
+  anneeCourante: toCaminoAnnee('2022'),
+  annees: [toCaminoAnnee('2021'), toCaminoAnnee('2022')]
 }
 
 export const GuyaneAnneePrecedente = Template.bind({})
@@ -63,19 +63,19 @@ GuyaneAnneePrecedente.args = {
         taxeAurifere: Number.parseInt(annee) * 210
       }
     }),
-  anneeCourante: valideAnnee('2021'),
-  annees: [valideAnnee('2021'), valideAnnee('2022')]
+  anneeCourante: toCaminoAnnee('2021'),
+  annees: [toCaminoAnnee('2021'), toCaminoAnnee('2022')]
 }
 
 export const Loading = Template.bind({})
 Loading.args = {
   getFiscaliteEntreprise: () => new Promise<Fiscalite>(resolve => {}),
-  anneeCourante: valideAnnee('2022'),
-  annees: [valideAnnee('2021'), valideAnnee('2022')]
+  anneeCourante: toCaminoAnnee('2022'),
+  annees: [toCaminoAnnee('2021'), toCaminoAnnee('2022')]
 }
 export const WithError = Template.bind({})
 WithError.args = {
   getFiscaliteEntreprise: () => Promise.reject(new Error('because reasons')),
-  anneeCourante: valideAnnee('2022'),
-  annees: [valideAnnee('2021'), valideAnnee('2022')]
+  anneeCourante: toCaminoAnnee('2022'),
+  annees: [toCaminoAnnee('2021'), toCaminoAnnee('2022')]
 }
diff --git a/packages/ui/src/components/statistiques/pure-guyane.NoStoryshots.stories.ts b/packages/ui/src/components/statistiques/pure-guyane.NoStoryshots.stories.ts
index 4231b409c..d99f0c9cd 100644
--- a/packages/ui/src/components/statistiques/pure-guyane.NoStoryshots.stories.ts
+++ b/packages/ui/src/components/statistiques/pure-guyane.NoStoryshots.stories.ts
@@ -1,5 +1,5 @@
 import { Meta, Story } from '@storybook/vue3'
-import { valideAnnee } from 'camino-common/src/date'
+import { toCaminoAnnee } from 'camino-common/src/date'
 import { StatistiquesGuyaneRest } from 'camino-common/src/statistiques'
 import PureGuyane from './pure-guyane.vue'
 
@@ -30,90 +30,90 @@ const data = Promise.resolve({
   rest: {
     arm: {
       depot: {
-        [valideAnnee('2017')]: 10,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 10,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       octroiEtProlongation: {
-        [valideAnnee('2017')]: 20,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 20,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       refusees: {
-        [valideAnnee('2017')]: 15,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 15,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       surface: {
-        [valideAnnee('2017')]: 500,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 500,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       }
     },
     axm: {
       depot: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       octroiEtProlongation: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       refusees: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       surface: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       }
     },
     prm: {
       depot: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       octroiEtProlongation: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       refusees: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       surface: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       }
     },
     cxm: {
       depot: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       octroiEtProlongation: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       refusees: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       },
       surface: {
-        [valideAnnee('2017')]: 1,
-        [valideAnnee('2018')]: 2,
-        [valideAnnee('2019')]: 3
+        [toCaminoAnnee('2017')]: 1,
+        [toCaminoAnnee('2018')]: 2,
+        [toCaminoAnnee('2019')]: 3
       }
     }
   },
diff --git a/packages/ui/src/components/statistiques/pure-mineraux-metaux-metropole.NoStoryshots.stories.ts b/packages/ui/src/components/statistiques/pure-mineraux-metaux-metropole.NoStoryshots.stories.ts
index 49c30128b..3b6855822 100644
--- a/packages/ui/src/components/statistiques/pure-mineraux-metaux-metropole.NoStoryshots.stories.ts
+++ b/packages/ui/src/components/statistiques/pure-mineraux-metaux-metropole.NoStoryshots.stories.ts
@@ -1,7 +1,7 @@
 import PureMinerauxMetauxMetropole from './pure-mineraux-metaux-metropole.vue'
 import { Meta, Story } from '@storybook/vue3'
 import { StatistiquesMinerauxMetauxMetropole } from 'camino-common/src/statistiques'
-import { valideAnnee } from 'camino-common/src/date'
+import { toCaminoAnnee } from 'camino-common/src/date'
 
 const meta: Meta = {
   title: 'Components/NoStoryshots/Statistiques/MinerauxMetauxMetropole',
@@ -27,22 +27,22 @@ Default.args = {
     Promise.resolve({
       substances: {
         aloh: {
-          [valideAnnee('2009')]: 178.7,
-          [valideAnnee('2010')]: 132.302,
-          [valideAnnee('2011')]: 117.7,
-          [valideAnnee('2012')]: 65.336,
-          [valideAnnee('2013')]: 109.602,
-          [valideAnnee('2014')]: 71.07,
-          [valideAnnee('2015')]: 80.578,
-          [valideAnnee('2016')]: 112.445,
-          [valideAnnee('2017')]: 131.012,
-          [valideAnnee('2018')]: 138.8,
-          [valideAnnee('2019')]: 120.76,
-          [valideAnnee('2020')]: 123.49600000000001,
-          [valideAnnee('2021')]: 142.764
+          [toCaminoAnnee('2009')]: 178.7,
+          [toCaminoAnnee('2010')]: 132.302,
+          [toCaminoAnnee('2011')]: 117.7,
+          [toCaminoAnnee('2012')]: 65.336,
+          [toCaminoAnnee('2013')]: 109.602,
+          [toCaminoAnnee('2014')]: 71.07,
+          [toCaminoAnnee('2015')]: 80.578,
+          [toCaminoAnnee('2016')]: 112.445,
+          [toCaminoAnnee('2017')]: 131.012,
+          [toCaminoAnnee('2018')]: 138.8,
+          [toCaminoAnnee('2019')]: 120.76,
+          [toCaminoAnnee('2020')]: 123.49600000000001,
+          [toCaminoAnnee('2021')]: 142.764
         },
         naca: {
-          [valideAnnee('2009')]: {
+          [toCaminoAnnee('2009')]: {
             '27': 7.684,
             '44': 2692.7,
             '75': 48.724,
@@ -50,7 +50,7 @@ Default.args = {
             '84': 635.592,
             '93': 274.732
           },
-          [valideAnnee('2010')]: {
+          [toCaminoAnnee('2010')]: {
             '27': 11.645,
             '44': 2995.599,
             '75': 37.23,
@@ -58,7 +58,7 @@ Default.args = {
             '84': 579.385,
             '93': 500.564
           },
-          [valideAnnee('2011')]: {
+          [toCaminoAnnee('2011')]: {
             '27': 0,
             '44': 2959.7,
             '75': 32.425,
@@ -66,7 +66,7 @@ Default.args = {
             '84': 959.442,
             '93': 421.48
           },
-          [valideAnnee('2012')]: {
+          [toCaminoAnnee('2012')]: {
             '27': 0,
             '44': 2426.62,
             '75': 35.97,
@@ -74,7 +74,7 @@ Default.args = {
             '84': 936.78,
             '93': 1042.67
           },
-          [valideAnnee('2013')]: {
+          [toCaminoAnnee('2013')]: {
             '27': 0,
             '44': 2703.049,
             '75': 37.79,
@@ -82,7 +82,7 @@ Default.args = {
             '84': 907.994,
             '93': 1300.854
           },
-          [valideAnnee('2014')]: {
+          [toCaminoAnnee('2014')]: {
             '27': 0,
             '44': 1552.197,
             '75': 34.285,
@@ -90,7 +90,7 @@ Default.args = {
             '84': 763.55,
             '93': 843.83
           },
-          [valideAnnee('2015')]: {
+          [toCaminoAnnee('2015')]: {
             '27': 0,
             '44': 2444.74,
             '75': 37.303,
@@ -98,7 +98,7 @@ Default.args = {
             '84': 799.949,
             '93': 135.02
           },
-          [valideAnnee('2016')]: {
+          [toCaminoAnnee('2016')]: {
             '27': 0,
             '44': 2377.175,
             '75': 35.841,
@@ -106,7 +106,7 @@ Default.args = {
             '84': 830.577,
             '93': 95.859
           },
-          [valideAnnee('2017')]: {
+          [toCaminoAnnee('2017')]: {
             '27': 0,
             '44': 2585.934,
             '75': 34.219,
@@ -114,7 +114,7 @@ Default.args = {
             '84': 869.676,
             '93': 91.718
           },
-          [valideAnnee('2018')]: {
+          [toCaminoAnnee('2018')]: {
             '27': 0,
             '44': 2481.271,
             '75': 31.71,
@@ -122,7 +122,7 @@ Default.args = {
             '84': 870.718,
             '93': 150.524
           },
-          [valideAnnee('2019')]: {
+          [toCaminoAnnee('2019')]: {
             '27': 0,
             '44': 2537.412,
             '75': 36.357,
@@ -130,14 +130,14 @@ Default.args = {
             '84': 792.394,
             '93': 196.828
           },
-          [valideAnnee('2020')]: {
+          [toCaminoAnnee('2020')]: {
             '44': 0,
             '75': 0,
             '76': 0,
             '84': 0,
             '93': 0
           },
-          [valideAnnee('2021')]: {
+          [toCaminoAnnee('2021')]: {
             '44': 0,
             '75': 0,
             '76': 0,
@@ -146,14 +146,14 @@ Default.args = {
           }
         },
         nacb: {
-          [valideAnnee('2020')]: {
+          [toCaminoAnnee('2020')]: {
             '44': 0,
             '75': 1.0224,
             '76': 1089.707,
             '84': 0,
             '93': 0
           },
-          [valideAnnee('2021')]: {
+          [toCaminoAnnee('2021')]: {
             '44': 0,
             '75': 1.8883,
             '76': 0,
@@ -162,14 +162,14 @@ Default.args = {
           }
         },
         nacc: {
-          [valideAnnee('2020')]: {
+          [toCaminoAnnee('2020')]: {
             '44': 0,
             '75': 0,
             '76': 0,
             '84': 470.054,
             '93': 215.397
           },
-          [valideAnnee('2021')]: {
+          [toCaminoAnnee('2021')]: {
             '44': 0,
             '75': 0,
             '76': 1212.682,
@@ -188,20 +188,20 @@ Default.args = {
       },
       fiscaliteParSubstanceParAnnee: {
         aloh: {
-          [valideAnnee('2021')]: 1_224_000,
-          [valideAnnee('2022')]: 1_250_000
+          [toCaminoAnnee('2021')]: 1_224_000,
+          [toCaminoAnnee('2022')]: 1_250_000
         },
         naca: {
-          [valideAnnee('2021')]: 1_224_000,
-          [valideAnnee('2022')]: 1_250_000
+          [toCaminoAnnee('2021')]: 1_224_000,
+          [toCaminoAnnee('2022')]: 1_250_000
         },
         nacb: {
-          [valideAnnee('2021')]: 1_225_000,
-          [valideAnnee('2022')]: 700
+          [toCaminoAnnee('2021')]: 1_225_000,
+          [toCaminoAnnee('2022')]: 700
         },
         nacc: {
-          [valideAnnee('2021')]: 800,
-          [valideAnnee('2022')]: 2_000
+          [toCaminoAnnee('2021')]: 800,
+          [toCaminoAnnee('2022')]: 2_000
         }
       },
       prm: {
diff --git a/packages/ui/src/components/statistiques/pure-mineraux-metaux-metropole.vue b/packages/ui/src/components/statistiques/pure-mineraux-metaux-metropole.vue
index 1d7d1f1ab..8d212aa91 100644
--- a/packages/ui/src/components/statistiques/pure-mineraux-metaux-metropole.vue
+++ b/packages/ui/src/components/statistiques/pure-mineraux-metaux-metropole.vue
@@ -325,7 +325,7 @@ import ChartWithExport from '../_charts/chart-with-export.vue'
 import { AsyncData } from '@/api/client-rest'
 import LoadingElement from '@/components/_ui/pure-loader.vue'
 import { numberFormat } from '@/utils/number-format'
-import { CaminoAnnee, isAnnee, valideAnnee } from 'camino-common/src/date'
+import { CaminoAnnee, isAnnee } from 'camino-common/src/date'
 import { StatistiquesMinerauxMetauxMetropole } from 'camino-common/src/statistiques'
 import { ref, onMounted } from 'vue'
 import { ChartConfiguration, ChartData, ChartDataset } from 'chart.js'
-- 
GitLab