From 8237221b3839c8e7158819c17b0ea6cc3a66cf53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Bitard?= <bitard.michael@gmail.com>
Date: Thu, 1 Aug 2024 09:50:23 +0200
Subject: [PATCH] chore(api): fusionne les migrations (#1392)

---
 packages/api/package.json                     |    2 +
 .../knex/migrations/20230413090214_init.ts    |    4 +-
 .../migrations/20230413090214_init_schema.sql | 1226 +++++++++++------
 .../20230425155734_titre-slug-not-nullable.ts |    9 -
 ...084344_titre-activites-sections-options.ts |   56 -
 .../20230503125136_delete-type-sections.ts    |    9 -
 .../20230510144301_improve-documents.ts       |    9 -
 ...20230605080141_refactor-communes-forets.ts |   48 -
 .../20230607092129_etape-ordre-not-null.ts    |    8 -
 .../20230613075149_refactor-justificatifs.ts  |   10 -
 ...613133254_extract-entreprises-documents.ts |   26 -
 ...823090330_delete-activiteType-titreType.ts |    9 -
 ...0824092724_add-entreprise-document-file.ts |    7 -
 .../20230829151032_add-activite-document.ts   |   34 -
 .../20230926083529_add-index-on-left-right.ts |    8 -
 .../20231012073429_cleanup-documents.ts       |   12 -
 ...3145523_add-keycloak-id-to-utilisateurs.ts |    7 -
 ...0231108145556_set-some-boolean-not-null.ts |   29 -
 ...20231116101246_set-keycloak-id-not-null.ts |    7 -
 .../migrations/20240110085800_remove-tde.ts   |    7 -
 ...40110145011_ajoute-defaut-titres-etapes.ts |   17 -
 ...110161016_migrate-incertitudes-in-notes.ts |   33 -
 ...2944_set-titre-demarches-ordre-not-null.ts |    7 -
 ...20240116142111_migrate-point-to-geojson.ts |  107 --
 .../20240206163907_delete_activites_types.ts  |   11 -
 .../20240207141639_delete_administrations.ts  |   10 -
 .../20240213132554_delete_demarche_type.ts    |    9 -
 .../20240215154436_delete_domaine.ts          |    9 -
 .../migrations/20240219143213_delete_cache.ts |    7 -
 .../20240219165521_delete_titre-type.ts       |   11 -
 .../20240220105343_delete_etape-type.ts       |    9 -
 .../20240220154838_delete_document-type.ts    |    9 -
 ...1154230_delete_titre-entreprise-lecture.ts |    7 -
 .../20240226171415_add-geojson-origine.ts     |   23 -
 ...103907_add_titres-etapes_geojson_forage.ts |   12 -
 .../20240320132136_add_etape-document.ts      |   31 -
 ...r_and_update_constraints_on_entreprises.ts |   57 -
 .../20240507082216_clean-up-documents.ts      |    7 -
 .../20240516122738_etapes-brouillon.ts        |    9 -
 .../migrations/20240530125050_add-logs.ts     |   10 -
 .../20240610091608_add_avis-documents.ts      |  237 ----
 .../migrations/20240620130015_init-surface.ts |   19 -
 ...2901_participation-public-brouillonable.ts |    7 -
 .../20240703134359_notes-avertissement.ts     |   10 -
 .../20240711082448_pxg-machine-update.ts      |    7 -
 .../20240711082449_pxg-machine-update.ts      |    7 -
 .../20240711082459_cxg_prg-machine-update.ts  |   30 -
 ...0715143025_delete-cloture-participation.ts |   65 -
 .../20240717125347_migre-avis-en-document.ts  |   32 -
 .../20240718121004_supprimer-cac-prm.ts       |   17 -
 .../20240724150631_r-machine-update.ts        |    9 -
 ...5133133_fusionne-avis-des-collectivites.ts |  128 --
 .../20240725143010_f-machine-update.ts        |   10 -
 ...729124859_fusionner-les-tables-communes.ts |   28 -
 ...240730122244_ajouter-index-sur-geometry.ts |   10 -
 55 files changed, 787 insertions(+), 1751 deletions(-)
 delete mode 100644 packages/api/src/knex/migrations/20230425155734_titre-slug-not-nullable.ts
 delete mode 100644 packages/api/src/knex/migrations/20230503084344_titre-activites-sections-options.ts
 delete mode 100644 packages/api/src/knex/migrations/20230503125136_delete-type-sections.ts
 delete mode 100644 packages/api/src/knex/migrations/20230510144301_improve-documents.ts
 delete mode 100644 packages/api/src/knex/migrations/20230605080141_refactor-communes-forets.ts
 delete mode 100644 packages/api/src/knex/migrations/20230607092129_etape-ordre-not-null.ts
 delete mode 100644 packages/api/src/knex/migrations/20230613075149_refactor-justificatifs.ts
 delete mode 100644 packages/api/src/knex/migrations/20230613133254_extract-entreprises-documents.ts
 delete mode 100644 packages/api/src/knex/migrations/20230823090330_delete-activiteType-titreType.ts
 delete mode 100644 packages/api/src/knex/migrations/20230824092724_add-entreprise-document-file.ts
 delete mode 100644 packages/api/src/knex/migrations/20230829151032_add-activite-document.ts
 delete mode 100644 packages/api/src/knex/migrations/20230926083529_add-index-on-left-right.ts
 delete mode 100644 packages/api/src/knex/migrations/20231012073429_cleanup-documents.ts
 delete mode 100644 packages/api/src/knex/migrations/20231023145523_add-keycloak-id-to-utilisateurs.ts
 delete mode 100644 packages/api/src/knex/migrations/20231108145556_set-some-boolean-not-null.ts
 delete mode 100644 packages/api/src/knex/migrations/20231116101246_set-keycloak-id-not-null.ts
 delete mode 100644 packages/api/src/knex/migrations/20240110085800_remove-tde.ts
 delete mode 100644 packages/api/src/knex/migrations/20240110145011_ajoute-defaut-titres-etapes.ts
 delete mode 100644 packages/api/src/knex/migrations/20240110161016_migrate-incertitudes-in-notes.ts
 delete mode 100644 packages/api/src/knex/migrations/20240115132944_set-titre-demarches-ordre-not-null.ts
 delete mode 100644 packages/api/src/knex/migrations/20240116142111_migrate-point-to-geojson.ts
 delete mode 100644 packages/api/src/knex/migrations/20240206163907_delete_activites_types.ts
 delete mode 100644 packages/api/src/knex/migrations/20240207141639_delete_administrations.ts
 delete mode 100644 packages/api/src/knex/migrations/20240213132554_delete_demarche_type.ts
 delete mode 100644 packages/api/src/knex/migrations/20240215154436_delete_domaine.ts
 delete mode 100644 packages/api/src/knex/migrations/20240219143213_delete_cache.ts
 delete mode 100644 packages/api/src/knex/migrations/20240219165521_delete_titre-type.ts
 delete mode 100644 packages/api/src/knex/migrations/20240220105343_delete_etape-type.ts
 delete mode 100644 packages/api/src/knex/migrations/20240220154838_delete_document-type.ts
 delete mode 100644 packages/api/src/knex/migrations/20240221154230_delete_titre-entreprise-lecture.ts
 delete mode 100644 packages/api/src/knex/migrations/20240226171415_add-geojson-origine.ts
 delete mode 100644 packages/api/src/knex/migrations/20240312103907_add_titres-etapes_geojson_forage.ts
 delete mode 100644 packages/api/src/knex/migrations/20240320132136_add_etape-document.ts
 delete mode 100644 packages/api/src/knex/migrations/20240425151111_delete_operateur_and_update_constraints_on_entreprises.ts
 delete mode 100644 packages/api/src/knex/migrations/20240507082216_clean-up-documents.ts
 delete mode 100644 packages/api/src/knex/migrations/20240516122738_etapes-brouillon.ts
 delete mode 100644 packages/api/src/knex/migrations/20240530125050_add-logs.ts
 delete mode 100644 packages/api/src/knex/migrations/20240610091608_add_avis-documents.ts
 delete mode 100644 packages/api/src/knex/migrations/20240620130015_init-surface.ts
 delete mode 100644 packages/api/src/knex/migrations/20240702152901_participation-public-brouillonable.ts
 delete mode 100644 packages/api/src/knex/migrations/20240703134359_notes-avertissement.ts
 delete mode 100644 packages/api/src/knex/migrations/20240711082448_pxg-machine-update.ts
 delete mode 100644 packages/api/src/knex/migrations/20240711082449_pxg-machine-update.ts
 delete mode 100644 packages/api/src/knex/migrations/20240711082459_cxg_prg-machine-update.ts
 delete mode 100644 packages/api/src/knex/migrations/20240715143025_delete-cloture-participation.ts
 delete mode 100644 packages/api/src/knex/migrations/20240717125347_migre-avis-en-document.ts
 delete mode 100644 packages/api/src/knex/migrations/20240718121004_supprimer-cac-prm.ts
 delete mode 100644 packages/api/src/knex/migrations/20240724150631_r-machine-update.ts
 delete mode 100644 packages/api/src/knex/migrations/20240725133133_fusionne-avis-des-collectivites.ts
 delete mode 100644 packages/api/src/knex/migrations/20240725143010_f-machine-update.ts
 delete mode 100644 packages/api/src/knex/migrations/20240729124859_fusionner-les-tables-communes.ts
 delete mode 100644 packages/api/src/knex/migrations/20240730122244_ajouter-index-sur-geometry.ts

diff --git a/packages/api/package.json b/packages/api/package.json
index 2b31181ed..3104052af 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -10,6 +10,8 @@
     "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": "rm -rf ./backups/* && pg_dump --host=localhost --username=postgres --clean --if-exists --format=d --no-owner --no-privileges --dbname=camino --file=./backups/",
+    "postdb:dump-schema": "node -e \"console.log(\\\"il faut supprimer le 'create schema public' et 'SELECT pg_catalog.set_config('search_path', '', false);'\\\")\"",
+    "db:dump-schema": "pg_dump --host=localhost --username=postgres --exclude-table=knex_migrations --exclude-table=knex_migrations_lock --exclude-table=knex_migrations_id_seq --exclude-table=knex_migrations_lock_index_seq --no-owner --no-privileges --dbname=camino --schema-only --schema public --no-comments > src/knex/migrations/20230413090214_init_schema.sql",
     "db:import": "pg_restore --host=localhost --username=postgres --clean --if-exists --no-owner --no-privileges --dbname=camino ./backups",
     "db:import-without-files": "pg_restore --host=localhost --username=postgres --clean --if-exists --no-owner --no-privileges --dbname=camino < ./backup_without_files.backup",
     "db:prod-fetch": "rm -rf ./backups/* && ssh camino.beta.gouv.fr 'rm -f ~/backup.tgz && cd  /srv/backups/dump/ && tar cvzf ~/backup.tgz .' && scp camino.beta.gouv.fr:~/backup.tgz backups/ && tar xvf backups/backup.tgz --directory ./backups",
diff --git a/packages/api/src/knex/migrations/20230413090214_init.ts b/packages/api/src/knex/migrations/20230413090214_init.ts
index b920d16e8..b348a699a 100644
--- a/packages/api/src/knex/migrations/20230413090214_init.ts
+++ b/packages/api/src/knex/migrations/20230413090214_init.ts
@@ -3,10 +3,10 @@ import { readFile } from 'node:fs/promises'
 import path, { join } from 'node:path'
 import { fileURLToPath } from 'url'
 
-export const up = async (knex: Knex) => {
+export const up = async (knex: Knex): Promise<void> => {
   const __dirname = path.dirname(fileURLToPath(import.meta.url))
   const sql = await readFile(join(__dirname, './20230413090214_init_schema.sql'), { encoding: 'utf-8' })
   await knex.raw(sql)
 }
 
-export const down = () => ({})
+export const down = (): void => {}
diff --git a/packages/api/src/knex/migrations/20230413090214_init_schema.sql b/packages/api/src/knex/migrations/20230413090214_init_schema.sql
index db55c06f6..c8e371107 100644
--- a/packages/api/src/knex/migrations/20230413090214_init_schema.sql
+++ b/packages/api/src/knex/migrations/20230413090214_init_schema.sql
@@ -1,112 +1,64 @@
+--
+-- PostgreSQL database dump
+--
+
+-- Dumped from database version 15.4 (Debian 15.4-1.pgdg110+1)
+-- Dumped by pg_dump version 16.3
+
+SET statement_timeout = 0;
+SET lock_timeout = 0;
+SET idle_in_transaction_session_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = on;
+SET check_function_bodies = false;
+SET xmloption = content;
+SET client_min_messages = warning;
+SET row_security = off;
+
 SET default_tablespace = '';
+
 SET default_table_access_method = heap;
-CREATE EXTENSION IF NOT EXISTS postgis;
-CREATE TABLE public.activites_types (
-    id character varying(3) NOT NULL,
-    nom character varying(255) NOT NULL,
-    sections jsonb[] NOT NULL,
-    frequence_id character varying(3) NOT NULL,
-    date_debut character varying(255) NOT NULL,
-    delai_mois integer,
-    ordre integer NOT NULL,
-    description text
-);
-ALTER TABLE public.activites_types OWNER TO postgres;
-CREATE TABLE public.activites_types__documents_types (
-    activite_type_id character varying(3) NOT NULL,
-    document_type_id character varying(3) NOT NULL,
-    optionnel boolean
-);
-ALTER TABLE public.activites_types__documents_types OWNER TO postgres;
-CREATE TABLE public.activites_types__pays (
-    pays_id character varying(3) NOT NULL,
-    activite_type_id character varying(3) NOT NULL
-);
-ALTER TABLE public.activites_types__pays OWNER TO postgres;
-CREATE TABLE public.activites_types__titres_types (
-    titre_type_id character varying(3) NOT NULL,
-    activite_type_id character varying(3) NOT NULL
-);
-ALTER TABLE public.activites_types__titres_types OWNER TO postgres;
-CREATE TABLE public.administrations (
-    id character varying(64) NOT NULL
-);
-ALTER TABLE public.administrations OWNER TO postgres;
-CREATE TABLE public.administrations__activites_types (
-    activite_type_id character varying(3) NOT NULL,
-    administration_id character varying(64) NOT NULL,
-    modification_interdit boolean,
-    lecture_interdit boolean
-);
-ALTER TABLE public.administrations__activites_types OWNER TO postgres;
+
+--
+-- Name: activites_documents; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.activites_documents (
+    id character varying(255) NOT NULL,
+    activite_document_type_id character varying(3) NOT NULL,
+    date character varying(10) NOT NULL,
+    activite_id character varying(255),
+    description character varying(1024),
+    largeobject_id oid NOT NULL
+);
+
+
+--
+-- Name: administrations__activites_types__emails; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.administrations__activites_types__emails (
     activite_type_id character varying(3) NOT NULL,
     administration_id character varying(64) NOT NULL,
     email character varying(255) NOT NULL
 );
-ALTER TABLE public.administrations__activites_types__emails OWNER TO postgres;
-CREATE TABLE public.caches (
-    id character varying(128) NOT NULL,
-    valeur jsonb
-);
-ALTER TABLE public.caches OWNER TO postgres;
+
+
+--
+-- Name: communes; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.communes (
     id character varying(5) NOT NULL,
     nom character varying(255) NOT NULL,
-    departement_id character varying(3) NOT NULL
-);
-ALTER TABLE public.communes OWNER TO postgres;
-CREATE TABLE public.communes_postgis (
-    id character varying(5) NOT NULL,
-    geometry public.geometry(MultiPolygon,4326)
-);
-ALTER TABLE public.communes_postgis OWNER TO postgres;
-CREATE TABLE public.demarches_types (
-    id character varying(3) NOT NULL,
-    nom character varying(255) NOT NULL,
-    description text,
-    ordre integer,
-    duree boolean,
-    points boolean,
-    substances boolean,
-    titulaires boolean,
-    renouvelable boolean,
-    exception boolean,
-    auto boolean,
-    travaux boolean
-);
-ALTER TABLE public.demarches_types OWNER TO postgres;
-CREATE TABLE public.documents (
-    id character varying(255) NOT NULL,
-    type_id character varying(3) NOT NULL,
-    date character varying(10) NOT NULL,
-    entreprise_id character varying(64),
-    titre_etape_id character varying(128),
-    description character varying(1024),
-    titre_activite_id character varying(128),
-    fichier boolean,
-    fichier_type_id character varying(3),
-    url character varying(1024),
-    uri character varying(1024),
-    jorf character varying(32),
-    nor character varying(32),
-    public_lecture boolean,
-    entreprises_lecture boolean
-);
-ALTER TABLE public.documents OWNER TO postgres;
-CREATE TABLE public.documents_types (
-    id character varying(3) NOT NULL,
-    nom character varying(255) NOT NULL,
-    description text
-);
-ALTER TABLE public.documents_types OWNER TO postgres;
-CREATE TABLE public.domaines (
-    id character varying(1) NOT NULL,
-    nom character varying(255) NOT NULL,
-    description text,
-    ordre integer NOT NULL
-);
-ALTER TABLE public.domaines OWNER TO postgres;
+    geometry public.geometry NOT NULL
+);
+
+
+--
+-- Name: entreprises; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.entreprises (
     id character varying(64) NOT NULL,
     nom character varying(255) NOT NULL,
@@ -123,53 +75,83 @@ CREATE TABLE public.entreprises (
     url character varying(1024),
     email character varying(255),
     telephone character varying(255),
-    archive boolean DEFAULT false
-);
-ALTER TABLE public.entreprises OWNER TO postgres;
-CREATE TABLE public.entreprises__documents_types (
-    document_type_id character varying(3) NOT NULL
+    archive boolean DEFAULT false NOT NULL
 );
-ALTER TABLE public.entreprises__documents_types OWNER TO postgres;
+
+
+--
+-- Name: entreprises_documents; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.entreprises_documents (
+    id character varying(255) NOT NULL,
+    entreprise_document_type_id character varying(3) NOT NULL,
+    date character varying(10) NOT NULL,
+    entreprise_id character varying(64),
+    description character varying(1024),
+    largeobject_id oid NOT NULL
+);
+
+
+--
+-- Name: entreprises_etablissements; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.entreprises_etablissements (
     id character varying(64) NOT NULL,
     entreprise_id character varying(64) NOT NULL,
-    nom character varying(255),
+    nom character varying(255) NOT NULL,
     legal_siret character varying(255),
-    date_debut character varying(10),
+    date_debut character varying(10) NOT NULL,
     date_fin character varying(10)
 );
-ALTER TABLE public.entreprises_etablissements OWNER TO postgres;
-CREATE TABLE public.etapes_types (
-    id character varying(3) NOT NULL,
-    nom character varying(128),
-    description text,
-    ordre integer NOT NULL,
-    fondamentale boolean,
-    "unique" boolean,
-    acceptation_auto boolean,
-    date_fin character varying(10),
-    sections jsonb[],
-    public_lecture boolean,
-    entreprises_lecture boolean
-);
-ALTER TABLE public.etapes_types OWNER TO postgres;
-CREATE TABLE public.etapes_types__justificatifs_types (
-    etape_type_id character varying(3) NOT NULL,
-    document_type_id character varying(3) NOT NULL,
-    optionnel boolean,
-    description text
-);
-ALTER TABLE public.etapes_types__justificatifs_types OWNER TO postgres;
-CREATE TABLE public.forets (
-    id character varying(30) NOT NULL,
-    nom character varying(255) NOT NULL
-);
-ALTER TABLE public.forets OWNER TO postgres;
+
+
+--
+-- Name: etape_avis; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.etape_avis (
+    id character varying(255) NOT NULL,
+    avis_type_id character varying(255) NOT NULL,
+    avis_statut_id character varying(255) NOT NULL,
+    avis_visibility_id character varying(255) NOT NULL,
+    etape_id character varying(255) NOT NULL,
+    description text NOT NULL,
+    date character varying(10) NOT NULL,
+    largeobject_id oid
+);
+
+
+--
+-- Name: etapes_documents; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.etapes_documents (
+    id character varying(255) NOT NULL,
+    etape_document_type_id character varying(3) NOT NULL,
+    etape_id character varying(255) NOT NULL,
+    description character varying(1024),
+    public_lecture boolean NOT NULL,
+    entreprises_lecture boolean NOT NULL,
+    largeobject_id oid NOT NULL
+);
+
+
+--
+-- Name: forets_postgis; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.forets_postgis (
     id character varying(30) NOT NULL,
     geometry public.geometry(MultiPolygon,4326)
 );
-ALTER TABLE public.forets_postgis OWNER TO postgres;
+
+
+--
+-- Name: journaux; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.journaux (
     id character varying(255) NOT NULL,
     utilisateur_id character varying(255) NOT NULL,
@@ -180,182 +162,179 @@ CREATE TABLE public.journaux (
     titre_id character varying(128) NOT NULL,
     CONSTRAINT logs_operation_check CHECK ((operation = ANY (ARRAY['create'::text, 'update'::text, 'delete'::text])))
 );
-ALTER TABLE public.journaux OWNER TO postgres;
+
+
+--
+-- Name: logs; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.logs (
+    datetime timestamp with time zone DEFAULT now() NOT NULL,
+    path character varying(255),
+    method character varying(6) NOT NULL,
+    body jsonb,
+    utilisateur_id character varying(255) NOT NULL
+);
+
+
+--
+-- Name: perimetre_reference; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.perimetre_reference (
+    titre_etape_id character varying(255) NOT NULL,
+    geo_systeme character varying(255) NOT NULL,
+    opposable boolean DEFAULT false,
+    geojson_perimetre jsonb
+);
+
+
+--
+-- Name: sdom_zones_postgis; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.sdom_zones_postgis (
     id character varying(30) NOT NULL,
     geometry public.geometry(MultiPolygon,4326)
 );
-ALTER TABLE public.sdom_zones_postgis OWNER TO postgres;
+
+
+--
+-- Name: secteurs_maritime_postgis; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.secteurs_maritime_postgis (
     id integer NOT NULL,
     geometry public.geometry(MultiPolygon,4326)
 );
-ALTER TABLE public.secteurs_maritime_postgis OWNER TO postgres;
+
+
+--
+-- Name: titres; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.titres (
     id character varying(128) NOT NULL,
     nom character varying(255) NOT NULL,
     type_id character varying(3) NOT NULL,
     titre_statut_id character varying(3) DEFAULT 'ind'::character varying NOT NULL,
-    public_lecture boolean DEFAULT false,
-    entreprises_lecture boolean DEFAULT false,
+    public_lecture boolean DEFAULT false NOT NULL,
     doublon_titre_id character varying(128),
-    contenus_titre_etapes_ids jsonb,
-    coordonnees point,
     props_titre_etapes_ids jsonb DEFAULT '{}'::jsonb,
-    slug character varying(255),
+    slug character varying(255) NOT NULL,
     archive boolean DEFAULT false NOT NULL,
     "references" jsonb DEFAULT '[]'::jsonb NOT NULL
 );
-ALTER TABLE public.titres OWNER TO postgres;
+
+
+--
+-- Name: titres__titres; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.titres__titres (
     titre_from_id character varying(255) NOT NULL,
     titre_to_id character varying(255) NOT NULL
 );
-ALTER TABLE public.titres__titres OWNER TO postgres;
+
+
+--
+-- Name: titres_activites; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.titres_activites (
     id character varying(255) NOT NULL,
     titre_id character varying(128),
     utilisateur_id character varying(128),
-    date character varying(10),
+    date character varying(10) NOT NULL,
     date_saisie character varying(10),
     contenu jsonb,
     type_id character varying(3) NOT NULL,
     activite_statut_id character varying(3) NOT NULL,
     annee integer NOT NULL,
-    periode_id integer,
-    sections jsonb[],
-    suppression boolean,
-    slug character varying(255)
-);
-ALTER TABLE public.titres_activites OWNER TO postgres;
-CREATE TABLE public.titres_amodiataires (
-    titre_etape_id character varying(128) NOT NULL,
-    entreprise_id character varying(64) NOT NULL,
-    operateur boolean
-);
-ALTER TABLE public.titres_amodiataires OWNER TO postgres;
-CREATE TABLE public.titres_communes (
-    titre_etape_id character varying(128) NOT NULL,
-    commune_id character varying(8) NOT NULL,
-    surface integer
-);
-ALTER TABLE public.titres_communes OWNER TO postgres;
+    periode_id integer NOT NULL,
+    sections jsonb[] NOT NULL,
+    suppression boolean DEFAULT false NOT NULL,
+    slug character varying(255) NOT NULL
+);
+
+
+--
+-- Name: titres_demarches; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.titres_demarches (
     id character varying(128) NOT NULL,
     titre_id character varying(128) NOT NULL,
     type_id character varying(3) NOT NULL,
     statut_id character varying(3) DEFAULT 'ind'::character varying NOT NULL,
-    public_lecture boolean DEFAULT false,
-    entreprises_lecture boolean DEFAULT false,
-    ordre integer DEFAULT 0,
+    public_lecture boolean DEFAULT false NOT NULL,
+    entreprises_lecture boolean DEFAULT false NOT NULL,
+    ordre integer DEFAULT 0 NOT NULL,
     slug character varying(255),
-    demarche_date_debut character varying(10),
-    demarche_date_fin character varying(10),
     description character varying(255),
-    archive boolean DEFAULT false NOT NULL
-);
-ALTER TABLE public.titres_demarches OWNER TO postgres;
-CREATE TABLE public.titres_demarches_liens (
-    enfant_titre_demarche_id character varying(128) NOT NULL,
-    parent_titre_demarche_id character varying(128) NOT NULL
-);
-ALTER TABLE public.titres_demarches_liens OWNER TO postgres;
+    archive boolean DEFAULT false NOT NULL,
+    demarche_date_debut character varying(10),
+    demarche_date_fin character varying(10)
+);
+
+
+--
+-- Name: titres_etapes; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.titres_etapes (
     id character varying(128) NOT NULL,
     titre_demarche_id character varying(128) NOT NULL,
     type_id character varying(3) NOT NULL,
     statut_id character varying(3) NOT NULL,
-    ordre integer,
+    ordre integer DEFAULT 0 NOT NULL,
     date character varying(10) NOT NULL,
     date_debut character varying(10),
     date_fin character varying(10),
     duree integer,
     surface real,
     contenu jsonb,
-    incertitudes jsonb,
     heritage_props jsonb,
     heritage_contenu jsonb,
     slug character varying(255),
-    decisions_annexes_sections jsonb[],
-    decisions_annexes_contenu json,
     archive boolean DEFAULT false NOT NULL,
     substances jsonb DEFAULT '[]'::jsonb NOT NULL,
-    secteurs_maritime jsonb,
-    administrations_locales jsonb,
-    sdom_zones jsonb
-);
-ALTER TABLE public.titres_etapes OWNER TO postgres;
-CREATE TABLE public.titres_etapes_justificatifs (
-    titre_etape_id character varying(128) NOT NULL,
-    document_id character varying(255) NOT NULL
-);
-ALTER TABLE public.titres_etapes_justificatifs OWNER TO postgres;
-CREATE TABLE public.titres_forets (
-    titre_etape_id character varying(128) NOT NULL,
-    foret_id character varying(8) NOT NULL
-);
-ALTER TABLE public.titres_forets OWNER TO postgres;
-CREATE TABLE public.titres_points (
-    id character varying(255) NOT NULL,
-    titre_etape_id character varying(128) NOT NULL,
-    coordonnees point NOT NULL,
-    groupe integer NOT NULL,
-    contour integer NOT NULL,
-    point integer NOT NULL,
-    nom character varying(255),
-    description text,
-    subsidiaire boolean,
-    lot integer,
-    slug character varying(255)
-);
-ALTER TABLE public.titres_points OWNER TO postgres;
-CREATE TABLE public.titres_points_references (
-    id character varying(255) NOT NULL,
-    titre_point_id character varying(255),
-    geo_systeme_id character varying(5) NOT NULL,
-    coordonnees point NOT NULL,
-    opposable boolean,
-    slug character varying(255)
-);
-ALTER TABLE public.titres_points_references OWNER TO postgres;
-CREATE TABLE public.titres_titulaires (
+    secteurs_maritime jsonb DEFAULT '[]'::jsonb NOT NULL,
+    administrations_locales jsonb DEFAULT '[]'::jsonb NOT NULL,
+    sdom_zones jsonb DEFAULT '[]'::jsonb NOT NULL,
+    forets jsonb DEFAULT '[]'::jsonb NOT NULL,
+    communes jsonb DEFAULT '[]'::jsonb NOT NULL,
+    geojson4326_perimetre public.geometry(MultiPolygon,4326),
+    geojson4326_points jsonb,
+    geojson_origine_points jsonb,
+    geojson_origine_perimetre jsonb,
+    geojson_origine_geo_systeme_id character varying,
+    geojson4326_forages jsonb,
+    geojson_origine_forages jsonb,
+    titulaire_ids jsonb DEFAULT '[]'::jsonb NOT NULL,
+    amodiataire_ids jsonb DEFAULT '[]'::jsonb NOT NULL,
+    is_brouillon boolean DEFAULT false NOT NULL,
+    note jsonb DEFAULT json_build_object('valeur', '', 'is_avertissement', false) NOT NULL,
+    CONSTRAINT forages_origine_not_null_when_forages4326_not_null CHECK (((ROW(geojson4326_forages, geojson_origine_forages) IS NULL) OR (ROW(geojson4326_forages, geojson_origine_forages) IS NOT NULL))),
+    CONSTRAINT perimetre_origine_not_null_when_perimetre_4326_not_null CHECK (((ROW(geojson4326_perimetre, geojson_origine_geo_systeme_id, geojson_origine_perimetre) IS NULL) OR (ROW(geojson4326_perimetre, geojson_origine_geo_systeme_id, geojson_origine_perimetre) IS NOT NULL))),
+    CONSTRAINT points_origine_not_null_when_points_4326_not_null CHECK (((ROW(geojson4326_points, geojson_origine_points) IS NULL) OR (ROW(geojson4326_points, geojson_origine_points) IS NOT NULL)))
+);
+
+
+--
+-- Name: titres_etapes_entreprises_documents; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE public.titres_etapes_entreprises_documents (
     titre_etape_id character varying(128) NOT NULL,
-    entreprise_id character varying(64) NOT NULL,
-    operateur boolean
-);
-ALTER TABLE public.titres_titulaires OWNER TO postgres;
-CREATE TABLE public.titres_types (
-    id character varying(3) NOT NULL,
-    domaine_id character varying(1) NOT NULL,
-    type_id character varying(3) NOT NULL,
-    contenu_ids jsonb[],
-    archive boolean
-);
-ALTER TABLE public.titres_types OWNER TO postgres;
-CREATE TABLE public.titres_types__demarches_types__etapes_types (
-    titre_type_id character varying(3) NOT NULL,
-    ordre integer,
-    demarche_type_id character varying(7) NOT NULL,
-    etape_type_id character varying(3) NOT NULL,
-    sections jsonb[]
-);
-ALTER TABLE public.titres_types__demarches_types__etapes_types OWNER TO postgres;
-CREATE TABLE public.titres_types__demarches_types__etapes_types__justificatifs_t (
-    titre_type_id character varying(3) NOT NULL,
-    demarche_type_id character varying(7) NOT NULL,
-    etape_type_id character varying(3) NOT NULL,
-    document_type_id character varying(3) NOT NULL,
-    optionnel boolean,
-    description text
-);
-ALTER TABLE public.titres_types__demarches_types__etapes_types__justificatifs_t OWNER TO postgres;
-CREATE TABLE public.titres_types_types (
-    id character varying(2) NOT NULL,
-    nom character varying(255) NOT NULL,
-    description text,
-    ordre integer NOT NULL
-);
-ALTER TABLE public.titres_types_types OWNER TO postgres;
+    entreprise_document_id character varying(255) NOT NULL
+);
+
+
+--
+-- Name: utilisateurs; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.utilisateurs (
     id character varying(255) NOT NULL,
     email character varying(255),
@@ -366,292 +345,653 @@ CREATE TABLE public.utilisateurs (
     role character varying(255) NOT NULL,
     date_creation character varying(255) NOT NULL,
     administration_id character varying(255),
-    qgis_token character varying(255)
-);
-ALTER TABLE public.utilisateurs OWNER TO postgres;
+    qgis_token character varying(255),
+    keycloak_id character varying(255),
+    CONSTRAINT check_keycloak_id_not_null CHECK (((email IS NULL) OR (keycloak_id IS NOT NULL)))
+);
+
+
+--
+-- Name: utilisateurs__entreprises; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.utilisateurs__entreprises (
     utilisateur_id character varying(64),
     entreprise_id character varying(64)
 );
-ALTER TABLE public.utilisateurs__entreprises OWNER TO postgres;
+
+
+--
+-- Name: utilisateurs__titres; Type: TABLE; Schema: public; Owner: -
+--
+
 CREATE TABLE public.utilisateurs__titres (
     utilisateur_id character varying(255) NOT NULL,
     titre_id character varying(255) NOT NULL
 );
-ALTER TABLE public.utilisateurs__titres OWNER TO postgres;
-ALTER TABLE ONLY public.activites_types__documents_types
-    ADD CONSTRAINT activites_types__documents_types_pkey PRIMARY KEY (activite_type_id, document_type_id);
-ALTER TABLE ONLY public.activites_types__pays
-    ADD CONSTRAINT activites_types__pays_pkey PRIMARY KEY (pays_id, activite_type_id);
-ALTER TABLE ONLY public.activites_types
-    ADD CONSTRAINT activites_types_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: activites_documents activites_documents_pk; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.activites_documents
+    ADD CONSTRAINT activites_documents_pk PRIMARY KEY (id);
+
+
+--
+-- Name: administrations__activites_types__emails administrations__activites_types__emails_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.administrations__activites_types__emails
     ADD CONSTRAINT administrations__activites_types__emails_pkey PRIMARY KEY (administration_id, activite_type_id, email);
-ALTER TABLE ONLY public.administrations
-    ADD CONSTRAINT administrations_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.caches
-    ADD CONSTRAINT caches_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: communes communes_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.communes
     ADD CONSTRAINT communes_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.communes_postgis
-    ADD CONSTRAINT communes_postgis_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.demarches_types
-    ADD CONSTRAINT demarches_types_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.documents
-    ADD CONSTRAINT documents_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.documents_types
-    ADD CONSTRAINT documents_types_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.domaines
-    ADD CONSTRAINT domaines_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.entreprises__documents_types
-    ADD CONSTRAINT entreprises__documents_types_pkey PRIMARY KEY (document_type_id);
+
+
+--
+-- Name: entreprises_documents entreprises_documents_pk; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.entreprises_documents
+    ADD CONSTRAINT entreprises_documents_pk PRIMARY KEY (id);
+
+
+--
+-- Name: entreprises_etablissements entreprises_etablissements_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.entreprises_etablissements
     ADD CONSTRAINT entreprises_etablissements_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: entreprises entreprises_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.entreprises
     ADD CONSTRAINT entreprises_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.etapes_types__justificatifs_types
-    ADD CONSTRAINT etapes_types__justificatifs_types_pkey PRIMARY KEY (etape_type_id, document_type_id);
-ALTER TABLE ONLY public.etapes_types
-    ADD CONSTRAINT etapes_types_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.forets
-    ADD CONSTRAINT forets_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: etapes_documents etapes_documents_pk; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.etapes_documents
+    ADD CONSTRAINT etapes_documents_pk PRIMARY KEY (id);
+
+
+--
+-- Name: forets_postgis forets_postgis_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.forets_postgis
     ADD CONSTRAINT forets_postgis_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: journaux logs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.journaux
     ADD CONSTRAINT logs_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: perimetre_reference perimetre_reference_pk; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.perimetre_reference
+    ADD CONSTRAINT perimetre_reference_pk PRIMARY KEY (titre_etape_id, geo_systeme);
+
+
+--
+-- Name: sdom_zones_postgis sdom_zones_postgis_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.sdom_zones_postgis
     ADD CONSTRAINT sdom_zones_postgis_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: secteurs_maritime_postgis secteurs_maritime_postgis_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.secteurs_maritime_postgis
     ADD CONSTRAINT secteurs_maritime_postgis_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: titres__titres titres__titres_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres__titres
     ADD CONSTRAINT titres__titres_pkey PRIMARY KEY (titre_from_id, titre_to_id);
+
+
+--
+-- Name: titres_activites titres_activites_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres_activites
     ADD CONSTRAINT titres_activites_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.titres_amodiataires
-    ADD CONSTRAINT titres_amodiataires_pkey PRIMARY KEY (titre_etape_id, entreprise_id);
-ALTER TABLE ONLY public.titres_communes
-    ADD CONSTRAINT titres_communes_pkey PRIMARY KEY (titre_etape_id, commune_id);
-ALTER TABLE ONLY public.titres_demarches_liens
-    ADD CONSTRAINT titres_demarches_liens_pkey PRIMARY KEY (enfant_titre_demarche_id, parent_titre_demarche_id);
+
+
+--
+-- Name: titres_demarches titres_demarches_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres_demarches
     ADD CONSTRAINT titres_demarches_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.titres_etapes_justificatifs
-    ADD CONSTRAINT titres_etapes_justificatifs_pkey PRIMARY KEY (titre_etape_id, document_id);
+
+
+--
+-- Name: titres_etapes_entreprises_documents titres_etapes_justificatifs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.titres_etapes_entreprises_documents
+    ADD CONSTRAINT titres_etapes_justificatifs_pkey PRIMARY KEY (titre_etape_id, entreprise_document_id);
+
+
+--
+-- Name: titres_etapes titres_etapes_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres_etapes
     ADD CONSTRAINT titres_etapes_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.titres_forets
-    ADD CONSTRAINT titres_forets_pkey PRIMARY KEY (titre_etape_id, foret_id);
+
+
+--
+-- Name: titres titres_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres
     ADD CONSTRAINT titres_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.titres_points
-    ADD CONSTRAINT titres_points_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.titres_points_references
-    ADD CONSTRAINT titres_points_references_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.titres_titulaires
-    ADD CONSTRAINT titres_titulaires_pkey PRIMARY KEY (titre_etape_id, entreprise_id);
-ALTER TABLE ONLY public.activites_types__titres_types
-    ADD CONSTRAINT titres_types__activites_types_pkey PRIMARY KEY (titre_type_id, activite_type_id);
-ALTER TABLE ONLY public.titres_types__demarches_types__etapes_types__justificatifs_t
-    ADD CONSTRAINT titres_types__demarches_types__etapes_types__justificatifs_t_pk PRIMARY KEY (titre_type_id, demarche_type_id, etape_type_id, document_type_id);
-ALTER TABLE ONLY public.titres_types__demarches_types__etapes_types
-    ADD CONSTRAINT titres_types__demarches_types__etapes_types_pkey PRIMARY KEY (titre_type_id, demarche_type_id, etape_type_id);
-ALTER TABLE ONLY public.titres_types
-    ADD CONSTRAINT titres_types_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.titres_types_types
-    ADD CONSTRAINT titres_types_types_pkey PRIMARY KEY (id);
-ALTER TABLE ONLY public.titres_types
-    ADD CONSTRAINT titrestypes_domaineid_typeid_unique UNIQUE (domaine_id, type_id);
+
+
+--
+-- Name: utilisateurs__titres utilisateurs__titres_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.utilisateurs__titres
     ADD CONSTRAINT utilisateurs__titres_pkey PRIMARY KEY (utilisateur_id, titre_id);
+
+
+--
+-- Name: utilisateurs utilisateurs_email_unique; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.utilisateurs
     ADD CONSTRAINT utilisateurs_email_unique UNIQUE (email);
+
+
+--
+-- Name: utilisateurs utilisateurs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.utilisateurs
     ADD CONSTRAINT utilisateurs_pkey PRIMARY KEY (id);
-CREATE INDEX activitestypes__documentstypes_activitetypeid_index ON public.activites_types__documents_types USING btree (activite_type_id);
-CREATE INDEX activitestypes__documentstypes_documenttypeid_index ON public.activites_types__documents_types USING btree (document_type_id);
-CREATE INDEX activitestypes__pays_activitetypeid_index ON public.activites_types__pays USING btree (activite_type_id);
-CREATE INDEX activitestypes_frequenceid_index ON public.activites_types USING btree (frequence_id);
+
+
+--
+-- Name: administrations__activitestypes__emails_activitetypeid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX administrations__activitestypes__emails_activitetypeid_index ON public.administrations__activites_types__emails USING btree (activite_type_id);
+
+
+--
+-- Name: administrations__activitestypes__emails_administrationid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX administrations__activitestypes__emails_administrationid_index ON public.administrations__activites_types__emails USING btree (administration_id);
-CREATE INDEX administrations__activitestypes_activitetypeid_index ON public.administrations__activites_types USING btree (activite_type_id);
-CREATE INDEX administrations__activitestypes_administrationid_index ON public.administrations__activites_types USING btree (administration_id);
-CREATE INDEX documents_entrepriseid_index ON public.documents USING btree (entreprise_id);
-CREATE INDEX documents_titreactiviteid_index ON public.documents USING btree (titre_activite_id);
-CREATE INDEX documents_titreetapeid_index ON public.documents USING btree (titre_etape_id);
-CREATE INDEX documents_typeid_index ON public.documents USING btree (type_id);
-CREATE INDEX entreprises__documentstypes_documenttypeid_index ON public.entreprises__documents_types USING btree (document_type_id);
+
+
+--
+-- Name: entreprisesetablissements_entrepriseid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX entreprisesetablissements_entrepriseid_index ON public.entreprises_etablissements USING btree (entreprise_id);
-CREATE INDEX etapestypes__justificatifstypes_documenttypeid_index ON public.etapes_types__justificatifs_types USING btree (document_type_id);
-CREATE INDEX etapestypes__justificatifstypes_etapetypeid_index ON public.etapes_types__justificatifs_types USING btree (etape_type_id);
-CREATE INDEX index_geo_communes ON public.communes_postgis USING spgist (geometry);
+
+
+--
+-- Name: index_geo_communes; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_geo_communes ON public.communes USING spgist (geometry);
+
+
+--
+-- Name: index_geo_forets; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX index_geo_forets ON public.forets_postgis USING spgist (geometry);
+
+
+--
+-- Name: index_geo_sdom_zones; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX index_geo_sdom_zones ON public.sdom_zones_postgis USING spgist (geometry);
+
+
+--
+-- Name: index_geo_secteurs_maritime; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX index_geo_secteurs_maritime ON public.secteurs_maritime_postgis USING spgist (geometry);
+
+
+--
+-- Name: journaux_titreid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX journaux_titreid_index ON public.journaux USING btree (titre_id);
+
+
+--
+-- Name: logs_utilisateurid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX logs_utilisateurid_index ON public.journaux USING btree (utilisateur_id);
+
+
+--
+-- Name: titres__titres_titrefromid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titres__titres_titrefromid_index ON public.titres__titres USING btree (titre_from_id);
+
+
+--
+-- Name: titres__titres_titretoid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titres__titres_titretoid_index ON public.titres__titres USING btree (titre_to_id);
-CREATE INDEX titres_coordonnees_index ON public.titres USING gist (coordonnees);
+
+
+--
+-- Name: titres_domaines_idx; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX titres_domaines_idx ON public.titres USING btree ("right"((type_id)::text, 1));
+
+
+--
+-- Name: titres_etapes_administrations_locales_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titres_etapes_administrations_locales_index ON public.titres_etapes USING btree (administrations_locales);
+
+
+--
+-- Name: titres_etapes_geom_idx; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX titres_etapes_geom_idx ON public.titres_etapes USING gist (geojson4326_perimetre);
+
+
+--
+-- Name: titres_etapes_sdom_zones_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titres_etapes_sdom_zones_index ON public.titres_etapes USING btree (sdom_zones);
+
+
+--
+-- Name: titres_etapes_secteurs_maritime_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titres_etapes_secteurs_maritime_index ON public.titres_etapes USING btree (secteurs_maritime);
+
+
+--
+-- Name: titres_etapes_substances_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titres_etapes_substances_index ON public.titres_etapes USING btree (substances);
+
+
+--
+-- Name: titres_references_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titres_references_index ON public.titres USING btree ("references");
+
+
+--
+-- Name: titres_slug_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titres_slug_index ON public.titres USING btree (slug);
+
+
+--
+-- Name: titres_statutid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titres_statutid_index ON public.titres USING btree (titre_statut_id);
+
+
+--
+-- Name: titres_typeid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titres_typeid_index ON public.titres USING btree (type_id);
+
+
+--
+-- Name: titres_types_types_idx; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX titres_types_types_idx ON public.titres USING btree ("left"((type_id)::text, 2));
+
+
+--
+-- Name: titresactivites_slug_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresactivites_slug_index ON public.titres_activites USING btree (slug);
+
+
+--
+-- Name: titresactivites_statutid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresactivites_statutid_index ON public.titres_activites USING btree (activite_statut_id);
+
+
+--
+-- Name: titresactivites_titreid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresactivites_titreid_index ON public.titres_activites USING btree (titre_id);
+
+
+--
+-- Name: titresactivites_typeid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresactivites_typeid_index ON public.titres_activites USING btree (type_id);
+
+
+--
+-- Name: titresactivites_utilisateurid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresactivites_utilisateurid_index ON public.titres_activites USING btree (utilisateur_id);
-CREATE INDEX titresamodiataires_entrepriseid_index ON public.titres_amodiataires USING btree (entreprise_id);
-CREATE INDEX titresamodiataires_titreetapeid_index ON public.titres_amodiataires USING btree (titre_etape_id);
-CREATE INDEX titrescommunes_communeid_index ON public.titres_communes USING btree (commune_id);
-CREATE INDEX titrescommunes_titreetapeid_index ON public.titres_communes USING btree (titre_etape_id);
+
+
+--
+-- Name: titresdemarches_slug_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresdemarches_slug_index ON public.titres_demarches USING btree (slug);
+
+
+--
+-- Name: titresdemarches_statutid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresdemarches_statutid_index ON public.titres_demarches USING btree (statut_id);
+
+
+--
+-- Name: titresdemarches_titreid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresdemarches_titreid_index ON public.titres_demarches USING btree (titre_id);
+
+
+--
+-- Name: titresdemarches_typeid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresdemarches_typeid_index ON public.titres_demarches USING btree (type_id);
-CREATE INDEX titresdemarchesliens_enfanttitredemarcheid_index ON public.titres_demarches_liens USING btree (enfant_titre_demarche_id);
-CREATE INDEX titresdemarchesliens_parenttitredemarcheid_index ON public.titres_demarches_liens USING btree (parent_titre_demarche_id);
+
+
+--
+-- Name: titresetapes_slug_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresetapes_slug_index ON public.titres_etapes USING btree (slug);
+
+
+--
+-- Name: titresetapes_statutid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresetapes_statutid_index ON public.titres_etapes USING btree (statut_id);
+
+
+--
+-- Name: titresetapes_titredemarcheid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresetapes_titredemarcheid_index ON public.titres_etapes USING btree (titre_demarche_id);
+
+
+--
+-- Name: titresetapes_typeid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX titresetapes_typeid_index ON public.titres_etapes USING btree (type_id);
-CREATE INDEX titresetapesjustificatifs_documentid_index ON public.titres_etapes_justificatifs USING btree (document_id);
-CREATE INDEX titresetapesjustificatifs_titreetapeid_index ON public.titres_etapes_justificatifs USING btree (titre_etape_id);
-CREATE INDEX titresforets_foretid_index ON public.titres_forets USING btree (foret_id);
-CREATE INDEX titresforets_titreetapeid_index ON public.titres_forets USING btree (titre_etape_id);
-CREATE INDEX titrespoints_coordonnees_index ON public.titres_points USING gist (coordonnees);
-CREATE INDEX titrespoints_slug_index ON public.titres_points USING btree (slug);
-CREATE INDEX titrespoints_titreetapeid_index ON public.titres_points USING btree (titre_etape_id);
-CREATE INDEX titrespointsreferences_slug_index ON public.titres_points_references USING btree (slug);
-CREATE INDEX titrespointsreferences_titrepointid_index ON public.titres_points_references USING btree (titre_point_id);
-CREATE INDEX titrestitulaires_entrepriseid_index ON public.titres_titulaires USING btree (entreprise_id);
-CREATE INDEX titrestitulaires_titreetapeid_index ON public.titres_titulaires USING btree (titre_etape_id);
-CREATE INDEX titrestypes__activitestypes_activitetypeid_index ON public.activites_types__titres_types USING btree (activite_type_id);
-CREATE INDEX titrestypes__activitestypes_titretypeid_index ON public.activites_types__titres_types USING btree (titre_type_id);
-CREATE INDEX titrestypes__demarchestypes__etapestypes__justificatifst_demarc ON public.titres_types__demarches_types__etapes_types__justificatifs_t USING btree (demarche_type_id);
-CREATE INDEX titrestypes__demarchestypes__etapestypes__justificatifst_docume ON public.titres_types__demarches_types__etapes_types__justificatifs_t USING btree (document_type_id);
-CREATE INDEX titrestypes__demarchestypes__etapestypes__justificatifst_etapet ON public.titres_types__demarches_types__etapes_types__justificatifs_t USING btree (etape_type_id);
-CREATE INDEX titrestypes__demarchestypes__etapestypes__justificatifst_titret ON public.titres_types__demarches_types__etapes_types__justificatifs_t USING btree (titre_type_id);
-CREATE INDEX titrestypes__demarchestypes__etapestypes_demarchetypeid_index ON public.titres_types__demarches_types__etapes_types USING btree (demarche_type_id);
-CREATE INDEX titrestypes__demarchestypes__etapestypes_etapetypeid_index ON public.titres_types__demarches_types__etapes_types USING btree (etape_type_id);
-CREATE INDEX titrestypes__demarchestypes__etapestypes_titretypeid_index ON public.titres_types__demarches_types__etapes_types USING btree (titre_type_id);
-CREATE INDEX titrestypes_domaineid_index ON public.titres_types USING btree (domaine_id);
-CREATE INDEX titrestypes_typeid_index ON public.titres_types USING btree (type_id);
+
+
+--
+-- Name: titresetapesjustificatifs_documentid_index; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX titresetapesjustificatifs_documentid_index ON public.titres_etapes_entreprises_documents USING btree (entreprise_document_id);
+
+
+--
+-- Name: titresetapesjustificatifs_titreetapeid_index; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX titresetapesjustificatifs_titreetapeid_index ON public.titres_etapes_entreprises_documents USING btree (titre_etape_id);
+
+
+--
+-- Name: utilisateurs__entreprises_entrepriseid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX utilisateurs__entreprises_entrepriseid_index ON public.utilisateurs__entreprises USING btree (entreprise_id);
+
+
+--
+-- Name: utilisateurs__entreprises_utilisateurid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX utilisateurs__entreprises_utilisateurid_index ON public.utilisateurs__entreprises USING btree (utilisateur_id);
+
+
+--
+-- Name: utilisateurs__titres_titreid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX utilisateurs__titres_titreid_index ON public.utilisateurs__titres USING btree (titre_id);
+
+
+--
+-- Name: utilisateurs__titres_utilisateurid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX utilisateurs__titres_utilisateurid_index ON public.utilisateurs__titres USING btree (utilisateur_id);
+
+
+--
+-- Name: utilisateurs_administrationid_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX utilisateurs_administrationid_index ON public.utilisateurs USING btree (administration_id);
+
+
+--
+-- Name: utilisateurs_qgis_token_index; Type: INDEX; Schema: public; Owner: -
+--
+
 CREATE INDEX utilisateurs_qgis_token_index ON public.utilisateurs USING btree (qgis_token);
-ALTER TABLE ONLY public.activites_types__documents_types
-    ADD CONSTRAINT activitestypes__documentstypes_activitetypeid_foreign FOREIGN KEY (activite_type_id) REFERENCES public.activites_types(id);
-ALTER TABLE ONLY public.activites_types__documents_types
-    ADD CONSTRAINT activitestypes__documentstypes_documenttypeid_foreign FOREIGN KEY (document_type_id) REFERENCES public.documents_types(id);
-ALTER TABLE ONLY public.activites_types__pays
-    ADD CONSTRAINT activitestypes__pays_activitetypeid_foreign FOREIGN KEY (activite_type_id) REFERENCES public.activites_types(id) ON DELETE CASCADE;
-ALTER TABLE ONLY public.administrations__activites_types__emails
-    ADD CONSTRAINT administrations__activitestypes__emails_activitetypeid_foreign FOREIGN KEY (activite_type_id) REFERENCES public.activites_types(id) ON DELETE CASCADE;
-ALTER TABLE ONLY public.administrations__activites_types__emails
-    ADD CONSTRAINT administrations__activitestypes__emails_administrationid_foreig FOREIGN KEY (administration_id) REFERENCES public.administrations(id) ON DELETE CASCADE;
-ALTER TABLE ONLY public.administrations__activites_types
-    ADD CONSTRAINT administrations__activitestypes_activitetypeid_foreign FOREIGN KEY (activite_type_id) REFERENCES public.activites_types(id) ON DELETE CASCADE;
-ALTER TABLE ONLY public.administrations__activites_types
-    ADD CONSTRAINT administrations__activitestypes_administrationid_foreign FOREIGN KEY (administration_id) REFERENCES public.administrations(id) ON DELETE CASCADE;
-ALTER TABLE ONLY public.documents
-    ADD CONSTRAINT documents_entrepriseid_foreign FOREIGN KEY (entreprise_id) REFERENCES public.entreprises(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.documents
-    ADD CONSTRAINT documents_titreactiviteid_foreign FOREIGN KEY (titre_activite_id) REFERENCES public.titres_activites(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.documents
-    ADD CONSTRAINT documents_titreetapeid_foreign FOREIGN KEY (titre_etape_id) REFERENCES public.titres_etapes(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.documents
-    ADD CONSTRAINT documents_typeid_foreign FOREIGN KEY (type_id) REFERENCES public.documents_types(id);
-ALTER TABLE ONLY public.entreprises__documents_types
-    ADD CONSTRAINT entreprises__documentstypes_documenttypeid_foreign FOREIGN KEY (document_type_id) REFERENCES public.documents_types(id);
+
+
+--
+-- Name: activites_documents activites_documents_fk; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.activites_documents
+    ADD CONSTRAINT activites_documents_fk FOREIGN KEY (activite_id) REFERENCES public.titres_activites(id);
+
+
+--
+-- Name: entreprises_documents entreprises_documents_fk; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.entreprises_documents
+    ADD CONSTRAINT entreprises_documents_fk FOREIGN KEY (entreprise_id) REFERENCES public.entreprises(id);
+
+
+--
+-- Name: entreprises_etablissements entreprisesetablissements_entrepriseid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.entreprises_etablissements
     ADD CONSTRAINT entreprisesetablissements_entrepriseid_foreign FOREIGN KEY (entreprise_id) REFERENCES public.entreprises(id) ON DELETE CASCADE;
-ALTER TABLE ONLY public.etapes_types__justificatifs_types
-    ADD CONSTRAINT etapestypes__justificatifstypes_documenttypeid_foreign FOREIGN KEY (document_type_id) REFERENCES public.entreprises__documents_types(document_type_id);
-ALTER TABLE ONLY public.etapes_types__justificatifs_types
-    ADD CONSTRAINT etapestypes__justificatifstypes_etapetypeid_foreign FOREIGN KEY (etape_type_id) REFERENCES public.etapes_types(id) ON DELETE CASCADE;
+
+
+--
+-- Name: etapes_documents etapes_documents_fk; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.etapes_documents
+    ADD CONSTRAINT etapes_documents_fk FOREIGN KEY (etape_id) REFERENCES public.titres_etapes(id);
+
+
+--
+-- Name: journaux journaux_titreid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.journaux
     ADD CONSTRAINT journaux_titreid_foreign FOREIGN KEY (titre_id) REFERENCES public.titres(id) ON UPDATE CASCADE ON DELETE CASCADE;
+
+
+--
+-- Name: logs logs__utilisateur_id__foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.logs
+    ADD CONSTRAINT logs__utilisateur_id__foreign FOREIGN KEY (utilisateur_id) REFERENCES public.utilisateurs(id);
+
+
+--
+-- Name: perimetre_reference perimetre_reference_titre_etape_fk; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.perimetre_reference
+    ADD CONSTRAINT perimetre_reference_titre_etape_fk FOREIGN KEY (titre_etape_id) REFERENCES public.titres_etapes(id);
+
+
+--
+-- Name: titres__titres titres__titres_titrefromid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres__titres
     ADD CONSTRAINT titres__titres_titrefromid_foreign FOREIGN KEY (titre_from_id) REFERENCES public.titres(id);
+
+
+--
+-- Name: titres__titres titres__titres_titretoid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres__titres
     ADD CONSTRAINT titres__titres_titretoid_foreign FOREIGN KEY (titre_to_id) REFERENCES public.titres(id);
-ALTER TABLE ONLY public.titres
-    ADD CONSTRAINT titres_typeid_foreign FOREIGN KEY (type_id) REFERENCES public.titres_types(id);
+
+
+--
+-- Name: titres_etapes_entreprises_documents titres_etapes_entreprises_documents_fk; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.titres_etapes_entreprises_documents
+    ADD CONSTRAINT titres_etapes_entreprises_documents_fk FOREIGN KEY (entreprise_document_id) REFERENCES public.entreprises_documents(id);
+
+
+--
+-- Name: titres_activites titresactivites_titreid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres_activites
     ADD CONSTRAINT titresactivites_titreid_foreign FOREIGN KEY (titre_id) REFERENCES public.titres(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_activites
-    ADD CONSTRAINT titresactivites_typeid_foreign FOREIGN KEY (type_id) REFERENCES public.activites_types(id);
+
+
+--
+-- Name: titres_activites titresactivites_utilisateurid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres_activites
     ADD CONSTRAINT titresactivites_utilisateurid_foreign FOREIGN KEY (utilisateur_id) REFERENCES public.utilisateurs(id);
-ALTER TABLE ONLY public.titres_amodiataires
-    ADD CONSTRAINT titresamodiataires_entrepriseid_foreign FOREIGN KEY (entreprise_id) REFERENCES public.entreprises(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_amodiataires
-    ADD CONSTRAINT titresamodiataires_titreetapeid_foreign FOREIGN KEY (titre_etape_id) REFERENCES public.titres_etapes(id) ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_communes
-    ADD CONSTRAINT titrescommunes_communeid_foreign FOREIGN KEY (commune_id) REFERENCES public.communes(id);
-ALTER TABLE ONLY public.titres_communes
-    ADD CONSTRAINT titrescommunes_titreetapeid_foreign FOREIGN KEY (titre_etape_id) REFERENCES public.titres_etapes(id) ON UPDATE CASCADE ON DELETE CASCADE;
+
+
+--
+-- Name: titres_demarches titresdemarches_titreid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres_demarches
     ADD CONSTRAINT titresdemarches_titreid_foreign FOREIGN KEY (titre_id) REFERENCES public.titres(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_demarches
-    ADD CONSTRAINT titresdemarches_typeid_foreign FOREIGN KEY (type_id) REFERENCES public.demarches_types(id);
-ALTER TABLE ONLY public.titres_demarches_liens
-    ADD CONSTRAINT titresdemarchesliens_enfanttitredemarcheid_foreign FOREIGN KEY (enfant_titre_demarche_id) REFERENCES public.titres_demarches(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_demarches_liens
-    ADD CONSTRAINT titresdemarchesliens_parenttitredemarcheid_foreign FOREIGN KEY (parent_titre_demarche_id) REFERENCES public.titres_demarches(id) ON UPDATE CASCADE ON DELETE CASCADE;
+
+
+--
+-- Name: titres_etapes titresetapes_titredemarcheid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.titres_etapes
     ADD CONSTRAINT titresetapes_titredemarcheid_foreign FOREIGN KEY (titre_demarche_id) REFERENCES public.titres_demarches(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_etapes
-    ADD CONSTRAINT titresetapes_typeid_foreign FOREIGN KEY (type_id) REFERENCES public.etapes_types(id);
-ALTER TABLE ONLY public.titres_etapes_justificatifs
-    ADD CONSTRAINT titresetapesjustificatifs_documentid_foreign FOREIGN KEY (document_id) REFERENCES public.documents(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_etapes_justificatifs
+
+
+--
+-- Name: titres_etapes_entreprises_documents titresetapesjustificatifs_titreetapeid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.titres_etapes_entreprises_documents
     ADD CONSTRAINT titresetapesjustificatifs_titreetapeid_foreign FOREIGN KEY (titre_etape_id) REFERENCES public.titres_etapes(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_forets
-    ADD CONSTRAINT titresforets_foretid_foreign FOREIGN KEY (foret_id) REFERENCES public.forets(id);
-ALTER TABLE ONLY public.titres_forets
-    ADD CONSTRAINT titresforets_titreetapeid_foreign FOREIGN KEY (titre_etape_id) REFERENCES public.titres_etapes(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_points
-    ADD CONSTRAINT titrespoints_titreetapeid_foreign FOREIGN KEY (titre_etape_id) REFERENCES public.titres_etapes(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_points_references
-    ADD CONSTRAINT titrespointsreferences_titrepointid_foreign FOREIGN KEY (titre_point_id) REFERENCES public.titres_points(id) ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_titulaires
-    ADD CONSTRAINT titrestitulaires_entrepriseid_foreign FOREIGN KEY (entreprise_id) REFERENCES public.entreprises(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.titres_titulaires
-    ADD CONSTRAINT titrestitulaires_titreetapeid_foreign FOREIGN KEY (titre_etape_id) REFERENCES public.titres_etapes(id) ON UPDATE CASCADE ON DELETE CASCADE;
-ALTER TABLE ONLY public.activites_types__titres_types
-    ADD CONSTRAINT titrestypes__activitestypes_activitetypeid_foreign FOREIGN KEY (activite_type_id) REFERENCES public.activites_types(id);
-ALTER TABLE ONLY public.activites_types__titres_types
-    ADD CONSTRAINT titrestypes__activitestypes_titretypeid_foreign FOREIGN KEY (titre_type_id) REFERENCES public.titres_types(id);
-ALTER TABLE ONLY public.titres_types__demarches_types__etapes_types__justificatifs_t
-    ADD CONSTRAINT titrestypes__demarchestypes__etapestypes__justificatifst_docume FOREIGN KEY (document_type_id) REFERENCES public.documents_types(id);
-ALTER TABLE ONLY public.titres_types__demarches_types__etapes_types__justificatifs_t
-    ADD CONSTRAINT titrestypes__demarchestypes__etapestypes__justificatifst_titret FOREIGN KEY (titre_type_id, demarche_type_id, etape_type_id) REFERENCES public.titres_types__demarches_types__etapes_types(titre_type_id, demarche_type_id, etape_type_id);
-ALTER TABLE ONLY public.titres_types__demarches_types__etapes_types
-    ADD CONSTRAINT titrestypes__demarchestypes__etapestypes_demarchetypeid_foreign FOREIGN KEY (demarche_type_id) REFERENCES public.demarches_types(id);
-ALTER TABLE ONLY public.titres_types__demarches_types__etapes_types
-    ADD CONSTRAINT titrestypes__demarchestypes__etapestypes_etapetypeid_foreign FOREIGN KEY (etape_type_id) REFERENCES public.etapes_types(id);
-ALTER TABLE ONLY public.titres_types__demarches_types__etapes_types
-    ADD CONSTRAINT titrestypes__demarchestypes__etapestypes_titretypeid_foreign FOREIGN KEY (titre_type_id) REFERENCES public.titres_types(id);
-ALTER TABLE ONLY public.titres_types
-    ADD CONSTRAINT titrestypes_domaineid_foreign FOREIGN KEY (domaine_id) REFERENCES public.domaines(id);
-ALTER TABLE ONLY public.titres_types
-    ADD CONSTRAINT titrestypes_typeid_foreign FOREIGN KEY (type_id) REFERENCES public.titres_types_types(id);
+
+
+--
+-- Name: utilisateurs__entreprises utilisateurs__entreprises_entrepriseid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.utilisateurs__entreprises
     ADD CONSTRAINT utilisateurs__entreprises_entrepriseid_foreign FOREIGN KEY (entreprise_id) REFERENCES public.entreprises(id) ON DELETE CASCADE;
+
+
+--
+-- Name: utilisateurs__entreprises utilisateurs__entreprises_utilisateurid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.utilisateurs__entreprises
     ADD CONSTRAINT utilisateurs__entreprises_utilisateurid_foreign FOREIGN KEY (utilisateur_id) REFERENCES public.utilisateurs(id) ON DELETE CASCADE;
+
+
+--
+-- Name: utilisateurs__titres utilisateurs__titres_titreid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.utilisateurs__titres
     ADD CONSTRAINT utilisateurs__titres_titreid_foreign FOREIGN KEY (titre_id) REFERENCES public.titres(id) ON DELETE CASCADE;
+
+
+--
+-- Name: utilisateurs__titres utilisateurs__titres_utilisateurid_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
 ALTER TABLE ONLY public.utilisateurs__titres
     ADD CONSTRAINT utilisateurs__titres_utilisateurid_foreign FOREIGN KEY (utilisateur_id) REFERENCES public.utilisateurs(id) ON DELETE CASCADE;
-ALTER TABLE ONLY public.utilisateurs
-    ADD CONSTRAINT utilisateurs_administrationid_foreign FOREIGN KEY (administration_id) REFERENCES public.administrations(id);
+
+
+--
+-- PostgreSQL database dump complete
+--
diff --git a/packages/api/src/knex/migrations/20230425155734_titre-slug-not-nullable.ts b/packages/api/src/knex/migrations/20230425155734_titre-slug-not-nullable.ts
deleted file mode 100644
index 77cc8c115..000000000
--- a/packages/api/src/knex/migrations/20230425155734_titre-slug-not-nullable.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('alter table titres alter column slug set not null;')
-  await knex.raw('ALTER TABLE titres_activites ALTER COLUMN "date" SET NOT NULL;')
-  await knex.raw('ALTER TABLE public.titres_activites ALTER COLUMN annee SET NOT NULL;')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20230503084344_titre-activites-sections-options.ts b/packages/api/src/knex/migrations/20230503084344_titre-activites-sections-options.ts
deleted file mode 100644
index bc2f30225..000000000
--- a/packages/api/src/knex/migrations/20230503084344_titre-activites-sections-options.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  const activitesSections: {
-    rows: {
-      id: string
-      sections: { elements?: { valeurs?: any[]; options?: any[] }[] }[]
-    }[]
-  } = await knex.raw("select id, sections from titres_activites where sections::text like '%valeurs%' ")
-
-  // Renomme toutes les clés « valeurs » en « options »
-  for (const activitesSection of activitesSections.rows) {
-    const newSections = []
-
-    for (const section of activitesSection.sections) {
-      if (section.elements) {
-        for (const element of section.elements) {
-          if (element.valeurs) {
-            element.options = [...element.valeurs]
-            delete element.valeurs
-          }
-        }
-      }
-
-      newSections.push(section)
-    }
-    await knex.raw('update titres_activites set sections = ? where id = ?', [newSections, activitesSection.id])
-  }
-
-  const etapesSections: {
-    rows: {
-      id: string
-      decisions_annexes_sections: { elements?: { valeurs?: any[]; options?: any[] }[] }[]
-    }[]
-  } = await knex.raw("select id, decisions_annexes_sections from titres_etapes where decisions_annexes_sections::text like '%valeurs%' ")
-
-  for (const etapeSection of etapesSections.rows) {
-    const newSections = []
-
-    for (const section of etapeSection.decisions_annexes_sections) {
-      if (section.elements) {
-        for (const element of section.elements) {
-          if (element.valeurs) {
-            element.options = [...element.valeurs]
-            delete element.valeurs
-          }
-        }
-      }
-
-      newSections.push(section)
-    }
-    await knex.raw('update titres_etapes set decisions_annexes_sections = ? where id = ?', [newSections, etapeSection.id])
-  }
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20230503125136_delete-type-sections.ts b/packages/api/src/knex/migrations/20230503125136_delete-type-sections.ts
deleted file mode 100644
index 90ba34de5..000000000
--- a/packages/api/src/knex/migrations/20230503125136_delete-type-sections.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('alter table activites_types drop column sections;')
-  await knex.raw('alter table etapes_types drop column sections;')
-  await knex.raw('alter table titres_types__demarches_types__etapes_types drop column sections;')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20230510144301_improve-documents.ts b/packages/api/src/knex/migrations/20230510144301_improve-documents.ts
deleted file mode 100644
index 6ba4a2c0e..000000000
--- a/packages/api/src/knex/migrations/20230510144301_improve-documents.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw("update documents set description='' where description is null")
-  await knex.raw('ALTER TABLE documents ALTER COLUMN description SET NOT NULL')
-  await knex.raw("ALTER TABLE documents ALTER COLUMN description SET DEFAULT ''")
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20230605080141_refactor-communes-forets.ts b/packages/api/src/knex/migrations/20230605080141_refactor-communes-forets.ts
deleted file mode 100644
index 9c1ea5f2a..000000000
--- a/packages/api/src/knex/migrations/20230605080141_refactor-communes-forets.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex): Promise<void> => {
-  await knex.raw('alter table communes drop column departement_id')
-  await knex.raw("alter table titres_etapes add column forets jsonb DEFAULT '[]'::jsonb NOT NULL")
-  await knex.raw("alter table titres_etapes add column communes jsonb DEFAULT '[]'::jsonb NOT NULL")
-
-  const forets = await knex.select().from('titres_forets')
-
-  const foretsByTitreEtapes = forets.reduce((acc, foret) => {
-    // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
-    if (!acc[foret.titreEtapeId]) {
-      acc[foret.titreEtapeId] = []
-    }
-    acc[foret.titreEtapeId].push(foret.foretId)
-
-    return acc
-  }, {})
-
-  for (const titreEtapeId in foretsByTitreEtapes) {
-    await knex('titres_etapes')
-      .update({ forets: JSON.stringify(foretsByTitreEtapes[titreEtapeId].toSorted()) })
-      .where('id', titreEtapeId)
-  }
-
-  const communes = await knex.select().from('titres_communes')
-
-  const communesByTitreEtapes = communes.reduce((acc, commune) => {
-    // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
-    if (!acc[commune.titreEtapeId]) {
-      acc[commune.titreEtapeId] = []
-    }
-    acc[commune.titreEtapeId].push({ id: commune.communeId, surface: commune.surface })
-
-    return acc
-  }, {})
-
-  for (const titreEtapeId in communesByTitreEtapes) {
-    await knex('titres_etapes')
-      .update({ communes: JSON.stringify(communesByTitreEtapes[titreEtapeId].toSorted((a: any, b: any) => a.id.localeCompare(b.id))) })
-      .where('id', titreEtapeId)
-  }
-  await knex.raw('drop table titres_forets')
-  await knex.raw('drop table titres_communes')
-  await knex.raw('drop table forets')
-}
-
-export const down = (): void => {}
diff --git a/packages/api/src/knex/migrations/20230607092129_etape-ordre-not-null.ts b/packages/api/src/knex/migrations/20230607092129_etape-ordre-not-null.ts
deleted file mode 100644
index f2adbb4aa..000000000
--- a/packages/api/src/knex/migrations/20230607092129_etape-ordre-not-null.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('ALTER TABLE titres_etapes ALTER COLUMN ordre SET NOT NULL')
-  await knex.raw('ALTER TABLE titres_etapes ALTER COLUMN ordre SET DEFAULT 0')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20230613075149_refactor-justificatifs.ts b/packages/api/src/knex/migrations/20230613075149_refactor-justificatifs.ts
deleted file mode 100644
index d549d2724..000000000
--- a/packages/api/src/knex/migrations/20230613075149_refactor-justificatifs.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.schema.dropTable('titres_demarches_liens')
-  await knex.schema.dropTable('titres_types__demarches_types__etapes_types__justificatifs_t')
-  await knex.schema.dropTable('etapes_types__justificatifs_types')
-  await knex.schema.dropTable('entreprises__documents_types')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20230613133254_extract-entreprises-documents.ts b/packages/api/src/knex/migrations/20230613133254_extract-entreprises-documents.ts
deleted file mode 100644
index 2472f1ef0..000000000
--- a/packages/api/src/knex/migrations/20230613133254_extract-entreprises-documents.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw(
-    'CREATE TABLE entreprises_documents (id character varying(255) NOT NULL, entreprise_document_type_id character varying(3) NOT NULL, date character varying(10) NOT NULL, entreprise_id character varying(64), description character varying(1024))'
-  )
-  await knex.raw('ALTER TABLE entreprises_documents ADD CONSTRAINT entreprises_documents_pk PRIMARY KEY (id)')
-  await knex.raw('ALTER TABLE entreprises_documents ADD CONSTRAINT entreprises_documents_fk FOREIGN KEY (entreprise_id) REFERENCES entreprises(id);')
-
-  await knex.raw(
-    'insert into entreprises_documents (id, entreprise_document_type_id, date, entreprise_id, description) (SELECT id, type_id as entreprise_document_type_id, date, entreprise_id, description from documents where entreprise_id is not null)'
-  )
-
-  await knex.raw('alter table titres_etapes_justificatifs drop constraint "titresetapesjustificatifs_documentid_foreign"')
-  await knex.raw('ALTER TABLE titres_etapes_justificatifs RENAME TO titres_etapes_entreprises_documents')
-  await knex.raw('ALTER TABLE titres_etapes_entreprises_documents RENAME COLUMN document_id TO entreprise_document_id')
-  await knex.raw('ALTER TABLE titres_etapes_entreprises_documents ADD CONSTRAINT titres_etapes_entreprises_documents_fk FOREIGN KEY (entreprise_document_id) REFERENCES entreprises_documents(id);')
-
-  await knex.raw('delete from documents where entreprise_id is not null')
-
-  await knex.raw('ALTER TABLE documents DROP CONSTRAINT documents_entrepriseid_foreign')
-
-  return knex.raw('ALTER TABLE documents DROP COLUMN entreprise_id')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20230823090330_delete-activiteType-titreType.ts b/packages/api/src/knex/migrations/20230823090330_delete-activiteType-titreType.ts
deleted file mode 100644
index a0a9fd6c8..000000000
--- a/packages/api/src/knex/migrations/20230823090330_delete-activiteType-titreType.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.schema.dropTable('activites_types__titres_types')
-
-  return knex.schema.dropTable('activites_types__pays')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20230824092724_add-entreprise-document-file.ts b/packages/api/src/knex/migrations/20230824092724_add-entreprise-document-file.ts
deleted file mode 100644
index dcfea06f0..000000000
--- a/packages/api/src/knex/migrations/20230824092724_add-entreprise-document-file.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  return knex.raw('alter table entreprises_documents add largeobject_id oid;')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20230829151032_add-activite-document.ts b/packages/api/src/knex/migrations/20230829151032_add-activite-document.ts
deleted file mode 100644
index 7040657ea..000000000
--- a/packages/api/src/knex/migrations/20230829151032_add-activite-document.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw(
-    'CREATE TABLE activites_documents (id character varying(255) NOT NULL, activite_document_type_id character varying(3) NOT NULL, date character varying(10) NOT NULL, activite_id character varying(255), description character varying(1024), largeobject_id oid)'
-  )
-  await knex.raw('ALTER TABLE activites_documents ADD CONSTRAINT activites_documents_pk PRIMARY KEY (id)')
-  await knex.raw('ALTER TABLE activites_documents ADD CONSTRAINT activites_documents_fk FOREIGN KEY (activite_id) REFERENCES titres_activites(id);')
-
-  await knex.raw(
-    'insert into activites_documents (id, activite_document_type_id, date, activite_id, description) (SELECT id, type_id as activite_document_type_id, date, titre_activite_id, description from documents where titre_activite_id is not null)'
-  )
-
-  await knex.raw('delete from documents where titre_activite_id is not null')
-
-  await knex.schema.dropTable('activites_types__documents_types')
-  await knex.schema.dropTable('administrations__activites_types')
-
-  await knex.raw('ALTER TABLE documents DROP CONSTRAINT documents_titreactiviteid_foreign')
-
-  await knex.raw('ALTER TABLE documents DROP COLUMN titre_activite_id')
-
-  await knex.raw('ALTER TABLE entreprises_documents ALTER COLUMN largeobject_id SET NOT NULL')
-
-  await knex.raw('ALTER TABLE titres_activites ALTER COLUMN sections SET NOT NULL')
-  await knex.raw('ALTER TABLE titres_activites ALTER COLUMN slug SET NOT NULL')
-  await knex.raw('ALTER TABLE titres_activites ALTER COLUMN periode_id SET NOT NULL')
-
-  await knex.raw('UPDATE titres_activites set suppression = false where suppression is null')
-  await knex.raw('ALTER TABLE titres_activites ALTER COLUMN suppression SET DEFAULT false')
-  await knex.raw('ALTER TABLE titres_activites ALTER COLUMN suppression SET NOT NULL')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20230926083529_add-index-on-left-right.ts b/packages/api/src/knex/migrations/20230926083529_add-index-on-left-right.ts
deleted file mode 100644
index 0b011470e..000000000
--- a/packages/api/src/knex/migrations/20230926083529_add-index-on-left-right.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('CREATE INDEX titres_domaines_idx ON titres (right(type_id, 1))')
-  await knex.raw('CREATE INDEX titres_types_types_idx ON titres (left(type_id, 2))')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20231012073429_cleanup-documents.ts b/packages/api/src/knex/migrations/20231012073429_cleanup-documents.ts
deleted file mode 100644
index e6f9f29d8..000000000
--- a/packages/api/src/knex/migrations/20231012073429_cleanup-documents.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('alter table documents drop column url')
-  await knex.raw('alter table documents drop column uri')
-  await knex.raw('alter table documents drop column nor')
-  await knex.raw('alter table documents drop column jorf')
-
-  await knex.raw('ALTER TABLE activites_documents ALTER COLUMN largeobject_id SET NOT NULL')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20231023145523_add-keycloak-id-to-utilisateurs.ts b/packages/api/src/knex/migrations/20231023145523_add-keycloak-id-to-utilisateurs.ts
deleted file mode 100644
index 781b78824..000000000
--- a/packages/api/src/knex/migrations/20231023145523_add-keycloak-id-to-utilisateurs.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  return knex.raw('alter table utilisateurs add keycloak_id varchar(255);')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20231108145556_set-some-boolean-not-null.ts b/packages/api/src/knex/migrations/20231108145556_set-some-boolean-not-null.ts
deleted file mode 100644
index e9cf50d56..000000000
--- a/packages/api/src/knex/migrations/20231108145556_set-some-boolean-not-null.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('update documents set public_lecture = false where public_lecture is null')
-  await knex.raw('update documents set entreprises_lecture = false where entreprises_lecture is null')
-  await knex.raw('ALTER TABLE documents ALTER COLUMN public_lecture SET default false')
-  await knex.raw('ALTER TABLE documents ALTER COLUMN public_lecture SET NOT NULL')
-
-  await knex.raw('ALTER TABLE documents ALTER COLUMN entreprises_lecture SET default false')
-  await knex.raw('ALTER TABLE documents ALTER COLUMN entreprises_lecture SET NOT NULL')
-
-  await knex.raw('update titres_demarches set public_lecture = false where public_lecture is null')
-  await knex.raw('update titres_demarches set entreprises_lecture = false where entreprises_lecture is null')
-  await knex.raw('ALTER TABLE titres_demarches ALTER COLUMN public_lecture SET default false')
-  await knex.raw('ALTER TABLE titres_demarches ALTER COLUMN public_lecture SET NOT NULL')
-
-  await knex.raw('ALTER TABLE titres_demarches ALTER COLUMN entreprises_lecture SET default false')
-  await knex.raw('ALTER TABLE titres_demarches ALTER COLUMN entreprises_lecture SET NOT NULL')
-
-  await knex.raw('update titres set public_lecture = false where public_lecture is null')
-  await knex.raw('update titres set entreprises_lecture = false where entreprises_lecture is null')
-  await knex.raw('ALTER TABLE titres ALTER COLUMN public_lecture SET default false')
-  await knex.raw('ALTER TABLE titres ALTER COLUMN public_lecture SET NOT NULL')
-
-  await knex.raw('ALTER TABLE titres ALTER COLUMN entreprises_lecture SET default false')
-  await knex.raw('ALTER TABLE titres ALTER COLUMN entreprises_lecture SET NOT NULL')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20231116101246_set-keycloak-id-not-null.ts b/packages/api/src/knex/migrations/20231116101246_set-keycloak-id-not-null.ts
deleted file mode 100644
index 7efc76c47..000000000
--- a/packages/api/src/knex/migrations/20231116101246_set-keycloak-id-not-null.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('alter table utilisateurs add constraint check_keycloak_id_not_null check (email is null or keycloak_id is not null);')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240110085800_remove-tde.ts b/packages/api/src/knex/migrations/20240110085800_remove-tde.ts
deleted file mode 100644
index 07db9fc8c..000000000
--- a/packages/api/src/knex/migrations/20240110085800_remove-tde.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.schema.dropTable('titres_types__demarches_types__etapes_types')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240110145011_ajoute-defaut-titres-etapes.ts b/packages/api/src/knex/migrations/20240110145011_ajoute-defaut-titres-etapes.ts
deleted file mode 100644
index 8bca029e9..000000000
--- a/packages/api/src/knex/migrations/20240110145011_ajoute-defaut-titres-etapes.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw("ALTER TABLE titres_etapes ALTER COLUMN sdom_zones SET DEFAULT '[]'::jsonb")
-  await knex.raw("update titres_etapes set sdom_zones='[]'::jsonb where sdom_zones is null")
-  await knex.raw('ALTER TABLE titres_etapes ALTER COLUMN sdom_zones SET NOT NULL')
-
-  await knex.raw("ALTER TABLE titres_etapes ALTER COLUMN administrations_locales SET DEFAULT '[]'::jsonb")
-  await knex.raw("update titres_etapes set administrations_locales='[]'::jsonb where administrations_locales is null")
-  await knex.raw('ALTER TABLE titres_etapes ALTER COLUMN administrations_locales SET NOT NULL')
-
-  await knex.raw("ALTER TABLE titres_etapes ALTER COLUMN secteurs_maritime SET DEFAULT '[]'::jsonb")
-  await knex.raw("update titres_etapes set secteurs_maritime='[]'::jsonb where secteurs_maritime is null")
-  await knex.raw('ALTER TABLE titres_etapes ALTER COLUMN secteurs_maritime SET NOT NULL')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240110161016_migrate-incertitudes-in-notes.ts b/packages/api/src/knex/migrations/20240110161016_migrate-incertitudes-in-notes.ts
deleted file mode 100644
index fb37d03be..000000000
--- a/packages/api/src/knex/migrations/20240110161016_migrate-incertitudes-in-notes.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { EtapeId } from 'camino-common/src/etape'
-import { Knex } from 'knex'
-
-const translateKeys: Record<string, string> = {
-  date: 'Date',
-  points: 'Périmètre',
-  substances: 'Substances',
-  dateFin: 'Date d’échéance',
-  surface: 'Surface',
-  titulaires: 'Titulaires',
-  dateDebut: 'Date de début',
-  duree: 'Durée',
-}
-
-const filterOutKeys = ['surface'] as const
-const doIt = async (knex: Knex) => {
-  const values: { rows: { id: EtapeId; incertitudes: Record<string, true> }[] } = await knex.raw('select id, incertitudes from titres_etapes where incertitudes is not null')
-  for (const value of values.rows) {
-    const text = `Incertitudes: ${Object.keys(value.incertitudes)
-      .filter(v => !filterOutKeys.includes(v))
-      .map(val => ` ${translateKeys[val]}`)
-      .join(',')}.`
-    await knex.raw('update titres_etapes set notes = ? where id = ?', [text, value.id])
-  }
-}
-
-export const up = async (knex: Knex) => {
-  await knex.raw('alter table titres_etapes add notes text;')
-  await doIt(knex)
-  await knex.raw('alter table titres_etapes drop column incertitudes;')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240115132944_set-titre-demarches-ordre-not-null.ts b/packages/api/src/knex/migrations/20240115132944_set-titre-demarches-ordre-not-null.ts
deleted file mode 100644
index d84eea524..000000000
--- a/packages/api/src/knex/migrations/20240115132944_set-titre-demarches-ordre-not-null.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('ALTER TABLE titres_demarches ALTER COLUMN ordre SET NOT NULL')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240116142111_migrate-point-to-geojson.ts b/packages/api/src/knex/migrations/20240116142111_migrate-point-to-geojson.ts
deleted file mode 100644
index 8958a220b..000000000
--- a/packages/api/src/knex/migrations/20240116142111_migrate-point-to-geojson.ts
+++ /dev/null
@@ -1,107 +0,0 @@
-/* eslint-disable sql/no-unsafe-query */
-import { Knex } from 'knex'
-import { EtapeId } from 'camino-common/src/etape'
-import { isNotNullNorUndefined, isNotNullNorUndefinedNorEmpty } from 'camino-common/src/typescript-tools'
-import { FeatureMultiPolygon } from 'camino-common/src/perimetre'
-import { TitreId } from 'camino-common/src/validators/titres'
-
-const etapesToNotMigrate = ['0NmsqYGVQJYKhFY22Ltt4NBV']
-
-interface IGeoJson {
-  type: string
-  geometry?: NonNullable<unknown> | null
-  bbox?: number[] | null
-  properties: NonNullable<unknown> | null
-  features?: IGeoJson[] | null
-}
-
-const geojsonFeatureMultiPolygon = (_points: any[]): FeatureMultiPolygon => {
-  throw new Error('Migration obsolète suite à la suppression de geojson-rewind du projet')
-}
-
-// convertit des points
-// en un geojson de type 'FeatureCollection' de 'Points'
-const geojsonFeatureCollectionPoints = (points: any[]): IGeoJson | null => {
-  if (points.some(({ nom, description }) => (isNotNullNorUndefined(nom) && nom !== '') || (isNotNullNorUndefined(description) && description !== ''))) {
-    return {
-      type: 'FeatureCollection',
-      properties: {},
-      features: points.map(p => ({
-        type: 'Feature',
-        geometry: {
-          type: 'Point',
-          coordinates: [p.coordonnees.x, p.coordonnees.y],
-        },
-        properties: {
-          nom: p.nom,
-          description: p.description,
-        },
-      })),
-    }
-  }
-
-  return null
-}
-
-export const up = async (knex: Knex) => {
-  await knex.raw('alter table titres_etapes add column geojson4326_perimetre public.geometry(MultiPolygon,4326)')
-  await knex.raw('alter table titres_etapes add column geojson4326_points JSONB')
-  await knex.raw('CREATE INDEX titres_etapes_geom_idx  ON titres_etapes USING GIST (geojson4326_perimetre)')
-
-  await knex.raw(
-    'CREATE TABLE perimetre_reference (titre_etape_id character varying(255) NOT NULL, geo_systeme character varying(255) NOT NULL, opposable boolean default false, geojson_perimetre JSONB)'
-  )
-  await knex.raw('ALTER TABLE perimetre_reference ADD CONSTRAINT perimetre_reference_pk PRIMARY KEY (titre_etape_id, geo_systeme)')
-  await knex.raw('ALTER TABLE perimetre_reference ADD CONSTRAINT perimetre_reference_titre_etape_fk FOREIGN KEY (titre_etape_id) REFERENCES titres_etapes(id)')
-
-  const etapes: { rows: { id: EtapeId; heritage_props: { points?: any; surface?: any; perimetre?: any } | null }[] } = await knex.raw('select * from titres_etapes')
-
-  for (const etape of etapes.rows) {
-    if (!etapesToNotMigrate.includes(etape.id)) {
-      const points: { rows: any[] } = await knex.raw('select * from titres_points where titre_etape_id = ? order by groupe, contour, point', [etape.id])
-
-      if (isNotNullNorUndefinedNorEmpty(points.rows)) {
-        const geojsonPoints = geojsonFeatureCollectionPoints(points.rows)
-
-        if (geojsonPoints !== null) {
-          await knex.raw(
-            `update titres_etapes set geojson4326_perimetre = ST_SetSRID(ST_GeomFromGeoJSON('${JSON.stringify(
-              geojsonFeatureMultiPolygon(points.rows).geometry
-            )}'), 4326), geojson4326_points = ?::jsonb where id = ?`,
-            [JSON.stringify(geojsonPoints), etape.id]
-          )
-        } else {
-          await knex.raw(`update titres_etapes set geojson4326_perimetre = ST_SetSRID(ST_GeomFromGeoJSON('${JSON.stringify(geojsonFeatureMultiPolygon(points.rows).geometry)}'), 4326) where id = ?`, [
-            etape.id,
-          ])
-        }
-      }
-    }
-
-    if (isNotNullNorUndefined(etape.heritage_props)) {
-      delete etape.heritage_props.surface
-
-      if ('points' in etape.heritage_props) {
-        etape.heritage_props.perimetre = etape.heritage_props.points
-        delete etape.heritage_props.points
-      }
-
-      await knex.raw(`update titres_etapes set heritage_props = ? where id = ?`, [etape.heritage_props, etape.id])
-    }
-  }
-
-  const titres: { rows: { id: TitreId; props_titre_etapes_ids: { surface: any } | null }[] } = await knex.raw('select * from titres')
-  for (const titre of titres.rows) {
-    if (isNotNullNorUndefined(titre.props_titre_etapes_ids)) {
-      delete titre.props_titre_etapes_ids.surface
-
-      await knex.raw(`update titres set props_titre_etapes_ids = ? where id = ?`, [titre.props_titre_etapes_ids, titre.id])
-    }
-  }
-
-  await knex.raw('alter table titres drop column coordonnees')
-  await knex.raw('drop table titres_points_references')
-  await knex.raw('drop table titres_points')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240206163907_delete_activites_types.ts b/packages/api/src/knex/migrations/20240206163907_delete_activites_types.ts
deleted file mode 100644
index 2c9d74f4b..000000000
--- a/packages/api/src/knex/migrations/20240206163907_delete_activites_types.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('ALTER TABLE titres_activites DROP CONSTRAINT titresactivites_typeid_foreign')
-
-  await knex.raw('ALTER TABLE administrations__activites_types__emails DROP CONSTRAINT administrations__activitestypes__emails_activitetypeid_foreign')
-
-  return knex.schema.dropTable('activites_types')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240207141639_delete_administrations.ts b/packages/api/src/knex/migrations/20240207141639_delete_administrations.ts
deleted file mode 100644
index 7b40df416..000000000
--- a/packages/api/src/knex/migrations/20240207141639_delete_administrations.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('ALTER TABLE administrations__activites_types__emails DROP CONSTRAINT administrations__activitestypes__emails_administrationid_foreig')
-  await knex.raw('ALTER TABLE utilisateurs DROP CONSTRAINT utilisateurs_administrationid_foreign')
-
-  return knex.schema.dropTable('administrations')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240213132554_delete_demarche_type.ts b/packages/api/src/knex/migrations/20240213132554_delete_demarche_type.ts
deleted file mode 100644
index 288e73652..000000000
--- a/packages/api/src/knex/migrations/20240213132554_delete_demarche_type.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('ALTER TABLE titres_demarches DROP CONSTRAINT titresdemarches_typeid_foreign')
-
-  return knex.schema.dropTable('demarches_types')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240215154436_delete_domaine.ts b/packages/api/src/knex/migrations/20240215154436_delete_domaine.ts
deleted file mode 100644
index a425e62e1..000000000
--- a/packages/api/src/knex/migrations/20240215154436_delete_domaine.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('ALTER TABLE titres_types DROP CONSTRAINT titrestypes_domaineid_foreign')
-
-  return knex.schema.dropTable('domaines')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240219143213_delete_cache.ts b/packages/api/src/knex/migrations/20240219143213_delete_cache.ts
deleted file mode 100644
index 6eb71d103..000000000
--- a/packages/api/src/knex/migrations/20240219143213_delete_cache.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  return knex.schema.dropTable('caches')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240219165521_delete_titre-type.ts b/packages/api/src/knex/migrations/20240219165521_delete_titre-type.ts
deleted file mode 100644
index 7115623ab..000000000
--- a/packages/api/src/knex/migrations/20240219165521_delete_titre-type.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('ALTER TABLE titres DROP CONSTRAINT titres_typeid_foreign')
-  await knex.raw('ALTER TABLE titres DROP column contenus_titre_etapes_ids')
-  await knex.schema.dropTable('titres_types')
-
-  return knex.schema.dropTable('titres_types_types')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240220105343_delete_etape-type.ts b/packages/api/src/knex/migrations/20240220105343_delete_etape-type.ts
deleted file mode 100644
index ae543b5dc..000000000
--- a/packages/api/src/knex/migrations/20240220105343_delete_etape-type.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('ALTER TABLE titres_etapes DROP CONSTRAINT titresetapes_typeid_foreign')
-
-  return knex.schema.dropTable('etapes_types')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240220154838_delete_document-type.ts b/packages/api/src/knex/migrations/20240220154838_delete_document-type.ts
deleted file mode 100644
index 4aa9a9c83..000000000
--- a/packages/api/src/knex/migrations/20240220154838_delete_document-type.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('ALTER TABLE documents DROP CONSTRAINT documents_typeid_foreign')
-
-  return knex.schema.dropTable('documents_types')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240221154230_delete_titre-entreprise-lecture.ts b/packages/api/src/knex/migrations/20240221154230_delete_titre-entreprise-lecture.ts
deleted file mode 100644
index 4fd7cd5ae..000000000
--- a/packages/api/src/knex/migrations/20240221154230_delete_titre-entreprise-lecture.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  return knex.raw('ALTER TABLE titres DROP column entreprises_lecture')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240226171415_add-geojson-origine.ts b/packages/api/src/knex/migrations/20240226171415_add-geojson-origine.ts
deleted file mode 100644
index f2e058dce..000000000
--- a/packages/api/src/knex/migrations/20240226171415_add-geojson-origine.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('alter table titres_etapes add column geojson_origine_points JSONB')
-  await knex.raw('alter table titres_etapes add column geojson_origine_perimetre JSONB')
-  await knex.raw('alter table titres_etapes add column geojson_origine_geo_systeme_id varchar')
-
-  await knex.raw(
-    'update titres_etapes set geojson_origine_perimetre = concat(\'{"type": "Feature", "properties": {}, "geometry": \', ST_AsGeoJSON(geojson4326_perimetre)::text, \'}\')::json where geojson4326_perimetre is not null'
-  )
-  await knex.raw("update titres_etapes set geojson_origine_geo_systeme_id = '4326' where geojson4326_perimetre is not null")
-  await knex.raw('update titres_etapes set geojson_origine_points = geojson4326_points where geojson4326_points is not null')
-
-  await knex.raw(
-    'ALTER TABLE titres_etapes ADD CONSTRAINT perimetre_origine_not_null_when_perimetre_4326_not_null CHECK (("geojson4326_perimetre", "geojson_origine_geo_systeme_id", "geojson_origine_perimetre") IS NULL OR ("geojson4326_perimetre", "geojson_origine_geo_systeme_id", "geojson_origine_perimetre") IS NOT NULL)'
-  )
-
-  await knex.raw(
-    'ALTER TABLE titres_etapes ADD CONSTRAINT points_origine_not_null_when_points_4326_not_null CHECK (("geojson4326_points", "geojson_origine_points") IS NULL OR ("geojson4326_points", "geojson_origine_points") IS NOT NULL)'
-  )
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240312103907_add_titres-etapes_geojson_forage.ts b/packages/api/src/knex/migrations/20240312103907_add_titres-etapes_geojson_forage.ts
deleted file mode 100644
index 3fbb99df5..000000000
--- a/packages/api/src/knex/migrations/20240312103907_add_titres-etapes_geojson_forage.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('alter table titres_etapes add column geojson4326_forages JSONB')
-  await knex.raw('alter table titres_etapes add column geojson_origine_forages JSONB')
-
-  await knex.raw(
-    'ALTER TABLE titres_etapes ADD CONSTRAINT forages_origine_not_null_when_forages4326_not_null CHECK (("geojson4326_forages", "geojson_origine_forages") IS NULL OR ("geojson4326_forages", "geojson_origine_forages") IS NOT NULL)'
-  )
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240320132136_add_etape-document.ts b/packages/api/src/knex/migrations/20240320132136_add_etape-document.ts
deleted file mode 100644
index 778378c25..000000000
--- a/packages/api/src/knex/migrations/20240320132136_add_etape-document.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-/* eslint-disable no-restricted-syntax */
-/* eslint-disable sql/no-unsafe-query */
-import { EtapeId } from 'camino-common/src/etape'
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw(
-    'CREATE TABLE etapes_documents (id character varying(255) NOT NULL, etape_document_type_id character varying(3) NOT NULL, etape_id character varying(255) NOT NULL, description character varying(1024), public_lecture boolean NOT NULL, entreprises_lecture boolean NOT NULL, largeobject_id oid)'
-  )
-  await knex.raw('ALTER TABLE etapes_documents ADD CONSTRAINT etapes_documents_pk PRIMARY KEY (id)')
-  await knex.raw('ALTER TABLE etapes_documents ADD CONSTRAINT etapes_documents_fk FOREIGN KEY (etape_id) REFERENCES titres_etapes(id);')
-
-  await knex.raw(
-    'insert into etapes_documents (id, etape_document_type_id, etape_id, description, public_lecture, entreprises_lecture) (SELECT id, type_id as etape_document_type_id, titre_etape_id, description, public_lecture, entreprises_lecture from documents where titre_etape_id is not null and fichier is not null and fichier_type_id is not null)'
-  )
-
-  const result: { rows: { titre_etape_id: EtapeId; description: string }[] } = await knex.raw(
-    'SELECT titre_etape_id, description from documents where titre_etape_id is null or fichier is null or fichier_type_id is  null'
-  )
-
-  for (const document of result.rows) {
-    await knex.raw(`update titres_etapes set notes = concat(notes, '${document.description.replace(/'/g, '’')}') where id = '${document.titre_etape_id}'`)
-  }
-
-  await knex.raw('ALTER TABLE titres_etapes DROP column decisions_annexes_sections')
-  await knex.raw('ALTER TABLE titres_etapes DROP column decisions_annexes_contenu')
-
-  await knex.schema.dropTable('documents')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240425151111_delete_operateur_and_update_constraints_on_entreprises.ts b/packages/api/src/knex/migrations/20240425151111_delete_operateur_and_update_constraints_on_entreprises.ts
deleted file mode 100644
index af7e2c873..000000000
--- a/packages/api/src/knex/migrations/20240425151111_delete_operateur_and_update_constraints_on_entreprises.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import { EntrepriseId } from 'camino-common/src/entreprise'
-import { EtapeId } from 'camino-common/src/etape'
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  // migrer titres_titulaires et titres_amodiataires vers titres_etapes
-  await knex.raw("ALTER TABLE titres_etapes ADD COLUMN titulaire_ids JSONB DEFAULT '[]'::jsonb NOT NULL")
-  await knex.raw("ALTER TABLE titres_etapes ADD COLUMN amodiataire_ids JSONB DEFAULT '[]'::jsonb NOT NULL")
-
-  const titulaires: { rows: { titre_etape_id: EtapeId; entreprise_id: EntrepriseId }[] } = await knex.raw('SELECT titre_etape_id, entreprise_id FROM titres_titulaires')
-  const titulairesByEtapeId = titulaires.rows.reduce(
-    (acc, { titre_etape_id, entreprise_id }) => {
-      if (acc[titre_etape_id] === undefined) {
-        acc[titre_etape_id] = []
-      }
-
-      acc[titre_etape_id].push(entreprise_id)
-
-      return acc
-    },
-    {} as Record<string, string[]>
-  )
-
-  for (const titreEtapeId in titulairesByEtapeId) {
-    await knex.raw('UPDATE titres_etapes SET titulaire_ids = ? WHERE id = ?', [JSON.stringify(titulairesByEtapeId[titreEtapeId]), titreEtapeId])
-  }
-
-  const amodiataires: { rows: { titre_etape_id: EtapeId; entreprise_id: EntrepriseId }[] } = await knex.raw('SELECT titre_etape_id, entreprise_id FROM titres_amodiataires')
-  const amodiatairesByEtapeId = amodiataires.rows.reduce(
-    (acc, { titre_etape_id, entreprise_id }) => {
-      if (acc[titre_etape_id] === undefined) {
-        acc[titre_etape_id] = []
-      }
-
-      acc[titre_etape_id].push(entreprise_id)
-
-      return acc
-    },
-    {} as Record<string, string[]>
-  )
-
-  for (const titreEtapeId in amodiatairesByEtapeId) {
-    await knex.raw('UPDATE titres_etapes SET amodiataire_ids = ? WHERE id = ?', [JSON.stringify(amodiatairesByEtapeId[titreEtapeId]), titreEtapeId])
-  }
-
-  await knex.schema.dropTable('titres_titulaires')
-  await knex.schema.dropTable('titres_amodiataires')
-
-  // rendre obligatoires certaines colonnes d'entreprises et entreprises_etablissements (pour typage)
-  await knex.raw('ALTER TABLE entreprises_etablissements ALTER COLUMN date_debut SET NOT NULL')
-  await knex.raw('ALTER TABLE entreprises_etablissements ALTER COLUMN nom SET NOT NULL')
-  await knex.raw('UPDATE entreprises SET archive = false WHERE archive IS NULL')
-  await knex.raw('ALTER TABLE entreprises ALTER COLUMN archive SET NOT NULL')
-  await knex.raw('ALTER TABLE entreprises ALTER COLUMN archive SET DEFAULT false')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240507082216_clean-up-documents.ts b/packages/api/src/knex/migrations/20240507082216_clean-up-documents.ts
deleted file mode 100644
index 3da86de22..000000000
--- a/packages/api/src/knex/migrations/20240507082216_clean-up-documents.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('ALTER TABLE etapes_documents ALTER COLUMN largeobject_id SET NOT NULL')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240516122738_etapes-brouillon.ts b/packages/api/src/knex/migrations/20240516122738_etapes-brouillon.ts
deleted file mode 100644
index 829873627..000000000
--- a/packages/api/src/knex/migrations/20240516122738_etapes-brouillon.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/* eslint-disable sql/no-unsafe-query */
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw('alter table titres_etapes add column is_brouillon BOOLEAN NOT NULL DEFAULT FALSE')
-  await knex.raw(`UPDATE titres_etapes SET statut_id = 'fai', is_brouillon = true WHERE titres_etapes.statut_id = 'aco'`)
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240530125050_add-logs.ts b/packages/api/src/knex/migrations/20240530125050_add-logs.ts
deleted file mode 100644
index 05cad48a0..000000000
--- a/packages/api/src/knex/migrations/20240530125050_add-logs.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw(
-    'CREATE TABLE logs(datetime timestamp with time zone NOT NULL default now(), path character varying(255), method character varying(6) NOT NULL, body jsonb default null, utilisateur_id character varying(255) NOT NULL)'
-  )
-  await knex.raw('ALTER TABLE logs ADD CONSTRAINT logs__utilisateur_id__foreign FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs(id)')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240610091608_add_avis-documents.ts b/packages/api/src/knex/migrations/20240610091608_add_avis-documents.ts
deleted file mode 100644
index 7a3134296..000000000
--- a/packages/api/src/knex/migrations/20240610091608_add_avis-documents.ts
+++ /dev/null
@@ -1,237 +0,0 @@
-/* eslint-disable no-restricted-syntax */
-/* eslint-disable sql/no-unsafe-query */
-import { DemarcheId } from 'camino-common/src/demarche'
-import { EtapeDocumentId, EtapeId } from 'camino-common/src/etape'
-import { AvisStatutId, AvisTypeId, AvisVisibilityId, AvisVisibilityIds } from 'camino-common/src/static/avisTypes'
-import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { DeepReadonly, isNotNullNorUndefinedNorEmpty, isNullOrUndefined } from 'camino-common/src/typescript-tools'
-import { Knex } from 'knex'
-import { LargeObjectId } from '../../database/largeobjects'
-import { newEtapeAvisId } from '../../database/models/_format/id-create'
-import { CaminoDate } from 'camino-common/src/date'
-import { Section, getSectionsWithValue } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes/sections'
-import { TitreTypeId } from 'camino-common/src/static/titresTypes'
-import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes'
-import { valeurFind } from 'camino-common/src/sections'
-import { Contenu } from 'camino-common/src/permissions/sections'
-
-const oldSections = {
-  eof: [
-    {
-      id: 'onf',
-      nom: 'Office National des Forêts',
-      elements: [
-        { id: 'motifs', nom: 'Motifs', type: 'textarea', optionnel: true, description: "Élément d'expertise" },
-        { id: 'expert', nom: 'Expert', type: 'text', optionnel: true, description: "Agent ONF qui a réalisé l'expertise" },
-        { id: 'agent', nom: 'Agent', type: 'text', optionnel: true, description: 'Chargé de mission foncier du Service Aménagement du Territoire' },
-        {
-          id: 'dateDebut',
-          nom: 'Date de début',
-          type: 'date',
-          optionnel: true,
-          description: 'Date de début de l’expertise',
-        },
-      ],
-    },
-  ],
-  aof: [
-    {
-      id: 'onf',
-      nom: 'Office National des Forêts',
-      elements: [
-        { id: 'motifs', nom: 'Motifs', type: 'textarea', optionnel: true, description: "Élément d'expertise" },
-        {
-          id: 'signataire',
-          nom: 'Signataire',
-          type: 'text',
-          optionnel: true,
-          description: 'Directeur ONF ou responsable du service Service Aménagement du Territoire qui apparaitra sur les documents externe pour signature',
-        },
-      ],
-    },
-  ],
-} as const
-
-const ETAPE_TYPE_ID_TO_AVIS_TYPE_ID: { [key in string]?: string } = {
-  ssr: 'lettreDeSaisineDesServices',
-  wss: 'lettreDeSaisineDesServices',
-  cps: 'confirmationAccordProprietaireDuSol',
-  aac: 'avisDirectionRegionaleDesAffairesCulturelles',
-  wac: 'avisDirectionRegionaleDesAffairesCulturelles',
-  aaf: 'avisDirectionAlimentationAgricultureForet',
-  acd: 'avisConseilDepartementalEnvironnementRisquesSanitairesTechnologiques',
-  wat: 'avisConseilDepartementalEnvironnementRisquesSanitairesTechnologiques',
-  abs: 'avisServiceMilieuxNaturelsBiodiversiteSitesPaysages',
-  aec: 'avisDirectionsRégionalesEconomieEmploiTravailSolidarités',
-  afp: 'avisDirectionRegionaleFinancesPubliques',
-  agn: 'avisGendarmerieNationale',
-  ami: 'avisParcNaturelMarin',
-  aim: 'avisIFREMER',
-  aof: 'avisOfficeNationalDesForets',
-  eof: 'expertiseOfficeNationalDesForets',
-  aop: 'avisInstitutNationalOrigineQualite',
-  api: 'avisEtatMajorOrpaillagePecheIllicite',
-  apl: 'avisServiceAdministratifLocal',
-  apm: 'avisAutoriteMilitaire',
-  wam: 'avisAutoriteMilitaire',
-  apn: 'avisParcNational',
-  wdt: 'avisDirectionDepartementaleTerritoiresMer',
-  wad: 'avisDirectionDepartementaleTerritoiresMer',
-  ars: 'avisAgenceRegionaleSante',
-  was: 'avisAgenceRegionaleSante',
-  ass: 'avisCaisseGeneraleSecuriteSociale',
-  wai: 'autreAvis',
-  ari: 'autreAvis',
-  wal: 'autreAvis',
-  pnr: 'autreAvis',
-  auc: 'autreAvis',
-} as const
-const getVisibilityId = (etapeDocument: Pick<DocumentFromDb, 'public_lecture' | 'entreprises_lecture'>): AvisVisibilityId => {
-  if (etapeDocument.public_lecture) {
-    return AvisVisibilityIds.Public
-  }
-
-  if (etapeDocument.entreprises_lecture) {
-    return AvisVisibilityIds.TitulairesEtAdministrations
-  }
-
-  return AvisVisibilityIds.Administrations
-}
-const etapeTypesToDelete = Object.keys(ETAPE_TYPE_ID_TO_AVIS_TYPE_ID)
-const ETAPE_STATUT_ID_TO_AVIS_STATUT_ID: { [key in EtapeStatutId]?: AvisStatutId } = {
-  fav: 'Favorable',
-  def: 'Défavorable',
-  fre: 'Favorable avec réserves',
-  fai: 'Favorable',
-  dre: 'Défavorable',
-} as const
-type EtapeFromDb = { id: EtapeId; date: CaminoDate; titre_demarche_id: DemarcheId; type_id: EtapeTypeId | 'eof' | 'aof'; statut_id: EtapeStatutId; contenu: Contenu }
-type DocumentFromDb = { id: EtapeDocumentId; largeobject_id: LargeObjectId; description: string; public_lecture: boolean; entreprises_lecture: boolean }
-export const up = async (knex: Knex) => {
-  await knex.raw(`DELETE FROM etapes_documents where etape_id in (select id FROM titres_etapes where archive is true and type_id in (${etapeTypesToDelete.map(_ => '?').join(',')}))`, [
-    ...etapeTypesToDelete,
-  ])
-  await knex.raw(`DELETE FROM titres_etapes where archive is true and type_id in (${etapeTypesToDelete.map(_ => '?').join(',')})`, [...etapeTypesToDelete])
-  await knex.raw(
-    'CREATE TABLE etape_avis (id character varying(255) NOT NULL, avis_type_id character varying(255) NOT NULL, avis_statut_id character varying(255) NOT NULL, avis_visibility_id character varying(255) NOT NULL, etape_id character varying(255) NOT NULL, description text NOT NULL, date character varying(10) NOT NULL, largeobject_id oid)'
-  )
-
-  const allEtapesDb: { rows: EtapeFromDb[] } = await knex.raw(
-    `SELECT * FROM titres_etapes
-     WHERE titres_etapes.type_id IN (${etapeTypesToDelete.map(_ => '?').join(',')})
-     ORDER BY titres_etapes.ordre ASC`,
-    [...etapeTypesToDelete]
-  )
-
-  const etapesByDemarcheId = allEtapesDb.rows.reduce<Record<DemarcheId, EtapeFromDb[]>>((acc, etape) => {
-    if (acc[etape.titre_demarche_id] === undefined) {
-      acc[etape.titre_demarche_id] = []
-    }
-    acc[etape.titre_demarche_id].push(etape)
-
-    return acc
-  }, {})
-
-  for (const etapes of Object.values(etapesByDemarcheId)) {
-    // @ts-ignore
-    const ssrEtape = etapes.find(({ type_id }) => type_id === 'ssr')
-    // @ts-ignore
-    const aofEtape = etapes.find(({ type_id }) => type_id === 'aof')
-
-    const etapePivotId = ssrEtape?.id ?? aofEtape?.id ?? etapes[0].id
-
-    for (let index = 0; index < etapes.length; index++) {
-      const etape = etapes[index]
-
-      // documents et avis vide
-      const documents: { rows: DocumentFromDb[] } = await knex.raw(`SELECT * from etapes_documents where etape_id= :id`, { id: etape.id })
-      const avisTypeId = ETAPE_TYPE_ID_TO_AVIS_TYPE_ID[etape.type_id]
-      const avisStatutId = ETAPE_STATUT_ID_TO_AVIS_STATUT_ID[etape.statut_id]
-      if (isNullOrUndefined(avisTypeId) || isNullOrUndefined(avisStatutId)) {
-        console.error('une étape type id ou statut non prise en compte', etape)
-      } else {
-        const titreTypeIdDemarcheTypeId: { rows: [{ titre_type_id: TitreTypeId; demarche_type_id: DemarcheTypeId }] } = await knex.raw(
-          `
-          SELECT t.type_id as titre_type_id, d.type_id as demarche_type_id from titres_demarches d join titres t on t.id = d.titre_id where d.id= :id`,
-          { id: etape.titre_demarche_id }
-        )
-        let sections: DeepReadonly<Section[]> = []
-        if (titreTypeIdDemarcheTypeId.rows[0].titre_type_id === 'arm' && titreTypeIdDemarcheTypeId.rows[0].demarche_type_id === 'oct' && (etape.type_id === 'eof' || etape.type_id === 'aof')) {
-          sections = oldSections[etape.type_id]
-        }
-        const descriptionSections: string[] = []
-
-        if (isNotNullNorUndefinedNorEmpty(sections)) {
-          const sectionsWithValue = getSectionsWithValue(sections, etape.contenu)
-          for (const section of sectionsWithValue) {
-            for (const element of section.elements) {
-              const value = valeurFind(element)
-              if (value !== '–') {
-                descriptionSections.push(`- ${element.nom} : ${valeurFind(element)}`)
-              }
-            }
-          }
-        }
-
-        for (let i = 0; i < documents.rows.length; i++) {
-          const document = documents.rows[i]
-
-          let description: string = document.description ?? ''
-          if (i === 0) {
-            if (isNotNullNorUndefinedNorEmpty(description)) {
-              description = `${description}
-${descriptionSections.join('\n')}`
-            } else {
-              description = descriptionSections.join('\n')
-            }
-          }
-          const row = {
-            id: document.id,
-            avis_type_id: avisTypeId,
-            etape_id: etapePivotId,
-
-            description,
-            avis_statut_id: avisStatutId,
-            date: etape.date,
-            largeobject_id: document.largeobject_id,
-            avis_visibility_id: getVisibilityId(document),
-          }
-          await knex.raw(
-            'INSERT INTO etape_avis(id, avis_type_id, etape_id, description, avis_statut_id, date, largeobject_id, avis_visibility_id) VALUES(:id, :avis_type_id, :etape_id, :description, :avis_statut_id, :date, :largeobject_id, :avis_visibility_id)',
-            { ...row, etape_id: etapePivotId }
-          )
-          await knex.raw('DELETE FROM etapes_documents WHERE id = :id', { id: row.id })
-        }
-        if (documents.rows.length === 0) {
-          const row = {
-            id: newEtapeAvisId(avisTypeId as AvisTypeId),
-            avis_type_id: avisTypeId,
-            etape_id: etapePivotId,
-            description: descriptionSections.join('\n'),
-            avis_statut_id: avisStatutId,
-            date: etape.date,
-            largeobject_id: null,
-            avis_visibility_id: 'Administrations',
-          }
-          await knex.raw(
-            'INSERT INTO etape_avis(id, avis_type_id, etape_id, description, avis_statut_id, date, largeobject_id, avis_visibility_id) VALUES(:id, :avis_type_id, :etape_id, :description, :avis_statut_id, :date, :largeobject_id, :avis_visibility_id)',
-            { ...row, etape_id: etapePivotId }
-          )
-        }
-      }
-
-      if (etapePivotId === etape.id) {
-        await knex.raw(`UPDATE titres_etapes SET type_id = 'asc', statut_id='fai' WHERE id = :id`, {
-          id: etape.id,
-        })
-      } else {
-        await knex.raw(`DELETE FROM titres_etapes WHERE id = :id`, {
-          id: etape.id,
-        })
-      }
-    }
-  }
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240620130015_init-surface.ts b/packages/api/src/knex/migrations/20240620130015_init-surface.ts
deleted file mode 100644
index 0b2e8b926..000000000
--- a/packages/api/src/knex/migrations/20240620130015_init-surface.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { EtapeId } from 'camino-common/src/etape'
-import { MultiPolygon } from 'camino-common/src/perimetre'
-import { Knex } from 'knex'
-import { M2, km2Validator } from 'camino-common/src/number'
-
-export const up = async (knex: Knex) => {
-  const { rows: etapes }: { rows: { id: EtapeId; geojson4326_perimetre: MultiPolygon }[] } = await knex.raw(
-    'SELECT e.id, ST_AsGeoJSON (e.geojson4326_perimetre, 40)::json as geojson4326_perimetre FROM titres_etapes e WHERE e.surface IS NULL AND e.geojson4326_perimetre IS NOT NULL'
-  )
-
-  for (let i = 0; i < etapes.length; i++) {
-    const { rows }: { rows: { surface: M2 }[] } = await knex.raw('SELECT ST_AREA (ST_MAKEVALID (ST_GeomFromGeoJSON (?)), true) as surface', [etapes[i].geojson4326_perimetre])
-
-    const surface = km2Validator.parse(Number.parseFloat((rows[0].surface / 1_000_000).toFixed(2)))
-    await knex.raw('UPDATE titres_etapes SET surface = ? WHERE id = ?', [surface, etapes[i].id])
-  }
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240702152901_participation-public-brouillonable.ts b/packages/api/src/knex/migrations/20240702152901_participation-public-brouillonable.ts
deleted file mode 100644
index f8f3a6ef4..000000000
--- a/packages/api/src/knex/migrations/20240702152901_participation-public-brouillonable.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw("UPDATE titres_etapes SET statut_id = 'fai', is_brouillon = TRUE WHERE type_id = 'ppu' AND statut_id = 'pro'")
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240703134359_notes-avertissement.ts b/packages/api/src/knex/migrations/20240703134359_notes-avertissement.ts
deleted file mode 100644
index 8049fef09..000000000
--- a/packages/api/src/knex/migrations/20240703134359_notes-avertissement.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw("ALTER TABLE titres_etapes ADD COLUMN note JSONB NOT NULL DEFAULT json_build_object('valeur', '', 'is_avertissement', false)")
-  await knex.raw("UPDATE titres_etapes SET note=json_build_object('valeur', coalesce(notes, ''), 'is_avertissement', false) where notes is not null")
-
-  await knex.raw('ALTER TABLE titres_etapes DROP COLUMN notes')
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240711082448_pxg-machine-update.ts b/packages/api/src/knex/migrations/20240711082448_pxg-machine-update.ts
deleted file mode 100644
index 0409578c8..000000000
--- a/packages/api/src/knex/migrations/20240711082448_pxg-machine-update.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw("UPDATE titres_etapes SET statut_id = 'fai' WHERE type_id = 'dpu' AND slug like 'g-px-%'")
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240711082449_pxg-machine-update.ts b/packages/api/src/knex/migrations/20240711082449_pxg-machine-update.ts
deleted file mode 100644
index 62b526deb..000000000
--- a/packages/api/src/knex/migrations/20240711082449_pxg-machine-update.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  await knex.raw("UPDATE titres_etapes SET statut_id = 'fai' WHERE type_id = 'dpu' AND slug like 'g-ar-%'")
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240711082459_cxg_prg-machine-update.ts b/packages/api/src/knex/migrations/20240711082459_cxg_prg-machine-update.ts
deleted file mode 100644
index daceafb3f..000000000
--- a/packages/api/src/knex/migrations/20240711082459_cxg_prg-machine-update.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { DEMARCHES_TYPES_IDS, DemarcheTypeId } from 'camino-common/src/static/demarchesTypes'
-import { Knex } from 'knex'
-
-const demarcheTypeIdsCxPr_G: DemarcheTypeId[] = [
-  DEMARCHES_TYPES_IDS.Mutation,
-  DEMARCHES_TYPES_IDS.Amodiation,
-  DEMARCHES_TYPES_IDS.Cession,
-  DEMARCHES_TYPES_IDS.Conversion,
-  DEMARCHES_TYPES_IDS.Decheance,
-  DEMARCHES_TYPES_IDS.DemandeDeTitreDExploitation,
-  DEMARCHES_TYPES_IDS.DeplacementDePerimetre,
-  DEMARCHES_TYPES_IDS.Fusion,
-  DEMARCHES_TYPES_IDS.MutationPartielle,
-  DEMARCHES_TYPES_IDS.Renonciation,
-  DEMARCHES_TYPES_IDS.ResiliationAnticipeeDAmodiation,
-  DEMARCHES_TYPES_IDS.Retrait,
-]
-
-export const up = async (knex: Knex) => {
-  for (const demarcheTypeId of demarcheTypeIdsCxPr_G) {
-    await knex.raw(
-      `UPDATE titres_etapes te SET statut_id = 'fai' WHERE (select td.type_id  from titres_demarches td where td.id = te.titre_demarche_id) = '${demarcheTypeId}' and type_id = 'dpu' AND slug like 'g-cx-%'`
-    )
-    await knex.raw(
-      `UPDATE titres_etapes te SET statut_id = 'fai' WHERE (select td.type_id  from titres_demarches td where td.id = te.titre_demarche_id) = '${demarcheTypeId}' and type_id = 'dpu' AND slug like 'g-pr-%'`
-    )
-  }
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240715143025_delete-cloture-participation.ts b/packages/api/src/knex/migrations/20240715143025_delete-cloture-participation.ts
deleted file mode 100644
index 31734b398..000000000
--- a/packages/api/src/knex/migrations/20240715143025_delete-cloture-participation.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-/* eslint-disable no-restricted-syntax */
-/* eslint-disable sql/no-unsafe-query */
-
-import { CaminoDate, daysBetween } from 'camino-common/src/date'
-import { DemarcheId } from 'camino-common/src/demarche'
-import { EtapeId } from 'camino-common/src/etape'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  const { rows: clotureEtapes }: { rows: { id: EtapeId; date: CaminoDate; titre_demarche_id: DemarcheId }[] } = await knex.raw(`select * from titres_etapes where type_id = 'ppc' and archive is false`)
-
-  const alreadyProccess = new Set()
-
-  const errors = []
-
-  for (const clotureEtape of clotureEtapes) {
-    if (alreadyProccess.has(clotureEtape.titre_demarche_id)) {
-      continue
-    }
-    alreadyProccess.add(clotureEtape.titre_demarche_id)
-
-    const { rows: etapes }: { rows: { id: EtapeId; type_id: EtapeTypeId | 'ppc'; contenu: any; date: CaminoDate }[] } = await knex.raw(
-      `select * from titres_etapes where (type_id = 'ppu' or type_id = 'ppc') and archive is false and titre_demarche_id = '${clotureEtape.titre_demarche_id}' order by date`
-    )
-
-    if (etapes.length === 1) {
-      errors.push(`cette démarche ${clotureEtape.titre_demarche_id} n'a pas d'ouverture`)
-    }
-
-    for (let i = 0; i < etapes.length; i += 2) {
-      const ouvertureEtape = etapes[i]
-      const cloture = etapes[i + 1]
-
-      if (ouvertureEtape.type_id !== 'ppu') {
-        errors.push(`boom ${ouvertureEtape}`)
-      }
-
-      if (cloture === undefined) {
-        continue
-      }
-
-      if (cloture.type_id !== 'ppc') {
-        errors.push(`boom ppc ${cloture} ${clotureEtape.titre_demarche_id}`)
-      }
-
-      const newContenu = { ...ouvertureEtape.contenu }
-      newContenu.opdp = { ...newContenu.opdp }
-      newContenu.opdp.duree = daysBetween(ouvertureEtape.date, cloture.date)
-
-      await knex.raw(`update titres_etapes set contenu = ? where id ='${ouvertureEtape.id}'`, [newContenu])
-
-      await knex.raw(`update etapes_documents set etape_id = '${ouvertureEtape.id}' where etape_id = '${cloture.id}'`)
-
-      await knex.raw(`delete from titres_etapes where id = '${cloture.id}'`)
-    }
-  }
-
-  if (errors.length > 0) {
-    errors.forEach(error => console.error(error))
-    throw new Error('delete me')
-  }
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240717125347_migre-avis-en-document.ts b/packages/api/src/knex/migrations/20240717125347_migre-avis-en-document.ts
deleted file mode 100644
index 88da2d74d..000000000
--- a/packages/api/src/knex/migrations/20240717125347_migre-avis-en-document.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/* eslint-disable no-restricted-syntax */
-/* eslint-disable sql/no-unsafe-query */
-import { CaminoDate, dateFormat } from 'camino-common/src/date'
-import { EtapeId } from 'camino-common/src/etape'
-import { AvisVisibilityId } from 'camino-common/src/static/avisTypes'
-import { Knex } from 'knex'
-import { LargeObjectId, largeObjectIdValidator } from '../../database/largeobjects'
-import { DOCUMENTS_TYPES_IDS } from 'camino-common/src/static/documentsTypes'
-
-export const up = async (knex: Knex) => {
-  const result: { rows: { id: string; avis_visibility_id: AvisVisibilityId; etape_id: EtapeId; description: string; date: CaminoDate; largeobject_id: LargeObjectId | null }[] } = await knex.raw(
-    "select * from etape_avis where avis_type_id = 'lettreDeSaisineDesServices'"
-  )
-
-  for (const avis of result.rows) {
-    // 152743 est l'id d'un fichier pdf vide enregistré en production spécialement pour les cas ci-dessous
-    const loId: LargeObjectId = avis.largeobject_id ?? largeObjectIdValidator.parse(152743)
-
-    const public_lecture: boolean = avis.avis_visibility_id === 'Public'
-    const entreprises_lecture: boolean = public_lecture || avis.avis_visibility_id === 'TitulairesEtAdministrations'
-
-    const description: string = `Document en date du : ${dateFormat(avis.date)}\n${avis.description}`
-
-    await knex.raw(
-      `insert into etapes_documents (id, etape_document_type_id, etape_id, description, public_lecture, entreprises_lecture, largeobject_id) values ('${avis.id}', '${DOCUMENTS_TYPES_IDS.lettreDeSaisineDesServicesCivilsEtMilitaires}', '${avis.etape_id}', '${description}', ${public_lecture}, ${entreprises_lecture}, ${loId})`
-    )
-  }
-
-  await knex.raw("delete from etape_avis where avis_type_id = 'lettreDeSaisineDesServices'")
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240718121004_supprimer-cac-prm.ts b/packages/api/src/knex/migrations/20240718121004_supprimer-cac-prm.ts
deleted file mode 100644
index 8e6120b23..000000000
--- a/packages/api/src/knex/migrations/20240718121004_supprimer-cac-prm.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-/* eslint-disable no-restricted-syntax */
-/* eslint-disable sql/no-unsafe-query */
-
-import { EtapeId } from 'camino-common/src/etape'
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex) => {
-  const result: { rows: { id: EtapeId }[] } = await knex.raw("SELECT id FROM titres_etapes WHERE slug LIKE 'm-pr-%' AND type_id = 'cac'")
-  const etapeIds = result.rows.map(({ id }) => id)
-
-  if (etapeIds.length > 0) {
-    await knex.raw(`DELETE FROM etapes_documents WHERE etape_id IN (${etapeIds.map(t => `'${t}'`).join(',')})`)
-    await knex.raw(`DELETE FROM titres_etapes WHERE id IN (${etapeIds.map(t => `'${t}'`).join(',')})`)
-  }
-}
-
-export const down = () => ({})
diff --git a/packages/api/src/knex/migrations/20240724150631_r-machine-update.ts b/packages/api/src/knex/migrations/20240724150631_r-machine-update.ts
deleted file mode 100644
index 8ef3832fd..000000000
--- a/packages/api/src/knex/migrations/20240724150631_r-machine-update.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/* eslint-disable no-restricted-syntax */
-/* eslint-disable sql/no-unsafe-query */
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex): Promise<void> => {
-  await knex.raw("UPDATE titres_etapes SET statut_id = 'fai' WHERE type_id = 'dpu' AND slug like 'r-%'")
-}
-
-export const down = (): void => {}
diff --git a/packages/api/src/knex/migrations/20240725133133_fusionne-avis-des-collectivites.ts b/packages/api/src/knex/migrations/20240725133133_fusionne-avis-des-collectivites.ts
deleted file mode 100644
index c8c50faa2..000000000
--- a/packages/api/src/knex/migrations/20240725133133_fusionne-avis-des-collectivites.ts
+++ /dev/null
@@ -1,128 +0,0 @@
-/* eslint-disable no-restricted-syntax */
-/* eslint-disable sql/no-unsafe-query */
-import { DemarcheId } from 'camino-common/src/demarche'
-import { EtapeDocumentId, EtapeId } from 'camino-common/src/etape'
-import { AvisStatutId, AvisTypeId, AvisVisibilityId, AvisVisibilityIds } from 'camino-common/src/static/avisTypes'
-import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts'
-import { EtapeTypeId } from 'camino-common/src/static/etapesTypes'
-import { isNullOrUndefined } from 'camino-common/src/typescript-tools'
-import { Knex } from 'knex'
-import { LargeObjectId } from '../../database/largeobjects'
-import { newEtapeAvisId } from '../../database/models/_format/id-create'
-import { CaminoDate } from 'camino-common/src/date'
-import { Contenu } from 'camino-common/src/permissions/sections'
-
-const ETAPE_TYPE_ID_TO_AVIS_TYPE_ID: { [key in string]?: string } = {
-  acl: 'avisDUneCollectivite',
-  aep: 'avisDUneCollectivite',
-  ama: 'avisDUneCollectivite',
-} as const
-const getVisibilityId = (etapeDocument: Pick<DocumentFromDb, 'public_lecture' | 'entreprises_lecture'>): AvisVisibilityId => {
-  if (etapeDocument.public_lecture) {
-    return AvisVisibilityIds.Public
-  }
-
-  if (etapeDocument.entreprises_lecture) {
-    return AvisVisibilityIds.TitulairesEtAdministrations
-  }
-
-  return AvisVisibilityIds.Administrations
-}
-const etapeTypesToDelete = Object.keys(ETAPE_TYPE_ID_TO_AVIS_TYPE_ID)
-const ETAPE_STATUT_ID_TO_AVIS_STATUT_ID: { [key in EtapeStatutId]?: AvisStatutId } = {
-  fav: 'Favorable',
-  def: 'Défavorable',
-  fre: 'Favorable avec réserves',
-  fai: 'Favorable',
-  dre: 'Défavorable',
-} as const
-type EtapeFromDb = { id: EtapeId; date: CaminoDate; titre_demarche_id: DemarcheId; type_id: EtapeTypeId | 'eof' | 'aof'; statut_id: EtapeStatutId; contenu: Contenu }
-type DocumentFromDb = { id: EtapeDocumentId; largeobject_id: LargeObjectId; description: string; public_lecture: boolean; entreprises_lecture: boolean }
-
-export const up = async (knex: Knex): Promise<void> => {
-  await knex.raw(`DELETE FROM etapes_documents where etape_id in (select id FROM titres_etapes where archive is true and type_id in (${etapeTypesToDelete.map(_ => '?').join(',')}))`, [
-    ...etapeTypesToDelete,
-  ])
-  await knex.raw(`DELETE FROM titres_etapes where archive is true and type_id in (${etapeTypesToDelete.map(_ => '?').join(',')})`, [...etapeTypesToDelete])
-
-  const allEtapesDb: { rows: EtapeFromDb[] } = await knex.raw(
-    `SELECT * FROM titres_etapes
-     WHERE titres_etapes.type_id IN (${etapeTypesToDelete.map(_ => '?').join(',')})
-     ORDER BY titres_etapes.ordre ASC`,
-    [...etapeTypesToDelete]
-  )
-
-  const etapesByDemarcheId = allEtapesDb.rows.reduce<Record<DemarcheId, EtapeFromDb[]>>((acc, etape) => {
-    if (acc[etape.titre_demarche_id] === undefined) {
-      acc[etape.titre_demarche_id] = []
-    }
-    acc[etape.titre_demarche_id].push(etape)
-
-    return acc
-  }, {})
-
-  for (const etapes of Object.values(etapesByDemarcheId)) {
-    const etapePivotId = etapes[0].id
-
-    for (let index = 0; index < etapes.length; index++) {
-      const etape = etapes[index]
-
-      // documents et avis vide
-      const documents: { rows: DocumentFromDb[] } = await knex.raw(`SELECT * from etapes_documents where etape_id= :id`, { id: etape.id })
-      const avisTypeId = ETAPE_TYPE_ID_TO_AVIS_TYPE_ID[etape.type_id]
-      const avisStatutId = ETAPE_STATUT_ID_TO_AVIS_STATUT_ID[etape.statut_id]
-      if (isNullOrUndefined(avisTypeId) || isNullOrUndefined(avisStatutId)) {
-        console.error('une étape type id ou statut non prise en compte', etape)
-      } else {
-        for (let i = 0; i < documents.rows.length; i++) {
-          const document = documents.rows[i]
-
-          const row = {
-            id: document.id,
-            avis_type_id: avisTypeId,
-            etape_id: etapePivotId,
-
-            description: document.description ?? '',
-            avis_statut_id: avisStatutId,
-            date: etape.date,
-            largeobject_id: document.largeobject_id,
-            avis_visibility_id: getVisibilityId(document),
-          }
-          await knex.raw(
-            'INSERT INTO etape_avis(id, avis_type_id, etape_id, description, avis_statut_id, date, largeobject_id, avis_visibility_id) VALUES(:id, :avis_type_id, :etape_id, :description, :avis_statut_id, :date, :largeobject_id, :avis_visibility_id)',
-            { ...row, etape_id: etapePivotId }
-          )
-          await knex.raw('DELETE FROM etapes_documents WHERE id = :id', { id: row.id })
-        }
-        if (documents.rows.length === 0) {
-          const row = {
-            id: newEtapeAvisId(avisTypeId as AvisTypeId),
-            avis_type_id: avisTypeId,
-            etape_id: etapePivotId,
-            description: '',
-            avis_statut_id: avisStatutId,
-            date: etape.date,
-            largeobject_id: null,
-            avis_visibility_id: 'Administrations',
-          }
-          await knex.raw(
-            'INSERT INTO etape_avis(id, avis_type_id, etape_id, description, avis_statut_id, date, largeobject_id, avis_visibility_id) VALUES(:id, :avis_type_id, :etape_id, :description, :avis_statut_id, :date, :largeobject_id, :avis_visibility_id)',
-            { ...row, etape_id: etapePivotId }
-          )
-        }
-      }
-
-      if (etapePivotId === etape.id) {
-        await knex.raw(`UPDATE titres_etapes SET type_id = 'adc', statut_id='fai' WHERE id = :id`, {
-          id: etape.id,
-        })
-      } else {
-        await knex.raw(`DELETE FROM titres_etapes WHERE id = :id`, {
-          id: etape.id,
-        })
-      }
-    }
-  }
-}
-
-export const down = (): void => {}
diff --git a/packages/api/src/knex/migrations/20240725143010_f-machine-update.ts b/packages/api/src/knex/migrations/20240725143010_f-machine-update.ts
deleted file mode 100644
index e47fb08ea..000000000
--- a/packages/api/src/knex/migrations/20240725143010_f-machine-update.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/* eslint-disable no-restricted-syntax */
-/* eslint-disable sql/no-unsafe-query */
-
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex): Promise<void> => {
-  await knex.raw("UPDATE titres_etapes SET statut_id = 'fai' WHERE type_id = 'dpu' AND slug like 'f-%'")
-}
-
-export const down = (): void => {}
diff --git a/packages/api/src/knex/migrations/20240729124859_fusionner-les-tables-communes.ts b/packages/api/src/knex/migrations/20240729124859_fusionner-les-tables-communes.ts
deleted file mode 100644
index 8ec6d9eb3..000000000
--- a/packages/api/src/knex/migrations/20240729124859_fusionner-les-tables-communes.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/* eslint-disable no-restricted-syntax */
-/* eslint-disable sql/no-unsafe-query */
-
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex): Promise<void> => {
-  // on supprime les communes sans périmètres
-  await knex.raw(`
-    DELETE FROM communes WHERE id IN (SELECT communes.id FROM communes LEFT JOIN communes_postgis ON communes_postgis.id = communes.id WHERE communes_postgis.id IS NULL)
-  `)
-
-  // on transfère la colonne geometry dans communes
-  await knex.raw('ALTER TABLE communes ADD COLUMN "geometry" geometry')
-  await knex.raw(`
-    UPDATE communes
-    SET "geometry" = communes_postgis."geometry"
-    FROM communes_postgis
-    WHERE communes.id = communes_postgis.id
-  `)
-
-  // on rajoute le critère NOT NULLABLE
-  await knex.raw('ALTER TABLE communes ALTER COLUMN "geometry" SET NOT NULL')
-
-  // on peut drop communes_postgis
-  await knex.raw('DROP TABLE communes_postgis')
-}
-
-export const down = (): void => {}
diff --git a/packages/api/src/knex/migrations/20240730122244_ajouter-index-sur-geometry.ts b/packages/api/src/knex/migrations/20240730122244_ajouter-index-sur-geometry.ts
deleted file mode 100644
index 803bb9ec6..000000000
--- a/packages/api/src/knex/migrations/20240730122244_ajouter-index-sur-geometry.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/* eslint-disable no-restricted-syntax */
-/* eslint-disable sql/no-unsafe-query */
-
-import { Knex } from 'knex'
-
-export const up = async (knex: Knex): Promise<void> => {
-  await knex.raw('CREATE INDEX index_geo_communes ON public.communes USING spgist (geometry)')
-}
-
-export const down = (): void => {}
-- 
GitLab