diff --git a/geau/data-raw/so_ii_catchment.R b/geau/data-raw/so_ii_catchment.R
index 3810028d2968947e85f2386af69357030b3724f0..815c62e0c16d2cb54db8c6d13bb9917226dc5cf2 100644
--- a/geau/data-raw/so_ii_catchment.R
+++ b/geau/data-raw/so_ii_catchment.R
@@ -6,30 +6,14 @@ file_dir = current_version(
 )
 so_ii_catchment = sf::st_read(file.path(file_dir, "bassin_versant_so_ii.shp"))
 
+classification = read.csv(
+    current_version("data-common/so-ii/topage", pattern = "catchment"),
+    colClasses = "character"
+)
 # establishing levels of detail in catchments
 so_ii_catchment[["degre"]] = 2
-selection_row = list(
-    mosson = c(
-        '06B0000002150456066',
-        '06B0000002150458403',
-        '06B0000002150458401',
-        '06B0000002150456007',
-        '06B0000002150455994'
-        ),
-    lez = c(
-        '06B0000002150456086',
-        '06B0000002150456009'
-        ),
-    lor = c(
-        '06B0000002150456068',
-        '06B0000002150456055',
-        '06B0000002150456053',
-        '06B0000002150461370',
-        '06B0000002150457044'
-    )
-)
 
-bassin_mosson = so_ii_catchment[so_ii_catchment[["id"]] %in% unlist(unname(selection_row[["mosson"]])), ]
+bassin_mosson = so_ii_catchment[so_ii_catchment[["id"]] %in% classification[["id"]][classification[["soussecteur"]] == "mosson"], ]
 bassin_mosson_geom = sf::st_union(bassin_mosson)
 bassin_mosson_df = data.frame(
     id = "soii01",
@@ -38,7 +22,7 @@ bassin_mosson_df = data.frame(
 )
 bassin_mosson = sf::st_set_geometry(bassin_mosson_df, bassin_mosson_geom)
 
-bassin_lez = so_ii_catchment[so_ii_catchment[["id"]] %in% unlist(unname(selection_row[["lez"]])), ]
+bassin_lez = so_ii_catchment[so_ii_catchment[["id"]] %in% classification[["id"]][classification[["soussecteur"]] == "lez"], ]
 bassin_lez_geom = sf::st_union(bassin_lez)
 bassin_lez_df = data.frame(
     id = "soii02",
@@ -47,7 +31,7 @@ bassin_lez_df = data.frame(
 )
 bassin_lez = sf::st_set_geometry(bassin_lez_df, bassin_lez_geom)
 
-bassin_lor = so_ii_catchment[so_ii_catchment[["id"]] %in% unlist(unname(selection_row[["lor"]])), ]
+bassin_lor = so_ii_catchment[so_ii_catchment[["id"]] %in% classification[["id"]][classification[["soussecteur"]] == "lor"], ]
 bassin_lor_geom = sf::st_union(bassin_lor)
 bassin_lor_df = data.frame(
     id = "soii03",