diff --git a/.cargo/config b/.cargo/config
index 3a03e9a4f00f3ed7e30167d53c109885fe57c2d6..f5990d7a2483c05d9a105363a6d3abd1d206d8dd 100644
--- a/.cargo/config
+++ b/.cargo/config
@@ -1,7 +1,7 @@
 [alias]
 cucumber = "test -p duniter-end2end-tests --test cucumber_tests --"
 sanity-gdev = "test -p duniter-live-tests --test sanity_gdev -- --nocapture"
-tu = "test --workspace --exclude duniter-end2end-tests"
+tu = "test --workspace --exclude duniter-end2end-tests --exclude duniter-live-tests"
 tb = "test --features runtime-benchmarks -p"
 xtask = "run --package xtask --"
 
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fba75a1811bb61f1184f9b4319aad25b63910d5f..626da5ddf108c05dea84a774a961df36c24e1606 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -158,7 +158,7 @@ tests_debug:
     DUNITER_BINARY_PATH: "../build/duniter"
     DUNITER_END2END_TESTS_SPAWN_NODE_TIMEOUT: "20"
   script:
-    - cargo test --workspace --exclude duniter-end2end-tests
+    - cargo test --workspace --exclude duniter-end2end-tests --exclude duniter-live-tests
     - cargo cucumber -i balance*
     - cargo cucumber -i monetary*
     - cargo cucumber -i transfer*
@@ -182,7 +182,7 @@ tests_release:
     DUNITER_BINARY_PATH: "../build/duniter"
     DUNITER_END2END_TESTS_SPAWN_NODE_TIMEOUT: "20"
   script:
-    - cargo test --workspace --exclude duniter-end2end-tests
+    - cargo test --workspace --exclude duniter-end2end-tests --exclude duniter-live-tests
     - cargo cucumber -i balance*
     - cargo cucumber -i monetary*
     - cargo cucumber -i transfer*
diff --git a/end2end-tests/cucumber-genesis/default.json b/end2end-tests/cucumber-genesis/default.json
index 7a978091070b4cf42720b9a07c2ae6eb99d728e7..32abeaa5616d57801d967dcc85609569aa74a935 100644
--- a/end2end-tests/cucumber-genesis/default.json
+++ b/end2end-tests/cucumber-genesis/default.json
@@ -23,22 +23,18 @@
     "cert_period": 15,
     "cert_max_by_issuer": 10,
     "cert_min_received_cert_to_issue_cert": 2,
-    "cert_renewable_period": 50,
     "cert_validity_period": 1000,
     "idty_confirm_period": 40,
     "idty_creation_period": 50,
     "membership_period": 1000,
-    "membership_renewable_period": 50,
     "pending_membership_period": 500,
     "ud_creation_period": 10,
     "ud_reeval_period": 100,
     "smith_cert_period": 15,
     "smith_cert_max_by_issuer": 8,
     "smith_cert_min_received_cert_to_issue_cert": 2,
-    "smith_cert_renewable_period": 50,
     "smith_cert_validity_period": 1000,
     "smith_membership_period": 1000,
-    "smith_membership_renewable_period": 20,
     "smith_pending_membership_period": 500,
     "smiths_wot_first_cert_issuable_on": 20,
     "smiths_wot_min_cert_for_membership": 2,
diff --git a/end2end-tests/cucumber-genesis/wot.json b/end2end-tests/cucumber-genesis/wot.json
index 988e6857f07b387758e082040a684a2f255029db..7b4639842049082c2b4393b799c7fc8d85aa96b2 100644
--- a/end2end-tests/cucumber-genesis/wot.json
+++ b/end2end-tests/cucumber-genesis/wot.json
@@ -28,22 +28,18 @@
     "cert_period": 15,
     "cert_max_by_issuer": 10,
     "cert_min_received_cert_to_issue_cert": 2,
-    "cert_renewable_period": 50,
     "cert_validity_period": 1000,
     "idty_confirm_period": 40,
     "idty_creation_period": 50,
     "membership_period": 1000,
-    "membership_renewable_period": 50,
     "pending_membership_period": 500,
     "ud_creation_period": 10,
     "ud_reeval_period": 100,
     "smith_cert_period": 15,
     "smith_cert_max_by_issuer": 8,
     "smith_cert_min_received_cert_to_issue_cert": 2,
-    "smith_cert_renewable_period": 50,
     "smith_cert_validity_period": 1000,
     "smith_membership_period": 1000,
-    "smith_membership_renewable_period": 20,
     "smith_pending_membership_period": 500,
     "smiths_wot_first_cert_issuable_on": 20,
     "smiths_wot_min_cert_for_membership": 2,
diff --git a/live-tests/tests/sanity_gdev.rs b/live-tests/tests/sanity_gdev.rs
index 4e6e14938ae73d093e70a9ac322f3292c94a3b84..115eeadda9c9ce9d09c7bb18986e370370029852 100644
--- a/live-tests/tests/sanity_gdev.rs
+++ b/live-tests/tests/sanity_gdev.rs
@@ -41,9 +41,13 @@ type AccountInfo = gdev_runtime::runtime_types::frame_system::AccountInfo<
     Index,
     gdev_runtime::runtime_types::pallet_duniter_account::types::AccountData<Balance>,
 >;
+type IdtyData = gdev_runtime::runtime_types::common_runtime::entities::IdtyData;
 type IdtyIndex = u32;
-type IdtyValue =
-    gdev_runtime::runtime_types::pallet_identity::types::IdtyValue<BlockNumber, AccountId32>;
+type IdtyValue = gdev_runtime::runtime_types::pallet_identity::types::IdtyValue<
+    BlockNumber,
+    AccountId32,
+    IdtyData,
+>;
 use gdev_runtime::runtime_types::pallet_identity::types::IdtyStatus;
 
 struct Storage {
diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs
index b31c4f7dadcbed69d590e0f2bad61c35b18106ae..299482d1766d3afab8739bb5266292ed455069c2 100644
--- a/node/src/chain_spec/gdev.rs
+++ b/node/src/chain_spec/gdev.rs
@@ -100,9 +100,7 @@ pub fn development_chain_spec() -> Result<ChainSpec, String> {
                 genesis_certs_expire_on: 100_000,
                 genesis_smith_certs_expire_on: 100_000,
                 genesis_memberships_expire_on: 100_000,
-                genesis_memberships_renewable_on: 50,
                 genesis_smith_memberships_expire_on: 100_000,
-                genesis_smith_memberships_renewable_on: 50,
             }),
         )
     } else {
@@ -189,9 +187,7 @@ pub fn gen_live_conf() -> Result<ChainSpec, String> {
             genesis_certs_expire_on: 100_000,
             genesis_smith_certs_expire_on: 100_000,
             genesis_memberships_expire_on: 100_000,
-            genesis_memberships_renewable_on: 50,
             genesis_smith_memberships_expire_on: 100_000,
-            genesis_smith_memberships_renewable_on: 50,
         }),
     )
 }
@@ -262,10 +258,7 @@ fn gen_genesis_for_local_chain(
     let cert_validity_period = get_env_u32("DUNITER_CERT_VALIDITY_PERIOD", 1_000);
     let first_ud = 1_000;
     let membership_period = get_env_u32("DUNITER_MEMBERSHIP_PERIOD", 1_000);
-    let membership_renewable_period = get_env_u32("DUNITER_MEMBERSHIP_RENEWABLE_PERIOD", 50);
     let smith_cert_validity_period = get_env_u32("DUNITER_SMITH_CERT_VALIDITY_PERIOD", 1_000);
-    let smith_membership_renewable_period =
-        get_env_u32("DUNITER_SMITH_MEMBERSHIP_RENEWABLE_PERIOD", 20);
     let smith_membership_period = get_env_u32("DUNITER_SMITH_MEMBERSHIP_PERIOD", 1_000);
     let ud_creation_period = get_env_u32("DUNITER_UD_CREATION_PERIOD", 10);
     let ud_reeval_period = get_env_u32("DUNITER_UD_REEEVAL_PERIOD", 200);
@@ -309,22 +302,18 @@ fn gen_genesis_for_local_chain(
                 cert_period: 15,
                 cert_max_by_issuer: 10,
                 cert_min_received_cert_to_issue_cert: 2,
-                cert_renewable_period: 50,
                 cert_validity_period,
                 idty_confirm_period: 40,
                 idty_creation_period: 50,
                 membership_period,
-                membership_renewable_period,
                 pending_membership_period: 500,
                 ud_creation_period,
                 ud_reeval_period,
                 smith_cert_period: 15,
                 smith_cert_max_by_issuer: 8,
                 smith_cert_min_received_cert_to_issue_cert: 2,
-                smith_cert_renewable_period: 50,
                 smith_cert_validity_period: 1_000,
                 smith_membership_period,
-                smith_membership_renewable_period: 50,
                 smith_pending_membership_period: 500,
                 smiths_wot_first_cert_issuable_on: 20,
                 smiths_wot_min_cert_for_membership: 2,
@@ -386,15 +375,7 @@ fn gen_genesis_for_local_chain(
         },
         membership: MembershipConfig {
             memberships: (1..=initial_identities.len())
-                .map(|i| {
-                    (
-                        i as u32,
-                        MembershipData {
-                            expire_on: 0,
-                            renewable_on: membership_renewable_period,
-                        },
-                    )
-                })
+                .map(|i| (i as u32, MembershipData { expire_on: 0 }))
                 .collect(),
         },
         cert: CertConfig {
@@ -403,15 +384,7 @@ fn gen_genesis_for_local_chain(
         },
         smiths_membership: SmithsMembershipConfig {
             memberships: (1..=initial_smiths_len)
-                .map(|i| {
-                    (
-                        i as u32,
-                        MembershipData {
-                            expire_on: 0,
-                            renewable_on: smith_membership_renewable_period,
-                        },
-                    )
-                })
+                .map(|i| (i as u32, MembershipData { expire_on: 0 }))
                 .collect(),
         },
         smiths_cert: SmithsCertConfig {
diff --git a/node/src/chain_spec/gen_genesis_data.rs b/node/src/chain_spec/gen_genesis_data.rs
index d9c66c76adda7dd09671cf6febf843d32621f768..24751d6154fb738474bf0194cf83886b90a0631d 100644
--- a/node/src/chain_spec/gen_genesis_data.rs
+++ b/node/src/chain_spec/gen_genesis_data.rs
@@ -45,9 +45,7 @@ pub struct ParamsAppliedAtGenesis {
     pub genesis_certs_expire_on: u32,
     pub genesis_smith_certs_expire_on: u32,
     pub genesis_memberships_expire_on: u32,
-    pub genesis_memberships_renewable_on: u32,
     pub genesis_smith_memberships_expire_on: u32,
-    pub genesis_smith_memberships_renewable_on: u32,
 }
 
 #[derive(Deserialize, Serialize)]
@@ -96,9 +94,7 @@ where
         genesis_certs_expire_on,
         genesis_smith_certs_expire_on,
         genesis_memberships_expire_on,
-        genesis_memberships_renewable_on,
         genesis_smith_memberships_expire_on,
-        genesis_smith_memberships_renewable_on,
     } = params_applied_at_genesis.unwrap_or_default();
 
     let genesis_timestamp: u64 =
@@ -203,7 +199,6 @@ where
                     .map_or(genesis_memberships_expire_on, |expire_on| {
                         to_bn(genesis_timestamp, expire_on)
                     }),
-                renewable_on: genesis_memberships_renewable_on,
             },
         );
 
@@ -303,7 +298,6 @@ where
             *idty_index,
             MembershipData {
                 expire_on: genesis_smith_memberships_expire_on,
-                renewable_on: genesis_smith_memberships_renewable_on,
             },
         );
     }
diff --git a/node/src/chain_spec/gtest.rs b/node/src/chain_spec/gtest.rs
index 0b1f682e5861387a9e93c8baaf14345733feb6aa..5d2ea9201bee4ed538eeef9d9c3f77baba00dfc2 100644
--- a/node/src/chain_spec/gtest.rs
+++ b/node/src/chain_spec/gtest.rs
@@ -223,7 +223,6 @@ fn gen_genesis_for_local_chain(
                         i as u32,
                         MembershipData {
                             expire_on: gtest_runtime::MembershipPeriod::get(),
-                            renewable_on: gtest_runtime::RenewablePeriod::get(),
                         },
                     )
                 })
@@ -243,7 +242,6 @@ fn gen_genesis_for_local_chain(
                         i as u32,
                         MembershipData {
                             expire_on: gtest_runtime::SmithMembershipPeriod::get(),
-                            renewable_on: gtest_runtime::SmithRenewablePeriod::get(),
                         },
                     )
                 })
diff --git a/pallets/certification/src/lib.rs b/pallets/certification/src/lib.rs
index cc577701fe7bda364934bf578ea1d8aa4dd48e1b..5d333e7be2ba64ecc213e091f28df384c832d867 100644
--- a/pallets/certification/src/lib.rs
+++ b/pallets/certification/src/lib.rs
@@ -83,9 +83,6 @@ pub mod pallet {
         /// Handler for Removed event
         type OnRemovedCert: OnRemovedCert<Self::IdtyIndex>;
         #[pallet::constant]
-        /// Duration after which a certification is renewable
-        type CertRenewablePeriod: Get<Self::BlockNumber>;
-        #[pallet::constant]
         /// Duration of validity of a certification
         type ValidityPeriod: Get<Self::BlockNumber>;
     }
@@ -169,15 +166,11 @@ pub mod pallet {
                             }
                         }
                     }
-                    let renewable_on = removable_on.saturating_sub(
-                        T::ValidityPeriod::get().saturating_sub(T::CertRenewablePeriod::get()),
-                    );
 
                     <StorageCertsByIssuer<T, I>>::insert(
                         issuer,
                         receiver,
                         CertValue {
-                            renewable_on,
                             removable_on: *removable_on,
                         },
                     );
@@ -274,8 +267,6 @@ pub mod pallet {
         NotEnoughCertReceived,
         /// This identity has already issued a certification too recently
         NotRespectCertPeriod,
-        /// This certification has already been issued or renewed recently
-        NotRespectRenewablePeriod,
         /// Receiver not found
         ReceiverNotFound,
     }
@@ -302,7 +293,7 @@ pub mod pallet {
 
             let block_number = frame_system::pallet::Pallet::<T>::block_number();
 
-            let create = if verify_rules {
+            if verify_rules {
                 let issuer_idty_cert_meta = <StorageIdtyCertMeta<T, I>>::get(issuer);
                 if issuer_idty_cert_meta.received_count == 0 {
                     return Err(Error::<T, I>::IdtyMustReceiveCertsBeforeCanIssue.into());
@@ -317,22 +308,9 @@ pub mod pallet {
                 } else if issuer_idty_cert_meta.issued_count >= T::MaxByIssuer::get() {
                     return Err(Error::<T, I>::IssuedTooManyCert.into());
                 }
-
-                // Verify rule CertRenewablePeriod
-                if let Ok(CertValue { renewable_on, .. }) =
-                    <StorageCertsByIssuer<T, I>>::try_get(issuer, receiver)
-                {
-                    if renewable_on > block_number {
-                        return Err(Error::<T, I>::NotRespectRenewablePeriod.into());
-                    }
-                    false
-                } else {
-                    true
-                }
-            } else {
-                !StorageCertsByIssuer::<T, I>::contains_key(issuer, receiver)
             };
 
+            let create = !StorageCertsByIssuer::<T, I>::contains_key(issuer, receiver);
             Self::do_add_cert(block_number, create, issuer, receiver)
         }
         /// Add a new certification or renew an existing one
@@ -370,18 +348,7 @@ pub mod pallet {
                 return Err(Error::<T, I>::IssuedTooManyCert.into());
             }
 
-            // Verify rule CertRenewablePeriod
-            let create = if let Ok(CertValue { renewable_on, .. }) =
-                <StorageCertsByIssuer<T, I>>::try_get(issuer, receiver)
-            {
-                if renewable_on > block_number {
-                    return Err(Error::<T, I>::NotRespectRenewablePeriod.into());
-                }
-                false
-            } else {
-                true
-            };
-
+            let create = !StorageCertsByIssuer::<T, I>::contains_key(issuer, receiver);
             Self::do_add_cert(block_number, create, issuer, receiver)
         }
 
@@ -439,7 +406,6 @@ pub mod pallet {
 
             // Write StorageCertsRemovableOn and StorageCertsByIssuer
             let cert_value = CertValue {
-                renewable_on: block_number + T::CertRenewablePeriod::get(),
                 removable_on: block_number + T::ValidityPeriod::get(),
             };
             <StorageCertsRemovableOn<T, I>>::append(cert_value.removable_on, (issuer, receiver));
diff --git a/pallets/certification/src/mock.rs b/pallets/certification/src/mock.rs
index b3380463741ae82f712159c7eb2b7baccd2bd125..96a46725781f23b20efad2c7e9499a095fd2c2b7 100644
--- a/pallets/certification/src/mock.rs
+++ b/pallets/certification/src/mock.rs
@@ -94,7 +94,6 @@ impl frame_support::traits::EnsureOrigin<(Origin, IdtyIndex, IdtyIndex)> for Ens
 parameter_types! {
     pub const MaxByIssuer: u32 = 3;
     pub const MinReceivedCertToBeAbleToIssueCert: u32 = 2;
-    pub const RenewablePeriod: BlockNumber = 4;
     pub const CertPeriod: u64 = 2;
     pub const ValidityPeriod: u64 = 10;
 }
@@ -109,7 +108,6 @@ impl pallet_certification::Config for Test {
     type MinReceivedCertToBeAbleToIssueCert = MinReceivedCertToBeAbleToIssueCert;
     type OnNewcert = ();
     type OnRemovedCert = ();
-    type CertRenewablePeriod = RenewablePeriod;
     type ValidityPeriod = ValidityPeriod;
 }
 
diff --git a/pallets/certification/src/tests.rs b/pallets/certification/src/tests.rs
index 64b77fb2a39ca18b6c8e7f17dbd5ef6a89d5b6d8..25998c16b86884f4011a11052a2799a180efe65d 100644
--- a/pallets/certification/src/tests.rs
+++ b/pallets/certification/src/tests.rs
@@ -115,11 +115,6 @@ fn test_genesis_build() {
             DefaultCertification::certs_removable_on(3),
             Some(vec![(2, 1)]),
         );
-        // Cert 2->0 cannot be renewed before #5
-        assert_eq!(
-            DefaultCertification::add_cert(Origin::signed(2), 0),
-            Err(Error::<Test, _>::NotRespectRenewablePeriod.into())
-        );
 
         run_to_block(3);
         // Cert 2->1 must have expired
@@ -162,31 +157,3 @@ fn test_cert_period() {
         assert_ok!(DefaultCertification::add_cert(Origin::signed(0), 3));
     });
 }
-
-#[test]
-fn test_renewable_period() {
-    new_test_ext(DefaultCertificationConfig {
-        apply_cert_period_at_genesis: true,
-        certs_by_issuer: btreemap![
-            0 => btreemap![1 => 10],
-            2 => btreemap![0 => 10],
-            3 => btreemap![0 => 10],
-        ],
-    })
-    .execute_with(|| {
-        run_to_block(CertPeriod::get());
-        assert_eq!(
-            DefaultCertification::add_cert(Origin::signed(0), 1),
-            Err(Error::<Test, _>::NotRespectRenewablePeriod.into())
-        );
-        run_to_block(RenewablePeriod::get());
-        assert_ok!(DefaultCertification::add_cert(Origin::signed(0), 1));
-        run_to_block(RenewablePeriod::get() + CertPeriod::get());
-        assert_eq!(
-            DefaultCertification::add_cert(Origin::signed(0), 1),
-            Err(Error::<Test, _>::NotRespectRenewablePeriod.into())
-        );
-        run_to_block((2 * RenewablePeriod::get()) + 1);
-        assert_ok!(DefaultCertification::add_cert(Origin::signed(0), 1));
-    });
-}
diff --git a/pallets/certification/src/types.rs b/pallets/certification/src/types.rs
index d1b858f9f25abc7ff855eb2b42b196dd36c608a2..4d2534c57314e762d4e9e1f45023dc683ffc7321 100644
--- a/pallets/certification/src/types.rs
+++ b/pallets/certification/src/types.rs
@@ -22,7 +22,6 @@ use scale_info::TypeInfo;
 
 #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)]
 pub struct CertValue<BlockNumber> {
-    pub renewable_on: BlockNumber,
     pub removable_on: BlockNumber,
 }
 
diff --git a/pallets/duniter-test-parameters/src/lib.rs b/pallets/duniter-test-parameters/src/lib.rs
index b72c113419c66b2fc3a2bf697e80964f0d15f4d1..d7232aa0335e13f1847d04c98e1467445e3c2f9e 100644
--- a/pallets/duniter-test-parameters/src/lib.rs
+++ b/pallets/duniter-test-parameters/src/lib.rs
@@ -40,22 +40,18 @@ pub mod types {
         pub cert_period: BlockNumber,
         pub cert_max_by_issuer: CertCount,
         pub cert_min_received_cert_to_issue_cert: CertCount,
-        pub cert_renewable_period: BlockNumber,
         pub cert_validity_period: BlockNumber,
         pub idty_confirm_period: BlockNumber,
         pub idty_creation_period: BlockNumber,
         pub membership_period: BlockNumber,
-        pub membership_renewable_period: BlockNumber,
         pub pending_membership_period: BlockNumber,
         pub ud_creation_period: BlockNumber,
         pub ud_reeval_period: BlockNumber,
         pub smith_cert_period: BlockNumber,
         pub smith_cert_max_by_issuer: CertCount,
         pub smith_cert_min_received_cert_to_issue_cert: CertCount,
-        pub smith_cert_renewable_period: BlockNumber,
         pub smith_cert_validity_period: BlockNumber,
         pub smith_membership_period: BlockNumber,
-        pub smith_membership_renewable_period: BlockNumber,
         pub smith_pending_membership_period: BlockNumber,
         pub smiths_wot_first_cert_issuable_on: BlockNumber,
         pub smiths_wot_min_cert_for_membership: CertCount,
diff --git a/pallets/duniter-wot/src/mock.rs b/pallets/duniter-wot/src/mock.rs
index 9a8be581756680aaf58430d297b191383f081edd..082388a87294793dee7bd98ac21e18298e127a9a 100644
--- a/pallets/duniter-wot/src/mock.rs
+++ b/pallets/duniter-wot/src/mock.rs
@@ -132,7 +132,6 @@ impl pallet_identity::Config for Test {
 parameter_types! {
     pub const MembershipPeriod: u64 = 8;
     pub const PendingMembershipPeriod: u64 = 3;
-    pub const RenewablePeriod: u64 = 2;
     pub const RevocationPeriod: u64 = 4;
 }
 
@@ -146,7 +145,6 @@ impl pallet_membership::Config<Instance1> for Test {
     type MetaData = crate::MembershipMetaData<u64>;
     type OnEvent = DuniterWot;
     type PendingMembershipPeriod = PendingMembershipPeriod;
-    type RenewablePeriod = RenewablePeriod;
     type RevocationPeriod = RevocationPeriod;
 }
 
@@ -154,7 +152,6 @@ impl pallet_membership::Config<Instance1> for Test {
 parameter_types! {
     pub const MaxByIssuer: u8 = 8;
     pub const MinReceivedCertToBeAbleToIssueCert: u32 = 2;
-    pub const CertRenewablePeriod: u64 = 4;
     pub const CertPeriod: u64 = 2;
     pub const ValidityPeriod: u64 = 20;
 }
@@ -169,7 +166,6 @@ impl pallet_certification::Config<Instance1> for Test {
     type MinReceivedCertToBeAbleToIssueCert = MinReceivedCertToBeAbleToIssueCert;
     type OnNewcert = DuniterWot;
     type OnRemovedCert = DuniterWot;
-    type CertRenewablePeriod = CertRenewablePeriod;
     type ValidityPeriod = ValidityPeriod;
 }
 
@@ -191,7 +187,6 @@ impl pallet_duniter_wot::Config<Instance2> for Test {
 parameter_types! {
     pub const SmithsMembershipPeriod: u64 = 20;
     pub const SmithsPendingMembershipPeriod: u64 = 3;
-    pub const SmithsRenewablePeriod: u64 = 2;
     pub const SmithsRevocationPeriod: u64 = 4;
 }
 
@@ -205,7 +200,6 @@ impl pallet_membership::Config<Instance2> for Test {
     type MetaData = crate::MembershipMetaData<u64>;
     type OnEvent = SmithsSubWot;
     type PendingMembershipPeriod = SmithsPendingMembershipPeriod;
-    type RenewablePeriod = SmithsRenewablePeriod;
     type RevocationPeriod = SmithsRevocationPeriod;
 }
 
@@ -213,7 +207,6 @@ impl pallet_membership::Config<Instance2> for Test {
 parameter_types! {
     pub const SmithsMaxByIssuer: u8 = 8;
     pub const SmithsMinReceivedCertToBeAbleToIssueCert: u32 = 2;
-    pub const SmithsCertRenewablePeriod: u64 = 4;
     pub const SmithsCertPeriod: u64 = 2;
     pub const SmithsValidityPeriod: u64 = 10;
 }
@@ -228,7 +221,6 @@ impl pallet_certification::Config<Instance2> for Test {
     type MinReceivedCertToBeAbleToIssueCert = SmithsMinReceivedCertToBeAbleToIssueCert;
     type OnNewcert = SmithsSubWot;
     type OnRemovedCert = SmithsSubWot;
-    type CertRenewablePeriod = SmithsCertRenewablePeriod;
     type ValidityPeriod = SmithsValidityPeriod;
 }
 
@@ -269,7 +261,6 @@ pub fn new_test_ext(
                     i as u32,
                     sp_membership::MembershipData {
                         expire_on: MembershipPeriod::get(),
-                        renewable_on: RenewablePeriod::get(),
                     },
                 )
             })
@@ -292,7 +283,6 @@ pub fn new_test_ext(
                     i as u32,
                     sp_membership::MembershipData {
                         expire_on: SmithsMembershipPeriod::get(),
-                        renewable_on: SmithsRenewablePeriod::get(),
                     },
                 )
             })
diff --git a/pallets/identity/src/mock.rs b/pallets/identity/src/mock.rs
index 2e34e74946b95de4f2d86364ed6bae82aa62346a..d6f973e040d38c5d3112d71b7c2e809f102f0d1c 100644
--- a/pallets/identity/src/mock.rs
+++ b/pallets/identity/src/mock.rs
@@ -80,7 +80,6 @@ parameter_types! {
     pub const ConfirmPeriod: u64 = 2;
     pub const IdtyCreationPeriod: u64 = 3;
     pub const MaxInactivityPeriod: u64 = 5;
-    pub const RenewablePeriod: u64 = 3;
     pub const ValidationPeriod: u64 = 2;
 }
 
diff --git a/pallets/membership/src/lib.rs b/pallets/membership/src/lib.rs
index af1e859d20638bdf9a81d81579350ca352d67dc5..1232c04d9e276baf3ae70a94612901aa9740fac5 100644
--- a/pallets/membership/src/lib.rs
+++ b/pallets/membership/src/lib.rs
@@ -78,9 +78,6 @@ pub mod pallet {
         /// Maximum period (in number of blocks), where an identity can remain pending subscription.
         type PendingMembershipPeriod: Get<Self::BlockNumber>;
         #[pallet::constant]
-        /// Duration after which a membership is renewable
-        type RenewablePeriod: Get<Self::BlockNumber>;
-        #[pallet::constant]
         /// Minimum duration (in number of blocks between a revocation and a new entry request
         type RevocationPeriod: Get<Self::BlockNumber>;
     }
@@ -184,8 +181,6 @@ pub mod pallet {
         MembershipAlreadyAcquired,
         /// Membership already requested
         MembershipAlreadyRequested,
-        /// Membership not yet renewable
-        MembershipNotYetRenewable,
         /// Membership not found
         MembershipNotFound,
         /// Origin not allowed to use this identity
@@ -280,14 +275,10 @@ pub mod pallet {
                 return Err(Error::<T, I>::IdtyNotAllowedToRenewMembership.into());
             }
 
-            if let Some(membership_data) = Self::get_membership(&idty_id) {
-                let block_number = frame_system::pallet::Pallet::<T>::block_number();
-                if membership_data.renewable_on > block_number {
-                    return Err(Error::<T, I>::MembershipNotYetRenewable.into());
-                }
-            } else {
-                return Err(Error::<T, I>::MembershipNotFound.into());
-            }
+            ensure!(
+                Self::get_membership(&idty_id).is_some(),
+                Error::<T, I>::MembershipNotFound
+            );
 
             let _ = Self::do_renew_membership(idty_id);
 
@@ -321,15 +312,8 @@ pub mod pallet {
         fn do_renew_membership_inner(idty_id: T::IdtyId) -> Weight {
             let block_number = frame_system::pallet::Pallet::<T>::block_number();
             let expire_on = block_number + T::MembershipPeriod::get();
-            let renewable_on = block_number + T::RenewablePeriod::get();
-
-            Self::insert_membership(
-                idty_id,
-                MembershipData {
-                    expire_on,
-                    renewable_on,
-                },
-            );
+
+            Self::insert_membership(idty_id, MembershipData { expire_on });
             MembershipsExpireOn::<T, I>::append(expire_on, idty_id);
             0
         }
diff --git a/pallets/membership/src/mock.rs b/pallets/membership/src/mock.rs
index e21a415375d0f72bdade6a03fcdf66556f04761c..4e1b49dd5772e86dfbc7455b0242229bad2b768d 100644
--- a/pallets/membership/src/mock.rs
+++ b/pallets/membership/src/mock.rs
@@ -80,7 +80,6 @@ impl system::Config for Test {
 parameter_types! {
     pub const MembershipPeriod: BlockNumber = 5;
     pub const PendingMembershipPeriod: BlockNumber = 3;
-    pub const RenewablePeriod: BlockNumber = 2;
     pub const RevocationPeriod: BlockNumber = 4;
 }
 
@@ -94,7 +93,6 @@ impl pallet_membership::Config for Test {
     type MetaData = ();
     type OnEvent = ();
     type PendingMembershipPeriod = PendingMembershipPeriod;
-    type RenewablePeriod = RenewablePeriod;
     type RevocationPeriod = RevocationPeriod;
 }
 
diff --git a/pallets/membership/src/tests.rs b/pallets/membership/src/tests.rs
index 8e96355971ddae717c856294587b7bd061873f30..67fa62fd09eb76e25bb7e67c4c9627c1ba937b37 100644
--- a/pallets/membership/src/tests.rs
+++ b/pallets/membership/src/tests.rs
@@ -28,7 +28,6 @@ fn default_gen_conf() -> DefaultMembershipConfig {
         memberships: btreemap![
             0 => MembershipData {
                 expire_on: 3,
-                renewable_on: 2
             }
         ],
     }
@@ -41,27 +40,12 @@ fn test_genesis_build() {
         // Verify state
         assert_eq!(
             DefaultMembership::membership(0),
-            Some(MembershipData {
-                expire_on: 3,
-                renewable_on: 2
-            })
+            Some(MembershipData { expire_on: 3 })
         );
         assert_eq!(DefaultMembership::members_count(), 1);
     });
 }
 
-#[test]
-fn test_membership_not_yet_renewable() {
-    new_test_ext(default_gen_conf()).execute_with(|| {
-        run_to_block(1);
-        // Merbership 0 cannot be renewed before #2
-        assert_eq!(
-            DefaultMembership::renew_membership(Origin::signed(0), None),
-            Err(Error::<Test, _>::MembershipNotYetRenewable.into())
-        );
-    });
-}
-
 #[test]
 fn test_membership_already_acquired() {
     new_test_ext(default_gen_conf()).execute_with(|| {
@@ -190,23 +174,16 @@ fn test_membership_workflow() {
             RuntimeEvent::DefaultMembership(Event::MembershipAcquired(0))
         );
 
-        // Then, idty 0 claim renewal, should fail
-        run_to_block(3);
-        assert_eq!(
-            DefaultMembership::renew_membership(Origin::signed(0), None),
-            Err(Error::<Test, _>::MembershipNotYetRenewable.into())
-        );
-
-        // Then, idty 0 claim renewal after renewable period, should success
-        run_to_block(2 + RenewablePeriod::get());
+        // Then, idty 0 claim renewal, should success
+        run_to_block(2);
         assert_ok!(DefaultMembership::renew_membership(Origin::signed(0), None),);
 
         // Then, idty 0 shoul still member until membership period ended
-        run_to_block(2 + RenewablePeriod::get() + MembershipPeriod::get() - 1);
+        run_to_block(2 + MembershipPeriod::get() - 1);
         assert!(DefaultMembership::is_member(&0));
 
         // Then, idty 0 shoul expire after membership period
-        run_to_block(2 + RenewablePeriod::get() + MembershipPeriod::get());
+        run_to_block(2 + MembershipPeriod::get());
         assert!(!DefaultMembership::is_member(&0),);
         assert_eq!(
             System::events()[0].event,
diff --git a/primitives/membership/src/lib.rs b/primitives/membership/src/lib.rs
index 600ae3661d4d405eade6365eebe796da20c63e7e..97194ce0d0203e143591b462f18a319dae5534b8 100644
--- a/primitives/membership/src/lib.rs
+++ b/primitives/membership/src/lib.rs
@@ -46,5 +46,4 @@ pub enum Event<IdtyId, MetaData = ()> {
 #[derive(Encode, Decode, Default, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)]
 pub struct MembershipData<BlockNumber: Decode + Encode + TypeInfo> {
     pub expire_on: BlockNumber,
-    pub renewable_on: BlockNumber,
 }
diff --git a/resources/gdev.json b/resources/gdev.json
index aba51b9128eed74ae6d82d12c4812aeaf7580842..45aa222ba1dcebe2d886ab840e44860dcb3a761b 100644
--- a/resources/gdev.json
+++ b/resources/gdev.json
@@ -137,22 +137,18 @@
     "cert_period": 14400,
     "cert_max_by_issuer": 100,
     "cert_min_received_cert_to_issue_cert": 5,
-    "cert_renewable_period": 172800,
     "cert_validity_period": 2102400,
     "idty_confirm_period": 14400,
     "idty_creation_period": 14400,
     "membership_period": 1051200,
-    "membership_renewable_period": 172800,
     "pending_membership_period": 172800,
     "ud_creation_period": 14400,
     "ud_reeval_period": 100800,
     "smith_cert_period": 14400,
     "smith_cert_max_by_issuer": 12,
     "smith_cert_min_received_cert_to_issue_cert": 3,
-    "smith_cert_renewable_period": 172800,
     "smith_cert_validity_period": 2102400,
     "smith_membership_period": 1051200,
-    "smith_membership_renewable_period": 172800,
     "smith_pending_membership_period": 172800,
     "smiths_wot_first_cert_issuable_on": 14400,
     "smiths_wot_min_cert_for_membership": 3,
diff --git a/resources/metadata.scale b/resources/metadata.scale
index 1f01cc4a16551841453d80d1d36da2e23037db3f..968b774a7abe5dd37311695ef4112ee05e6e9946 100644
Binary files a/resources/metadata.scale and b/resources/metadata.scale differ
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index 510c6e237c382cba2a8482171e32ebcef32e135d..bc5e82e5a2cd58b8de55327a998033f2c325c48f 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -447,7 +447,6 @@ macro_rules! pallets_config {
             type MetaData = pallet_duniter_wot::MembershipMetaData<AccountId>;
             type OnEvent = OnMembershipEventHandler<Wot, Runtime>;
             type PendingMembershipPeriod = PendingMembershipPeriod;
-            type RenewablePeriod = RenewablePeriod;
             type RevocationPeriod = frame_support::traits::ConstU32<0>;
         }
 
@@ -461,7 +460,6 @@ macro_rules! pallets_config {
             type MinReceivedCertToBeAbleToIssueCert = MinReceivedCertToBeAbleToIssueCert;
             type OnNewcert = Wot;
             type OnRemovedCert = Wot;
-            type CertRenewablePeriod = CertRenewablePeriod;
             type ValidityPeriod = ValidityPeriod;
         }
 
@@ -485,7 +483,6 @@ macro_rules! pallets_config {
             type MetaData = SmithsMembershipMetaData<opaque::SessionKeysWrapper>;
             type OnEvent = OnSmithMembershipEventHandler<SmithsSubWot, Runtime>;
             type PendingMembershipPeriod = SmithPendingMembershipPeriod;
-            type RenewablePeriod = SmithRenewablePeriod;
             type RevocationPeriod = frame_support::traits::ConstU32<0>;
         }
 
@@ -499,7 +496,6 @@ macro_rules! pallets_config {
             type MinReceivedCertToBeAbleToIssueCert = SmithMinReceivedCertToBeAbleToIssueCert;
             type OnNewcert = SmithsSubWot;
             type OnRemovedCert = SmithsSubWot;
-            type CertRenewablePeriod = SmithCertRenewablePeriod;
             type ValidityPeriod = SmithValidityPeriod;
         }
 
diff --git a/runtime/g1/src/parameters.rs b/runtime/g1/src/parameters.rs
index 44e8ced87dc87f4e613f7a978ad1966525a9524d..24a32ac67236ff2e621ba94f5353a0581d99adc2 100644
--- a/runtime/g1/src/parameters.rs
+++ b/runtime/g1/src/parameters.rs
@@ -111,7 +111,6 @@ parameter_types! {
 parameter_types! {
     pub const MembershipPeriod: BlockNumber = YEARS;
     pub const PendingMembershipPeriod: BlockNumber = 2 * MONTHS;
-    pub const RenewablePeriod: BlockNumber = 2 * MONTHS;
 }
 
 // Certification
@@ -119,7 +118,6 @@ parameter_types! {
     pub const CertPeriod: BlockNumber = 5 * DAYS;
     pub const MaxByIssuer: u32 = 100;
     pub const MinReceivedCertToBeAbleToIssueCert: u32 = 5;
-    pub const CertRenewablePeriod: BlockNumber = 6 * MONTHS;
     pub const ValidityPeriod: BlockNumber = 2 * YEARS;
 }
 
@@ -136,7 +134,6 @@ parameter_types! {
 parameter_types! {
     pub const SmithMembershipPeriod: BlockNumber = 73 * DAYS;
     pub const SmithPendingMembershipPeriod: BlockNumber = 12 * DAYS;
-    pub const SmithRenewablePeriod: BlockNumber = 12 * DAYS;
 }
 
 // Certification
@@ -144,7 +141,6 @@ parameter_types! {
     pub const SmithCertPeriod: BlockNumber = 5 * DAYS;
     pub const SmithMaxByIssuer: u32 = 12;
     pub const SmithMinReceivedCertToBeAbleToIssueCert: u32 = 5;
-    pub const SmithCertRenewablePeriod: BlockNumber = 12 * DAYS;
     pub const SmithValidityPeriod: BlockNumber = 146 * DAYS;
 }
 
diff --git a/runtime/gdev/src/lib.rs b/runtime/gdev/src/lib.rs
index 99f886d165d862b0a652f53d2399bb63a71b7816..80744615582a146b6557207d353a641bc9631cca 100644
--- a/runtime/gdev/src/lib.rs
+++ b/runtime/gdev/src/lib.rs
@@ -227,12 +227,10 @@ common_runtime::pallets_config! {
     pub type MaxByIssuer = pallet_duniter_test_parameters::CertMaxByIssuer<Runtime>;
     pub type MinReceivedCertToBeAbleToIssueCert =
         pallet_duniter_test_parameters::CertMinReceivedCertToIssueCert<Runtime>;
-    pub type CertRenewablePeriod = pallet_duniter_test_parameters::CertRenewablePeriod<Runtime>;
     pub type ValidityPeriod = pallet_duniter_test_parameters::CertValidityPeriod<Runtime>;
     pub type ConfirmPeriod = pallet_duniter_test_parameters::IdtyConfirmPeriod<Runtime>;
     pub type IdtyCreationPeriod = pallet_duniter_test_parameters::IdtyCreationPeriod<Runtime>;
     pub type MembershipPeriod = pallet_duniter_test_parameters::MembershipPeriod<Runtime>;
-    pub type RenewablePeriod = pallet_duniter_test_parameters::MembershipRenewablePeriod<Runtime>;
     pub type PendingMembershipPeriod = pallet_duniter_test_parameters::PendingMembershipPeriod<Runtime>;
     #[cfg(not(test))]
     pub type UdCreationPeriod = pallet_duniter_test_parameters::UdCreationPeriod<Runtime>;
@@ -247,14 +245,10 @@ common_runtime::pallets_config! {
     pub type SmithMaxByIssuer = pallet_duniter_test_parameters::SmithCertMaxByIssuer<Runtime>;
     pub type SmithMinReceivedCertToBeAbleToIssueCert =
         pallet_duniter_test_parameters::SmithCertMinReceivedCertToIssueCert<Runtime>;
-    pub type SmithCertRenewablePeriod =
-        pallet_duniter_test_parameters::SmithCertRenewablePeriod<Runtime>;
     pub type SmithValidityPeriod = pallet_duniter_test_parameters::SmithCertValidityPeriod<Runtime>;
     pub type SmithMembershipPeriod = pallet_duniter_test_parameters::SmithMembershipPeriod<Runtime>;
     pub type SmithPendingMembershipPeriod =
         pallet_duniter_test_parameters::SmithPendingMembershipPeriod<Runtime>;
-    pub type SmithRenewablePeriod =
-        pallet_duniter_test_parameters::SmithMembershipRenewablePeriod<Runtime>;
     pub type SmithsWotFirstCertIssuableOn =
         pallet_duniter_test_parameters::SmithsWotFirstCertIssuableOn<Runtime>;
     pub type SmithsWotMinCertForMembership =
diff --git a/runtime/gdev/tests/common/mod.rs b/runtime/gdev/tests/common/mod.rs
index 4bcb9d45a239cab966d1ea3a90c8674c5c3c6207..323fbeca5c90acacb9a4d37a15349cb341ec5a5c 100644
--- a/runtime/gdev/tests/common/mod.rs
+++ b/runtime/gdev/tests/common/mod.rs
@@ -99,22 +99,18 @@ impl ExtBuilder {
                 cert_period: 15,
                 cert_max_by_issuer: 10,
                 cert_min_received_cert_to_issue_cert: 2,
-                cert_renewable_period: 50,
                 cert_validity_period: 10_000,
                 idty_confirm_period: 40,
                 idty_creation_period: 50,
                 membership_period: 1_000,
-                membership_renewable_period: 5,
                 pending_membership_period: 500,
                 ud_creation_period: 10,
                 ud_reeval_period: 10 * 20,
                 smith_cert_period: 15,
                 smith_cert_max_by_issuer: 8,
                 smith_cert_min_received_cert_to_issue_cert: 2,
-                smith_cert_renewable_period: 50,
                 smith_cert_validity_period: 1_000,
                 smith_membership_period: 1_000,
-                smith_membership_renewable_period: 50,
                 smith_pending_membership_period: 500,
                 smiths_wot_first_cert_issuable_on: 20,
                 smiths_wot_min_cert_for_membership: 2,
@@ -226,7 +222,6 @@ impl ExtBuilder {
                         i as u32,
                         MembershipData {
                             expire_on: parameters.membership_period,
-                            renewable_on: parameters.membership_renewable_period,
                         },
                     )
                 })
@@ -249,7 +244,6 @@ impl ExtBuilder {
                         i as u32,
                         MembershipData {
                             expire_on: parameters.smith_membership_period,
-                            renewable_on: parameters.smith_membership_renewable_period,
                         },
                     )
                 })
diff --git a/runtime/gtest/src/parameters.rs b/runtime/gtest/src/parameters.rs
index 8193b10c417e764f720a63355b36f8ebbbd96e47..745786181445ad3edc16ac959c810408589efbf9 100644
--- a/runtime/gtest/src/parameters.rs
+++ b/runtime/gtest/src/parameters.rs
@@ -112,14 +112,12 @@ frame_support::parameter_types! {
 parameter_types! {
     pub const MembershipPeriod: BlockNumber = 73 * DAYS;
     pub const PendingMembershipPeriod: BlockNumber = 12 * DAYS;
-    pub const RenewablePeriod: BlockNumber = 12 * DAYS;
 }
 
 // Certification
 parameter_types! {
     pub const CertPeriod: BlockNumber = DAYS;
     pub const MaxByIssuer: u32 = 100;
-    pub const CertRenewablePeriod: BlockNumber = 12 * DAYS;
     pub const ValidityPeriod: BlockNumber = 146 * DAYS;
 }
 
@@ -136,7 +134,6 @@ parameter_types! {
 parameter_types! {
     pub const SmithMembershipPeriod: BlockNumber = 73 * DAYS;
     pub const SmithPendingMembershipPeriod: BlockNumber = 12 * DAYS;
-    pub const SmithRenewablePeriod: BlockNumber = 12 * DAYS;
 }
 
 // Certification
@@ -144,7 +141,6 @@ parameter_types! {
     pub const SmithCertPeriod: BlockNumber = DAYS;
     pub const SmithMaxByIssuer: u32 = 100;
     pub const SmithMinReceivedCertToBeAbleToIssueCert: u32 = 5;
-    pub const SmithCertRenewablePeriod: BlockNumber = 12 * DAYS;
     pub const SmithValidityPeriod: BlockNumber = 146 * DAYS;
 }