diff --git a/end2end-tests/cucumber-genesis/default.json b/end2end-tests/cucumber-genesis/default.json
index 7eb7b13925f46831d3c052a1c8963ef2004ca241..9b59a91533dc42d9ca0dbc2ec4fbbe72cdb53406 100644
--- a/end2end-tests/cucumber-genesis/default.json
+++ b/end2end-tests/cucumber-genesis/default.json
@@ -1,6 +1,14 @@
 {
   "first_ud": 1000,
   "first_ud_reeval": 100,
+  "genesis_parameters": {
+    "genesis_certs_expire_on": 100000,
+    "genesis_certs_min_received": 2,
+    "genesis_memberships_expire_on": 100000,
+    "genesis_smith_certs_expire_on": 100000,
+    "genesis_smith_certs_min_received": 2,
+    "genesis_smith_memberships_expire_on": 100000
+  },
   "identities": {
     "Alice": {
       "balance": 1000,
diff --git a/end2end-tests/cucumber-genesis/wot.json b/end2end-tests/cucumber-genesis/wot.json
index f4048b0b164c4c2b7239b37c30ccd78b4f84abda..ac93ccc96dbfdddb33c2f11683d387b7e77710e1 100644
--- a/end2end-tests/cucumber-genesis/wot.json
+++ b/end2end-tests/cucumber-genesis/wot.json
@@ -1,6 +1,14 @@
 {
   "first_ud": 1000,
   "first_ud_reeval": 100,
+  "genesis_parameters": {
+    "genesis_certs_expire_on": 100000,
+    "genesis_certs_min_received": 2,
+    "genesis_memberships_expire_on": 100000,
+    "genesis_smith_certs_expire_on": 100000,
+    "genesis_smith_certs_min_received": 2,
+    "genesis_smith_memberships_expire_on": 100000
+  },
   "identities": {
     "Alice": {
       "balance": 1000,
diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs
index 04ede2da9e6963f8f25cdf4ee69612ebeacc839c..6836f23d34b6c1640f9877c7c6e8b415594d44b9 100644
--- a/node/src/chain_spec/gdev.rs
+++ b/node/src/chain_spec/gdev.rs
@@ -96,14 +96,6 @@ pub fn development_chain_spec() -> Result<ChainSpec, String> {
                 )
             },
             Some(get_authority_keys_from_seed("Alice").encode()),
-            Some(super::gen_genesis_data::ParamsAppliedAtGenesis {
-                genesis_certs_expire_on: 100_000,
-                genesis_certs_min_received: 2,
-                genesis_memberships_expire_on: 100_000,
-                genesis_smith_certs_expire_on: 100_000,
-                genesis_smith_certs_min_received: 2,
-                genesis_smith_memberships_expire_on: 100_000,
-            }),
         )
     } else {
         Ok(ChainSpec::from_genesis(
@@ -191,14 +183,6 @@ pub fn gen_live_conf() -> Result<ChainSpec, String> {
             )
         },
         None,
-        Some(super::gen_genesis_data::ParamsAppliedAtGenesis {
-            genesis_certs_expire_on: 2_102_400,
-            genesis_certs_min_received: 3,
-            genesis_memberships_expire_on: 1_051_200,
-            genesis_smith_certs_expire_on: 2_102_400,
-            genesis_smith_certs_min_received: 3,
-            genesis_smith_memberships_expire_on: 1_051_200,
-        }),
     )
 }
 
diff --git a/node/src/chain_spec/gen_genesis_data.rs b/node/src/chain_spec/gen_genesis_data.rs
index fccfe574c647f4cfe13f4e27be00d25d2c182966..1b47ee55d82bb80952cc21c89f06cd96b80449ad 100644
--- a/node/src/chain_spec/gen_genesis_data.rs
+++ b/node/src/chain_spec/gen_genesis_data.rs
@@ -41,7 +41,7 @@ pub struct GenesisData<Parameters: DeserializeOwned, SessionKeys: Decode> {
     pub technical_committee_members: Vec<AccountId>,
 }
 
-#[derive(Default)]
+#[derive(Default, Deserialize, Serialize)]
 pub struct ParamsAppliedAtGenesis {
     pub genesis_certs_expire_on: u32,
     pub genesis_certs_min_received: u32,
@@ -55,6 +55,7 @@ pub struct ParamsAppliedAtGenesis {
 struct GenesisConfig<Parameters> {
     first_ud: u64,
     first_ud_reeval: u32,
+    genesis_parameters: ParamsAppliedAtGenesis,
     identities: BTreeMap<String, Idty>,
     #[serde(default)]
     parameters: Parameters,
@@ -87,22 +88,12 @@ struct SmithData {
 pub fn generate_genesis_data<CS, P, SK, F>(
     f: F,
     maybe_force_authority: Option<Vec<u8>>,
-    params_applied_at_genesis: Option<ParamsAppliedAtGenesis>,
 ) -> Result<CS, String>
 where
     P: Default + DeserializeOwned,
     SK: Decode,
     F: Fn(GenesisData<P, SK>) -> CS,
 {
-    let ParamsAppliedAtGenesis {
-        genesis_certs_expire_on,
-        genesis_certs_min_received,
-        genesis_memberships_expire_on,
-        genesis_smith_certs_expire_on,
-        genesis_smith_certs_min_received,
-        genesis_smith_memberships_expire_on,
-    } = params_applied_at_genesis.unwrap_or_default();
-
     let genesis_timestamp: u64 =
         if let Ok(genesis_timestamp) = std::env::var("DUNITER_GENESIS_TIMESTAMP") {
             genesis_timestamp
@@ -137,6 +128,15 @@ where
         sudo_key,
         first_ud,
         first_ud_reeval,
+        genesis_parameters:
+            ParamsAppliedAtGenesis {
+                genesis_certs_expire_on,
+                genesis_certs_min_received,
+                genesis_memberships_expire_on,
+                genesis_smith_certs_expire_on,
+                genesis_smith_certs_min_received,
+                genesis_smith_memberships_expire_on,
+            },
         parameters,
         identities,
         smith_identities,
diff --git a/resources/gdev.json b/resources/gdev.json
index ea5d8bb38a3b2f7f5cd69a6c6dc1574472f470d0..aa09f2d51781df27eb6221d15a8cb43fca026736 100644
--- a/resources/gdev.json
+++ b/resources/gdev.json
@@ -1,6 +1,14 @@
 {
   "first_ud": 10000,
   "first_ud_reeval": 100800,
+  "genesis_parameters": {
+    "genesis_certs_expire_on": 2102400,
+    "genesis_certs_min_received": 3,
+    "genesis_memberships_expire_on": 1051200,
+    "genesis_smith_certs_expire_on": 2102400,
+    "genesis_smith_certs_min_received": 3,
+    "genesis_smith_memberships_expire_on": 1051200
+  },
   "identities": {
     "Elois": {
       "balance": 10000,