diff --git a/dev/flat_insert_data_hubeau_eso.Rmd b/dev/flat_insert_data_hubeau_eso.Rmd
new file mode 100644
index 0000000000000000000000000000000000000000..af8905326dc8bd7ceac8c565bdd538751da75222
--- /dev/null
+++ b/dev/flat_insert_data_hubeau_eso.Rmd
@@ -0,0 +1,142 @@
+---
+title: "Insertion des pr\u00e9l\u00e8vements et analyses Hubeau ESO"
+output: html_document
+editor_options: 
+  chunk_output_type: console
+---
+
+```{r development, include=FALSE}
+library(testthat)
+library(yaml)
+library(datalibaba)
+library(dplyr)
+library(stringr)
+library(glue)
+library(DBI)
+library(RPostgres)
+```
+
+```{r development-load}
+# Load already included functions if relevant
+pkgload::load_all(export_all = FALSE)
+```
+
+```{r config, eval=FALSE}
+# Lire le fichier de configuration
+config <- yaml::read_yaml("config.yml")
+
+# Accéder à la valeur pour version
+version <- config$version
+```
+
+# Consolidation et insertion des données Hub'eau ESO dans la table des prélèvements
+
+## Chargement des prélèvements Hub'eau ESO
+
+La table des données brutes Nitrates Hub'eau ESO est chargée :
+```{r load_nitrate_qualite_nappes_analyses, eval=FALSE}
+# Charger la table `qualite_nappes_eau_souterraine.nitrate_qualite_nappes_analyses`
+nitrate_qualite_nappes_prelevements <- datalibaba::importer_data(
+  table = "nitrate_qualite_nappes_analyses",
+  schema = "qualite_nappes_eau_souterraine",
+  db = "si_eau",
+  user = "admin"
+)
+```
+
+## Filtre par code_producteur pour exclure les données ARS
+
+On sélectionne les code_producteur correspondants aux enregistrements hors 
+données ARS de la région :
+```{r select_code_producteur_hubeau_eso, eval=FALSE}
+# Filtrer pour exclure les données ARS
+nitrate_prelevement_analyse_hubeau_eso <- nitrate_qualite_nappes_prelevements |>
+  dplyr::filter(!code_producteur %in% c('44','49','53','72','85'))
+```
+
+## Consolidation des prélèvements Hub'eau ESO
+
+On ajoute les variables `source`, `code_support` et `nature_eau` :
+```{r add_source_code_support_hubeau_eso, eval=FALSE}
+# Ajouter les variables source, code_support et nature_eau
+nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
+  dplyr::mutate(
+    source = "ADES",
+    heure_prelevement = NA,
+    code_support = 3,
+    nature_eau = "ESO",
+    id_usage = NA,
+    id_prelevement_motif = NA)
+```
+
+On remplace des valeurs dans limite_detection et limite_quantification :
+```{r replace_dot_limite_detection, eval=FALSE}
+# Remplacer les valeurs dans les colonnes limite_detection et limite_quantification
+nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
+  dplyr::mutate(
+    resultat = stringr::str_replace(resultat, "\\,", "."),
+    limite_detection = stringr::str_replace(limite_detection, "\\,", "."),
+    limite_quantification = stringr::str_replace(limite_quantification, "\\,", ".")
+    )
+
+```
+
+On modifie le type des variables numériques et on les renomme :
+```{r change-fieldtypes, eval=FALSE}
+# Remplacer les valeurs dans les colonnes resultat_analyse et limite_quantification
+nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
+  dplyr::rename(code_intervenant = code_lieu_analyse,
+                code_reseau = codes_reseau,
+                code_station = bss_id,
+                date_prelevement = date_debut_prelevement
+  ) |>
+  dplyr::mutate(code_support = as.integer(code_support),
+                resultat_analyse = as.numeric(resultat),
+                limite_detection = as.numeric(limite_detection),
+                limite_quantification = as.numeric(limite_quantification),
+                code_parametre = as.integer(code_param),
+                code_fraction_analysee  = as.integer(code_fraction),
+                code_remarque = as.integer(code_remarque_analyse)
+                )
+
+```
+
+On dédoublonne les lignes en utilisant les champs `code_station` et 
+`date_prelevement` afin de ne conserver qu'un prélèvement par station et date 
+donnée :
+```{r select_distinct_rows_hubeau_eso, eval=FALSE}
+# Dédoublonner les lignes sur les colonnes code_station et date_prelevement
+nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
+  dplyr::distinct(code_station, date_prelevement, .keep_all = TRUE)
+```
+
+On sélectionne les champs utiles à la table des prélèvements et analyses :
+```{r select_variables_hubeau_eso, eval=FALSE}
+# Sélectionner les variables
+nitrate_prelevement_analyse_hubeau_eso <- nitrate_prelevement_analyse_hubeau_eso |>
+  dplyr::select(code_intervenant,
+                source,
+                code_reseau,
+                code_station,
+                date_prelevement,
+                heure_prelevement,
+                code_support,
+                nature_eau,
+                id_usage,
+                id_prelevement_motif,
+                resultat_analyse,
+                code_parametre,
+                code_fraction_analysee,
+                code_remarque,
+                limite_detection,
+                limite_quantification)
+
+```
+
+
+```{r development-inflate, eval=FALSE}
+# Run but keep eval=FALSE to avoid infinite loop
+# Execute in the console directly
+fusen::inflate(flat_file = "dev/flat_insert_data_hubeau_eso.Rmd", vignette_name = "Insertion des pr\u00e9l\u00e8vements et analyses Hubeau ESO")
+```
+