diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs
index faead509636312b0e9e34d61ca6d5fbcf51c4d6a..dcbf64d3bfb98d49fca9f38beb911ae7bd9ca835 100644
--- a/pallets/identity/src/lib.rs
+++ b/pallets/identity/src/lib.rs
@@ -716,11 +716,9 @@ pub mod pallet {
                         status: IdtyStatus::Revoked,
                     },
                 );
-                return T::WeightInfo::do_remove_identity();
-                // TODO benchmark this
-                // return T::WeightInfo::do_revoke_identity();
+                return T::WeightInfo::do_revoke_identity();
             }
-            T::WeightInfo::do_remove_identity_noop()
+            T::WeightInfo::do_revoke_identity_noop()
         }
 
         /// incremental counter for identity index
@@ -835,7 +833,6 @@ pub mod pallet {
             );
 
             // 2. issuer respects identity creation period
-            // (TODO is it only for certification or is there another reason?)
             ensure!(
                 creator_idty_val.next_creatable_identity_on <= block_number,
                 Error::<T>::NotRespectIdtyCreationPeriod
diff --git a/pallets/identity/src/weights.rs b/pallets/identity/src/weights.rs
index 729d3a8ef0343105ca762fc0dc0de8207532a5cd..ee07fdec978c74ce96b9b7f70f25c263b8e50fa5 100644
--- a/pallets/identity/src/weights.rs
+++ b/pallets/identity/src/weights.rs
@@ -18,18 +18,17 @@
 
 use frame_support::weights::{constants::RocksDbWeight, Weight};
 
-/// Weight functions needed for pallet_universal_dividend.
 pub trait WeightInfo {
     fn create_identity() -> Weight;
     fn confirm_identity() -> Weight;
-    fn validate_identity() -> Weight;
     fn change_owner_key() -> Weight;
     fn revoke_identity() -> Weight;
-    fn force_remove_identity() -> Weight;
     fn prune_item_identities_names(i: u32) -> Weight;
     fn fix_sufficients() -> Weight;
     fn link_account() -> Weight;
     fn on_initialize() -> Weight;
+    fn do_revoke_identity_noop() -> Weight;
+    fn do_revoke_identity() -> Weight;
     fn do_remove_identity_noop() -> Weight;
     fn do_remove_identity() -> Weight;
     fn prune_identities_noop() -> Weight;
@@ -39,183 +38,149 @@ pub trait WeightInfo {
 
 // Insecure weights implementation, use it for tests only!
 impl WeightInfo for () {
-    // Storage: Identity IdentityIndexOf (r:2 w:1)
-    // Storage: Identity Identities (r:2 w:2)
-    // Storage: Cert StorageIdtyCertMeta (r:2 w:2)
-    // Storage: Parameters ParametersStorage (r:1 w:0)
-    // Storage: System Account (r:1 w:1)
-    // Storage: Identity NextIdtyIndex (r:1 w:1)
-    // Storage: Identity CounterForIdentities (r:1 w:1)
-    // Storage: Identity IdentitiesRemovableOn (r:1 w:1)
-    // Storage: Cert StorageCertsRemovableOn (r:1 w:1)
-    // Storage: Cert CertsByReceiver (r:1 w:1)
     fn create_identity() -> Weight {
-        // Minimum execution time: 440_987 nanoseconds.
-        Weight::from_parts(462_747_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(13 as u64))
-            .saturating_add(RocksDbWeight::get().writes(11 as u64))
+        // Proof Size summary in bytes:
+        //  Measured:  `1165`
+        //  Estimated: `7105`
+        // Minimum execution time: 1_643_969_000 picoseconds.
+        Weight::from_parts(1_781_521_000, 0)
+            .saturating_add(Weight::from_parts(0, 7105))
+            .saturating_add(RocksDbWeight::get().reads(14))
+            .saturating_add(RocksDbWeight::get().writes(12))
     }
-    // Storage: Identity IdentityIndexOf (r:1 w:0)
-    // Storage: Identity Identities (r:1 w:1)
-    // Storage: Identity IdentitiesNames (r:1 w:1)
-    // Storage: Membership PendingMembership (r:1 w:1)
-    // Storage: Membership Membership (r:1 w:0)
-    // Storage: Parameters ParametersStorage (r:1 w:0)
-    // Storage: Membership PendingMembershipsExpireOn (r:1 w:1)
     fn confirm_identity() -> Weight {
-        // Minimum execution time: 186_617 nanoseconds.
-        Weight::from_parts(309_527_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(7 as u64))
-            .saturating_add(RocksDbWeight::get().writes(4 as u64))
-    }
-    // Storage: Identity Identities (r:1 w:1)
-    // Storage: Membership Membership (r:1 w:1)
-    // Storage: Cert StorageIdtyCertMeta (r:1 w:0)
-    // Storage: Parameters ParametersStorage (r:1 w:0)
-    // Storage: Membership PendingMembership (r:1 w:1)
-    // Storage: Membership CounterForMembership (r:1 w:1)
-    // Storage: Membership MembershipsExpireOn (r:1 w:1)
-    // Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
-    fn validate_identity() -> Weight {
-        // Minimum execution time: 299_920 nanoseconds.
-        Weight::from_parts(320_025_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(8 as u64))
-            .saturating_add(RocksDbWeight::get().writes(5 as u64))
+        // Proof Size summary in bytes:
+        //  Measured:  `661`
+        //  Estimated: `6601`
+        // Minimum execution time: 564_892_000 picoseconds.
+        Weight::from_parts(588_761_000, 0)
+            .saturating_add(Weight::from_parts(0, 6601))
+            .saturating_add(RocksDbWeight::get().reads(5))
+            .saturating_add(RocksDbWeight::get().writes(4))
     }
-    // Storage: Identity IdentityIndexOf (r:2 w:2)
-    // Storage: Identity Identities (r:1 w:1)
-    // Storage: SmithMembership Membership (r:1 w:0)
-    // Storage: System BlockHash (r:1 w:0)
-    // Storage: System Account (r:1 w:1)
-    // Storage: AuthorityMembers Members (r:1 w:0)
     fn change_owner_key() -> Weight {
-        // Minimum execution time: 442_260 nanoseconds.
-        Weight::from_parts(728_714_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(7 as u64))
-            .saturating_add(RocksDbWeight::get().writes(4 as u64))
+        // Proof Size summary in bytes:
+        //  Measured:  `837`
+        //  Estimated: `6777`
+        // Minimum execution time: 991_641_000 picoseconds.
+        Weight::from_parts(1_071_332_000, 0)
+            .saturating_add(Weight::from_parts(0, 6777))
+            .saturating_add(RocksDbWeight::get().reads(7))
+            .saturating_add(RocksDbWeight::get().writes(5))
     }
-    // Storage: Identity Identities (r:1 w:1)
-    // Storage: SmithMembership Membership (r:1 w:0)
-    // Storage: System BlockHash (r:1 w:0)
-    // Storage: Membership Membership (r:1 w:1)
-    // Storage: Identity CounterForIdentities (r:1 w:1)
-    // Storage: System Account (r:1 w:1)
-    // Storage: Cert CertsByReceiver (r:1 w:1)
-    // Storage: Cert StorageIdtyCertMeta (r:2 w:2)
-    // Storage: Parameters ParametersStorage (r:1 w:0)
-    // Storage: Identity IdentityIndexOf (r:0 w:1)
     fn revoke_identity() -> Weight {
-        // Minimum execution time: 494_407 nanoseconds.
-        Weight::from_parts(800_824_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(10 as u64))
-            .saturating_add(RocksDbWeight::get().writes(8 as u64))
-    }
-    // Storage: Identity Identities (r:1 w:1)
-    // Storage: SmithMembership Membership (r:1 w:0)
-    // Storage: Membership Membership (r:1 w:1)
-    // Storage: Identity CounterForIdentities (r:1 w:1)
-    // Storage: System Account (r:1 w:1)
-    // Storage: Cert CertsByReceiver (r:1 w:1)
-    // Storage: Cert StorageIdtyCertMeta (r:2 w:2)
-    // Storage: Parameters ParametersStorage (r:1 w:0)
-    // Storage: Identity IdentityIndexOf (r:0 w:1)
-    // Storage: Identity IdentitiesNames (r:0 w:1)
-    fn force_remove_identity() -> Weight {
-        // Minimum execution time: 302_574 nanoseconds.
-        Weight::from_parts(504_132_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(9 as u64))
-            .saturating_add(RocksDbWeight::get().writes(9 as u64))
+        // Proof Size summary in bytes:
+        //  Measured:  `778`
+        //  Estimated: `6718`
+        // Minimum execution time: 829_174_000 picoseconds.
+        Weight::from_parts(869_308_000, 0)
+            .saturating_add(Weight::from_parts(0, 6718))
+            .saturating_add(RocksDbWeight::get().reads(6))
+            .saturating_add(RocksDbWeight::get().writes(6))
     }
-    // Storage: Identity IdentitiesNames (r:0 w:20)
-    /// The range of component `i` is `[1, 1000]`.
     fn prune_item_identities_names(i: u32) -> Weight {
-        // Minimum execution time: 22_533 nanoseconds.
-        Weight::from_parts(282_674_421 as u64, 0)
-            // Standard Error: 170_391
-            .saturating_add(Weight::from_parts(5_660_460 as u64, 0).saturating_mul(i as u64))
-            .saturating_add(RocksDbWeight::get().writes((1 as u64).saturating_mul(i as u64)))
+        // Proof Size summary in bytes:
+        //  Measured:  `0`
+        //  Estimated: `0`
+        // Minimum execution time: 51_362_000 picoseconds.
+        Weight::from_parts(80_389_000, 0)
+            .saturating_add(Weight::from_parts(0, 0))
+            // Standard Error: 75_232
+            .saturating_add(Weight::from_parts(30_016_649, 0).saturating_mul(i.into()))
+            .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(i.into())))
     }
-    // Storage: System Account (r:1 w:1)
     fn fix_sufficients() -> Weight {
-        // Minimum execution time: 112_793 nanoseconds.
-        Weight::from_parts(122_192_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(1 as u64))
-            .saturating_add(RocksDbWeight::get().writes(1 as u64))
+        // Proof Size summary in bytes:
+        //  Measured:  `67`
+        //  Estimated: `3591`
+        // Minimum execution time: 154_343_000 picoseconds.
+        Weight::from_parts(156_117_000, 0)
+            .saturating_add(Weight::from_parts(0, 3591))
+            .saturating_add(RocksDbWeight::get().reads(1))
+            .saturating_add(RocksDbWeight::get().writes(1))
     }
-    /// Storage: Identity IdentityIndexOf (r:1 w:0)
-    /// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
-    /// Storage: System BlockHash (r:1 w:0)
-    /// Proof: System BlockHash (max_values: None, max_size: Some(44), added: 2519, mode: MaxEncodedLen)
-    /// Storage: System Account (r:1 w:1)
-    /// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
     fn link_account() -> Weight {
         // Proof Size summary in bytes:
-        //  Measured:  `359`
-        //  Estimated: `3824`
-        // Minimum execution time: 543_046_000 picoseconds.
-        Weight::from_parts(544_513_000, 0)
-            .saturating_add(Weight::from_parts(0, 3824))
+        //  Measured:  `307`
+        //  Estimated: `3772`
+        // Minimum execution time: 538_773_000 picoseconds.
+        Weight::from_parts(591_354_000, 0)
+            .saturating_add(Weight::from_parts(0, 3772))
             .saturating_add(RocksDbWeight::get().reads(3))
             .saturating_add(RocksDbWeight::get().writes(1))
     }
     fn on_initialize() -> Weight {
         // Proof Size summary in bytes:
-        //  Measured:  `359`
-        //  Estimated: `3824`
-        // Minimum execution time: 543_046_000 picoseconds.
-        Weight::from_parts(544_513_000, 0)
-            .saturating_add(Weight::from_parts(0, 3824))
-            .saturating_add(RocksDbWeight::get().reads(3))
-            .saturating_add(RocksDbWeight::get().writes(1))
+        //  Measured:  `0`
+        //  Estimated: `0`
+        // Minimum execution time: 4_529_000 picoseconds.
+        Weight::from_parts(7_360_000, 0).saturating_add(Weight::from_parts(0, 0))
+    }
+    fn do_revoke_identity_noop() -> Weight {
+        // Proof Size summary in bytes:
+        //  Measured:  `269`
+        //  Estimated: `3734`
+        // Minimum execution time: 103_668_000 picoseconds.
+        Weight::from_parts(107_679_000, 0)
+            .saturating_add(Weight::from_parts(0, 3734))
+            .saturating_add(RocksDbWeight::get().reads(1))
+    }
+    fn do_revoke_identity() -> Weight {
+        // Proof Size summary in bytes:
+        //  Measured:  `1525`
+        //  Estimated: `7465`
+        // Minimum execution time: 2_204_911_000 picoseconds.
+        Weight::from_parts(2_225_493_000, 0)
+            .saturating_add(Weight::from_parts(0, 7465))
+            .saturating_add(RocksDbWeight::get().reads(17))
+            .saturating_add(RocksDbWeight::get().writes(20))
     }
     fn do_remove_identity_noop() -> Weight {
         // Proof Size summary in bytes:
-        //  Measured:  `359`
-        //  Estimated: `3824`
-        // Minimum execution time: 543_046_000 picoseconds.
-        Weight::from_parts(544_513_000, 0)
-            .saturating_add(Weight::from_parts(0, 3824))
-            .saturating_add(RocksDbWeight::get().reads(3))
-            .saturating_add(RocksDbWeight::get().writes(1))
+        //  Measured:  `269`
+        //  Estimated: `3734`
+        // Minimum execution time: 104_296_000 picoseconds.
+        Weight::from_parts(115_316_000, 0)
+            .saturating_add(Weight::from_parts(0, 3734))
+            .saturating_add(RocksDbWeight::get().reads(1))
     }
     fn do_remove_identity() -> Weight {
         // Proof Size summary in bytes:
-        //  Measured:  `359`
-        //  Estimated: `3824`
-        // Minimum execution time: 543_046_000 picoseconds.
-        Weight::from_parts(544_513_000, 0)
-            .saturating_add(Weight::from_parts(0, 3824))
-            .saturating_add(RocksDbWeight::get().reads(3))
-            .saturating_add(RocksDbWeight::get().writes(1))
+        //  Measured:  `1432`
+        //  Estimated: `6192`
+        // Minimum execution time: 2_870_497_000 picoseconds.
+        Weight::from_parts(4_159_994_000, 0)
+            .saturating_add(Weight::from_parts(0, 6192))
+            .saturating_add(RocksDbWeight::get().reads(16))
+            .saturating_add(RocksDbWeight::get().writes(22))
     }
     fn prune_identities_noop() -> Weight {
         // Proof Size summary in bytes:
-        //  Measured:  `359`
-        //  Estimated: `3824`
-        // Minimum execution time: 543_046_000 picoseconds.
-        Weight::from_parts(544_513_000, 0)
-            .saturating_add(Weight::from_parts(0, 3824))
-            .saturating_add(RocksDbWeight::get().reads(3))
-            .saturating_add(RocksDbWeight::get().writes(1))
+        //  Measured:  `108`
+        //  Estimated: `3573`
+        // Minimum execution time: 68_859_000 picoseconds.
+        Weight::from_parts(71_836_000, 0)
+            .saturating_add(Weight::from_parts(0, 3573))
+            .saturating_add(RocksDbWeight::get().reads(1))
     }
     fn prune_identities_none() -> Weight {
         // Proof Size summary in bytes:
-        //  Measured:  `359`
-        //  Estimated: `3824`
-        // Minimum execution time: 543_046_000 picoseconds.
-        Weight::from_parts(544_513_000, 0)
-            .saturating_add(Weight::from_parts(0, 3824))
-            .saturating_add(RocksDbWeight::get().reads(3))
+        //  Measured:  `292`
+        //  Estimated: `3757`
+        // Minimum execution time: 178_332_000 picoseconds.
+        Weight::from_parts(186_982_000, 0)
+            .saturating_add(Weight::from_parts(0, 3757))
+            .saturating_add(RocksDbWeight::get().reads(2))
             .saturating_add(RocksDbWeight::get().writes(1))
     }
     fn prune_identities_err() -> Weight {
         // Proof Size summary in bytes:
-        //  Measured:  `359`
-        //  Estimated: `3824`
-        // Minimum execution time: 543_046_000 picoseconds.
-        Weight::from_parts(544_513_000, 0)
-            .saturating_add(Weight::from_parts(0, 3824))
-            .saturating_add(RocksDbWeight::get().reads(3))
-            .saturating_add(RocksDbWeight::get().writes(1))
+        //  Measured:  `1177`
+        //  Estimated: `4642`
+        // Minimum execution time: 1_427_848_000 picoseconds.
+        Weight::from_parts(2_637_229_000, 0)
+            .saturating_add(Weight::from_parts(0, 4642))
+            .saturating_add(RocksDbWeight::get().reads(8))
+            .saturating_add(RocksDbWeight::get().writes(8))
     }
 }
diff --git a/pallets/membership/src/benchmarking.rs b/pallets/membership/src/benchmarking.rs
index 539269cc1e0b78985c2e5ebe0507e072b0c4be92..48849bd51e2adee83a09740d3ed6143478cfdd9d 100644
--- a/pallets/membership/src/benchmarking.rs
+++ b/pallets/membership/src/benchmarking.rs
@@ -38,6 +38,7 @@ benchmarks_instance_pallet! {
             T::IdtyId: From<u32>,
     }
 
+    // claim membership
     claim_membership {
         let idty: T::IdtyId = 3.into();
         Membership::<T, I>::take(idty);
@@ -49,6 +50,7 @@ benchmarks_instance_pallet! {
         assert_has_event::<T, I>(Event::<T, I>::MembershipAdded{member: idty, expire_on: BlockNumberFor::<T>::one() + T::MembershipPeriod::get()}.into());
     }
 
+    // renew membership
     renew_membership {
         let idty: T::IdtyId = 3.into();
         let caller: T::AccountId = T::AccountIdOf::convert(idty.clone()).unwrap();
@@ -59,6 +61,7 @@ benchmarks_instance_pallet! {
         assert_has_event::<T, I>(Event::<T, I>::MembershipAdded{member: idty, expire_on: BlockNumberFor::<T>::one() + T::MembershipPeriod::get()}.into());
     }
 
+    // revoke membership
     revoke_membership {
         let idty: T::IdtyId = 3.into();
         let caller: T::AccountId = T::AccountIdOf::convert(idty.clone()).unwrap();
@@ -69,6 +72,9 @@ benchmarks_instance_pallet! {
     }
 
     // Base weight of an empty initialize
+    on_initialize {
+    }: {Pallet::<T, I>::on_initialize(BlockNumberFor::<T>::zero());}
+
     expire_memberships {
         let i in 0..1024;
         let mut idties: Vec<T::IdtyId> = Vec::new();
diff --git a/pallets/membership/src/weights.rs b/pallets/membership/src/weights.rs
index 253c1fc92a11decc1cd133e1df44cde69b740288..e244e83b78b15a04a71ecddd24f6f12797dc549e 100644
--- a/pallets/membership/src/weights.rs
+++ b/pallets/membership/src/weights.rs
@@ -20,75 +20,65 @@ use frame_support::weights::{constants::RocksDbWeight, Weight};
 
 /// Weight functions needed for pallet_universal_dividend.
 pub trait WeightInfo {
-    fn request_membership() -> Weight;
     fn claim_membership() -> Weight;
     fn renew_membership() -> Weight;
     fn revoke_membership() -> Weight;
     fn on_initialize() -> Weight;
-    fn expire_pending_memberships(_i: u32) -> Weight;
     fn expire_memberships(_i: u32) -> Weight;
 }
 
 // Insecure weights implementation, use it for tests only!
 impl WeightInfo for () {
-    // Storage: Identity IdentityIndexOf (r:1 w:0)
-    // Storage: Identity Identities (r:1 w:0)
-    fn request_membership() -> Weight {
-        // Minimum execution time: 48_477 nanoseconds.
-        Weight::from_parts(50_689_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(2 as u64))
-    }
-    // Storage: Identity IdentityIndexOf (r:1 w:0)
-    // Storage: Membership Membership (r:1 w:1)
-    // Storage: Cert StorageIdtyCertMeta (r:1 w:0)
-    // Storage: Parameters ParametersStorage (r:1 w:0)
-    // Storage: Membership PendingMembership (r:1 w:1)
-    // Storage: Membership CounterForMembership (r:1 w:1)
-    // Storage: Membership MembershipsExpireOn (r:1 w:1)
     fn claim_membership() -> Weight {
-        // Minimum execution time: 144_079 nanoseconds.
-        Weight::from_parts(146_565_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(7 as u64))
-            .saturating_add(RocksDbWeight::get().writes(4 as u64))
+        // Proof Size summary in bytes:
+        //  Measured:  `1272`
+        //  Estimated: `4737`
+        // Minimum execution time: 1_213_348_000 picoseconds.
+        Weight::from_parts(1_439_442_000, 0)
+            .saturating_add(Weight::from_parts(0, 4737))
+            .saturating_add(RocksDbWeight::get().reads(10))
+            .saturating_add(RocksDbWeight::get().writes(4))
     }
-    // Storage: Identity IdentityIndexOf (r:1 w:0)
-    // Storage: Membership Membership (r:1 w:1)
-    // Storage: Identity Identities (r:1 w:0)
-    // Storage: Parameters ParametersStorage (r:1 w:0)
-    // Storage: Membership MembershipsExpireOn (r:1 w:1)
     fn renew_membership() -> Weight {
-        // Minimum execution time: 120_859 nanoseconds.
-        Weight::from_parts(124_222_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(5 as u64))
-            .saturating_add(RocksDbWeight::get().writes(2 as u64))
+        // Proof Size summary in bytes:
+        //  Measured:  `988`
+        //  Estimated: `6928`
+        // Minimum execution time: 714_537_000 picoseconds.
+        Weight::from_parts(862_085_000, 0)
+            .saturating_add(Weight::from_parts(0, 6928))
+            .saturating_add(RocksDbWeight::get().reads(7))
+            .saturating_add(RocksDbWeight::get().writes(3))
     }
-    // Storage: Identity IdentityIndexOf (r:1 w:0)
-    // Storage: Membership Membership (r:1 w:1)
-    // Storage: Membership CounterForMembership (r:1 w:1)
-    // Storage: Identity Identities (r:1 w:0)
-    // Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
     fn revoke_membership() -> Weight {
-        // Minimum execution time: 109_486 nanoseconds.
-        Weight::from_parts(113_303_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(5 as u64))
-            .saturating_add(RocksDbWeight::get().writes(2 as u64))
+        // Proof Size summary in bytes:
+        //  Measured:  `703`
+        //  Estimated: `6643`
+        // Minimum execution time: 847_926_000 picoseconds.
+        Weight::from_parts(1_282_028_000, 0)
+            .saturating_add(Weight::from_parts(0, 6643))
+            .saturating_add(RocksDbWeight::get().reads(8))
+            .saturating_add(RocksDbWeight::get().writes(5))
     }
     fn on_initialize() -> Weight {
-        // Minimum execution time: 109_486 nanoseconds.
-        Weight::from_parts(113_303_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(5 as u64))
-            .saturating_add(RocksDbWeight::get().writes(2 as u64))
-    }
-    fn expire_pending_memberships(_i: u32) -> Weight {
-        // Minimum execution time: 109_486 nanoseconds.
-        Weight::from_parts(113_303_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(5 as u64))
-            .saturating_add(RocksDbWeight::get().writes(2 as u64))
+        // Proof Size summary in bytes:
+        //  Measured:  `0`
+        //  Estimated: `0`
+        // Minimum execution time: 4_012_000 picoseconds.
+        Weight::from_parts(4_629_000, 0).saturating_add(Weight::from_parts(0, 0))
     }
-    fn expire_memberships(_i: u32) -> Weight {
-        // Minimum execution time: 109_486 nanoseconds.
-        Weight::from_parts(113_303_000 as u64, 0)
-            .saturating_add(RocksDbWeight::get().reads(5 as u64))
-            .saturating_add(RocksDbWeight::get().writes(2 as u64))
+    fn expire_memberships(i: u32) -> Weight {
+        // Proof Size summary in bytes:
+        //  Measured:  `567 + i * (23 ±0)`
+        //  Estimated: `6583 + i * (2499 ±0)`
+        // Minimum execution time: 86_925_000 picoseconds.
+        Weight::from_parts(89_056_000, 0)
+            .saturating_add(Weight::from_parts(0, 6583))
+            // Standard Error: 2_429_589
+            .saturating_add(Weight::from_parts(295_368_241, 0).saturating_mul(i.into()))
+            .saturating_add(RocksDbWeight::get().reads(3))
+            .saturating_add(RocksDbWeight::get().reads((2_u64).saturating_mul(i.into())))
+            .saturating_add(RocksDbWeight::get().writes(5))
+            .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(i.into())))
+            .saturating_add(Weight::from_parts(0, 2499).saturating_mul(i.into()))
     }
 }
diff --git a/runtime/common/src/weights/pallet_identity.rs b/runtime/common/src/weights/pallet_identity.rs
index 332be4f48444499deb4ee6c2791968a182149fdc..5664f72ae7a09c34dba4bfa114cf90b6abf37fd1 100644
--- a/runtime/common/src/weights/pallet_identity.rs
+++ b/runtime/common/src/weights/pallet_identity.rs
@@ -1,28 +1,41 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_identity`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! HOSTNAME: `squirrel`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz`
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// ./target/debug/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=50
+// --repeat=20
+// --pallet=pallet-identity
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
-// --output=runtime/common/src/weights/
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -47,24 +60,26 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
 	/// Storage: Identity NextIdtyIndex (r:1 w:1)
 	/// Proof Skipped: Identity NextIdtyIndex (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: Identity IdentityChangeSchedule (r:1 w:1)
+	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Identity CounterForIdentities (r:1 w:1)
 	/// Proof: Identity CounterForIdentities (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: Identity IdentitiesRemovableOn (r:1 w:1)
-	/// Proof Skipped: Identity IdentitiesRemovableOn (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Cert StorageCertsRemovableOn (r:1 w:1)
 	/// Proof Skipped: Cert StorageCertsRemovableOn (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Cert CertsByReceiver (r:1 w:1)
 	/// Proof Skipped: Cert CertsByReceiver (max_values: None, max_size: None, mode: Measured)
+	/// Storage: SmithCert StorageIdtyCertMeta (r:1 w:0)
+	/// Proof Skipped: SmithCert StorageIdtyCertMeta (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Quota IdtyQuota (r:0 w:1)
 	/// Proof: Quota IdtyQuota (max_values: None, max_size: Some(24), added: 2499, mode: MaxEncodedLen)
 	fn create_identity() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `982`
-		//  Estimated: `6922`
-		// Minimum execution time: 38_137_000 picoseconds.
-		Weight::from_parts(39_647_000, 0)
-			.saturating_add(Weight::from_parts(0, 6922))
-			.saturating_add(T::DbWeight::get().reads(13))
+		//  Measured:  `1165`
+		//  Estimated: `7105`
+		// Minimum execution time: 1_643_969_000 picoseconds.
+		Weight::from_parts(1_781_521_000, 0)
+			.saturating_add(Weight::from_parts(0, 7105))
+			.saturating_add(T::DbWeight::get().reads(14))
 			.saturating_add(T::DbWeight::get().writes(12))
 	}
 	/// Storage: Identity IdentityIndexOf (r:1 w:0)
@@ -73,52 +88,18 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Identity IdentitiesNames (r:1 w:1)
 	/// Proof Skipped: Identity IdentitiesNames (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Membership PendingMembership (r:1 w:1)
-	/// Proof Skipped: Membership PendingMembership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Membership Membership (r:1 w:0)
-	/// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Parameters ParametersStorage (r:1 w:0)
-	/// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured)
-	/// Storage: Membership PendingMembershipsExpireOn (r:1 w:1)
-	/// Proof Skipped: Membership PendingMembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Identity IdentityChangeSchedule (r:2 w:2)
+	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
 	fn confirm_identity() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `955`
-		//  Estimated: `4420`
-		// Minimum execution time: 23_569_000 picoseconds.
-		Weight::from_parts(24_735_000, 0)
-			.saturating_add(Weight::from_parts(0, 4420))
-			.saturating_add(T::DbWeight::get().reads(7))
+		//  Measured:  `661`
+		//  Estimated: `6601`
+		// Minimum execution time: 564_892_000 picoseconds.
+		Weight::from_parts(588_761_000, 0)
+			.saturating_add(Weight::from_parts(0, 6601))
+			.saturating_add(T::DbWeight::get().reads(5))
 			.saturating_add(T::DbWeight::get().writes(4))
 	}
-	/// Storage: Identity Identities (r:1 w:1)
-	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Membership PendingMembership (r:1 w:1)
-	/// Proof Skipped: Membership PendingMembership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Cert StorageIdtyCertMeta (r:1 w:0)
-	/// Proof Skipped: Cert StorageIdtyCertMeta (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Parameters ParametersStorage (r:1 w:0)
-	/// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured)
-	/// Storage: Distance IdentityDistanceStatus (r:1 w:0)
-	/// Proof Skipped: Distance IdentityDistanceStatus (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Membership Membership (r:1 w:1)
-	/// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Membership CounterForMembership (r:1 w:1)
-	/// Proof: Membership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: Membership MembershipsExpireOn (r:1 w:1)
-	/// Proof Skipped: Membership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
-	/// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen)
-	fn validate_identity() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `1948`
-		//  Estimated: `5413`
-		// Minimum execution time: 39_059_000 picoseconds.
-		Weight::from_parts(42_214_000, 0)
-			.saturating_add(Weight::from_parts(0, 5413))
-			.saturating_add(T::DbWeight::get().reads(9))
-			.saturating_add(T::DbWeight::get().writes(5))
-	}
 	/// Storage: Identity IdentityIndexOf (r:2 w:2)
 	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Identity Identities (r:1 w:1)
@@ -129,81 +110,37 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: System BlockHash (max_values: None, max_size: Some(44), added: 2519, mode: MaxEncodedLen)
 	/// Storage: System Account (r:2 w:2)
 	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
-	/// Storage: AuthorityMembers Members (r:1 w:0)
-	/// Proof Skipped: AuthorityMembers Members (max_values: None, max_size: None, mode: Measured)
 	fn change_owner_key() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1119`
-		//  Estimated: `7059`
-		// Minimum execution time: 76_290_000 picoseconds.
-		Weight::from_parts(79_765_000, 0)
-			.saturating_add(Weight::from_parts(0, 7059))
-			.saturating_add(T::DbWeight::get().reads(8))
+		//  Measured:  `837`
+		//  Estimated: `6777`
+		// Minimum execution time: 991_641_000 picoseconds.
+		Weight::from_parts(1_071_332_000, 0)
+			.saturating_add(Weight::from_parts(0, 6777))
+			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(5))
 	}
 	/// Storage: Identity Identities (r:1 w:1)
 	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
-	/// Storage: SmithMembership Membership (r:1 w:0)
-	/// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured)
 	/// Storage: System BlockHash (r:1 w:0)
 	/// Proof: System BlockHash (max_values: None, max_size: Some(44), added: 2519, mode: MaxEncodedLen)
+	/// Storage: Identity IdentityChangeSchedule (r:2 w:2)
+	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Membership Membership (r:1 w:1)
 	/// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Identity CounterForIdentities (r:1 w:1)
-	/// Proof: Identity CounterForIdentities (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: System Account (r:2 w:2)
-	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
-	/// Storage: Cert CertsByReceiver (r:1 w:1)
-	/// Proof Skipped: Cert CertsByReceiver (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Cert StorageIdtyCertMeta (r:2 w:2)
-	/// Proof Skipped: Cert StorageIdtyCertMeta (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Parameters ParametersStorage (r:1 w:0)
-	/// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured)
-	/// Storage: Identity IdentityIndexOf (r:0 w:1)
-	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Quota IdtyQuota (r:0 w:1)
-	/// Proof: Quota IdtyQuota (max_values: None, max_size: Some(24), added: 2499, mode: MaxEncodedLen)
-	fn revoke_identity() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `1498`
-		//  Estimated: `7438`
-		// Minimum execution time: 84_313_000 picoseconds.
-		Weight::from_parts(87_192_000, 0)
-			.saturating_add(Weight::from_parts(0, 7438))
-			.saturating_add(T::DbWeight::get().reads(11))
-			.saturating_add(T::DbWeight::get().writes(10))
-	}
-	/// Storage: Identity Identities (r:1 w:1)
-	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
-	/// Storage: SmithMembership Membership (r:1 w:0)
+	/// Storage: SmithMembership Membership (r:1 w:1)
 	/// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Membership Membership (r:1 w:1)
-	/// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Identity CounterForIdentities (r:1 w:1)
-	/// Proof: Identity CounterForIdentities (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: System Account (r:1 w:1)
-	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
-	/// Storage: Cert CertsByReceiver (r:1 w:1)
-	/// Proof Skipped: Cert CertsByReceiver (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Cert StorageIdtyCertMeta (r:2 w:2)
-	/// Proof Skipped: Cert StorageIdtyCertMeta (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Parameters ParametersStorage (r:1 w:0)
-	/// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured)
-	/// Storage: Identity IdentityIndexOf (r:0 w:1)
-	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Identity IdentitiesNames (r:0 w:1)
-	/// Proof Skipped: Identity IdentitiesNames (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Quota IdtyQuota (r:0 w:1)
 	/// Proof: Quota IdtyQuota (max_values: None, max_size: Some(24), added: 2499, mode: MaxEncodedLen)
-	fn force_remove_identity() -> Weight {
+	fn revoke_identity() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1343`
-		//  Estimated: `7283`
-		// Minimum execution time: 38_696_000 picoseconds.
-		Weight::from_parts(39_816_000, 0)
-			.saturating_add(Weight::from_parts(0, 7283))
-			.saturating_add(T::DbWeight::get().reads(9))
-			.saturating_add(T::DbWeight::get().writes(10))
+		//  Measured:  `778`
+		//  Estimated: `6718`
+		// Minimum execution time: 829_174_000 picoseconds.
+		Weight::from_parts(869_308_000, 0)
+			.saturating_add(Weight::from_parts(0, 6718))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(6))
 	}
 	/// Storage: Identity IdentitiesNames (r:0 w:998)
 	/// Proof Skipped: Identity IdentitiesNames (max_values: None, max_size: None, mode: Measured)
@@ -212,11 +149,11 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 804_000 picoseconds.
-		Weight::from_parts(888_000, 0)
+		// Minimum execution time: 51_362_000 picoseconds.
+		Weight::from_parts(80_389_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
-			// Standard Error: 939
-			.saturating_add(Weight::from_parts(642_823, 0).saturating_mul(i.into()))
+			// Standard Error: 75_232
+			.saturating_add(Weight::from_parts(30_016_649, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 	}
 	/// Storage: System Account (r:1 w:1)
@@ -225,8 +162,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `67`
 		//  Estimated: `3591`
-		// Minimum execution time: 3_775_000 picoseconds.
-		Weight::from_parts(4_240_000, 0)
+		// Minimum execution time: 154_343_000 picoseconds.
+		Weight::from_parts(156_117_000, 0)
 			.saturating_add(Weight::from_parts(0, 3591))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -241,8 +178,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `307`
 		//  Estimated: `3772`
-		// Minimum execution time: 45_159_000 picoseconds.
-		Weight::from_parts(46_401_000, 0)
+		// Minimum execution time: 538_773_000 picoseconds.
+		Weight::from_parts(591_354_000, 0)
 			.saturating_add(Weight::from_parts(0, 3772))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(1))
@@ -251,23 +188,33 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 28_000 picoseconds.
-		Weight::from_parts(31_000, 0)
+		// Minimum execution time: 4_529_000 picoseconds.
+		Weight::from_parts(7_360_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
 	/// Storage: Identity Identities (r:1 w:0)
 	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
-	fn do_remove_identity_noop() -> Weight {
+	fn do_revoke_identity_noop() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `269`
 		//  Estimated: `3734`
-		// Minimum execution time: 3_245_000 picoseconds.
-		Weight::from_parts(3_383_000, 0)
+		// Minimum execution time: 103_668_000 picoseconds.
+		Weight::from_parts(107_679_000, 0)
 			.saturating_add(Weight::from_parts(0, 3734))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: Identity Identities (r:1 w:1)
 	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Identity IdentityChangeSchedule (r:2 w:1)
+	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Membership Membership (r:1 w:1)
+	/// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Membership CounterForMembership (r:1 w:1)
+	/// Proof: Membership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
+	/// Storage: Membership MembershipsExpireOn (r:1 w:1)
+	/// Proof Skipped: Membership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
+	/// Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
+	/// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen)
 	/// Storage: SmithMembership Membership (r:1 w:1)
 	/// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured)
 	/// Storage: SmithMembership CounterForMembership (r:1 w:1)
@@ -286,6 +233,37 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof Skipped: AuthorityMembers IncomingAuthorities (max_values: Some(1), max_size: None, mode: Measured)
 	/// Storage: Session NextKeys (r:1 w:1)
 	/// Proof Skipped: Session NextKeys (max_values: None, max_size: None, mode: Measured)
+	/// Storage: System Account (r:1 w:1)
+	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
+	/// Storage: Quota IdtyQuota (r:0 w:1)
+	/// Proof: Quota IdtyQuota (max_values: None, max_size: Some(24), added: 2499, mode: MaxEncodedLen)
+	/// Storage: Session KeyOwner (r:0 w:4)
+	/// Proof Skipped: Session KeyOwner (max_values: None, max_size: None, mode: Measured)
+	fn do_revoke_identity() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1525`
+		//  Estimated: `7465`
+		// Minimum execution time: 2_204_911_000 picoseconds.
+		Weight::from_parts(2_225_493_000, 0)
+			.saturating_add(Weight::from_parts(0, 7465))
+			.saturating_add(T::DbWeight::get().reads(17))
+			.saturating_add(T::DbWeight::get().writes(20))
+	}
+	/// Storage: Identity Identities (r:1 w:0)
+	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
+	fn do_remove_identity_noop() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `269`
+		//  Estimated: `3734`
+		// Minimum execution time: 104_296_000 picoseconds.
+		Weight::from_parts(115_316_000, 0)
+			.saturating_add(Weight::from_parts(0, 3734))
+			.saturating_add(T::DbWeight::get().reads(1))
+	}
+	/// Storage: Identity Identities (r:1 w:1)
+	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Identity CounterForIdentities (r:1 w:1)
+	/// Proof: Identity CounterForIdentities (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
 	/// Storage: System Account (r:2 w:2)
 	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
 	/// Storage: Membership Membership (r:1 w:1)
@@ -294,10 +272,24 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof: Membership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
 	/// Storage: Membership MembershipsExpireOn (r:1 w:1)
 	/// Proof Skipped: Membership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
-	/// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen)
-	/// Storage: Identity CounterForIdentities (r:1 w:1)
-	/// Proof: Identity CounterForIdentities (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
+	/// Storage: SmithMembership Membership (r:1 w:1)
+	/// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured)
+	/// Storage: SmithMembership CounterForMembership (r:1 w:1)
+	/// Proof: SmithMembership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
+	/// Storage: SmithMembership MembershipsExpireOn (r:1 w:1)
+	/// Proof Skipped: SmithMembership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers Members (r:1 w:1)
+	/// Proof Skipped: AuthorityMembers Members (max_values: None, max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers OnlineAuthorities (r:1 w:1)
+	/// Proof Skipped: AuthorityMembers OnlineAuthorities (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers OutgoingAuthorities (r:1 w:1)
+	/// Proof Skipped: AuthorityMembers OutgoingAuthorities (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers AuthoritiesCounter (r:1 w:1)
+	/// Proof Skipped: AuthorityMembers AuthoritiesCounter (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers IncomingAuthorities (r:1 w:1)
+	/// Proof Skipped: AuthorityMembers IncomingAuthorities (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: Session NextKeys (r:1 w:1)
+	/// Proof Skipped: Session NextKeys (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Identity IdentityIndexOf (r:0 w:1)
 	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Quota IdtyQuota (r:0 w:1)
@@ -306,51 +298,67 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// Proof Skipped: Session KeyOwner (max_values: None, max_size: None, mode: Measured)
 	fn do_remove_identity() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1525`
+		//  Measured:  `1432`
 		//  Estimated: `6192`
-		// Minimum execution time: 57_854_000 picoseconds.
-		Weight::from_parts(60_976_000, 0)
+		// Minimum execution time: 2_870_497_000 picoseconds.
+		Weight::from_parts(4_159_994_000, 0)
 			.saturating_add(Weight::from_parts(0, 6192))
-			.saturating_add(T::DbWeight::get().reads(17))
+			.saturating_add(T::DbWeight::get().reads(16))
 			.saturating_add(T::DbWeight::get().writes(22))
 	}
-	/// Storage: Identity IdentitiesRemovableOn (r:1 w:0)
-	/// Proof Skipped: Identity IdentitiesRemovableOn (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Identity IdentityChangeSchedule (r:1 w:0)
+	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
 	fn prune_identities_noop() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `108`
 		//  Estimated: `3573`
-		// Minimum execution time: 1_249_000 picoseconds.
-		Weight::from_parts(1_330_000, 0)
+		// Minimum execution time: 68_859_000 picoseconds.
+		Weight::from_parts(71_836_000, 0)
 			.saturating_add(Weight::from_parts(0, 3573))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
-	/// Storage: Identity IdentitiesRemovableOn (r:1 w:1)
-	/// Proof Skipped: Identity IdentitiesRemovableOn (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Identity IdentityChangeSchedule (r:1 w:1)
+	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Identity Identities (r:1 w:0)
 	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
 	fn prune_identities_none() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `293`
-		//  Estimated: `3758`
-		// Minimum execution time: 4_441_000 picoseconds.
-		Weight::from_parts(4_690_000, 0)
-			.saturating_add(Weight::from_parts(0, 3758))
+		//  Measured:  `292`
+		//  Estimated: `3757`
+		// Minimum execution time: 178_332_000 picoseconds.
+		Weight::from_parts(186_982_000, 0)
+			.saturating_add(Weight::from_parts(0, 3757))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
-	/// Storage: Identity IdentitiesRemovableOn (r:1 w:1)
-	/// Proof Skipped: Identity IdentitiesRemovableOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Identity Identities (r:1 w:0)
+	/// Storage: Identity IdentityChangeSchedule (r:1 w:1)
+	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Identity Identities (r:1 w:1)
 	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Identity CounterForIdentities (r:1 w:1)
+	/// Proof: Identity CounterForIdentities (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
+	/// Storage: System Account (r:1 w:1)
+	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
+	/// Storage: Membership Membership (r:1 w:1)
+	/// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Cert CertsByReceiver (r:1 w:0)
+	/// Proof Skipped: Cert CertsByReceiver (max_values: None, max_size: None, mode: Measured)
+	/// Storage: SmithMembership Membership (r:1 w:1)
+	/// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured)
+	/// Storage: SmithCert CertsByReceiver (r:1 w:0)
+	/// Proof Skipped: SmithCert CertsByReceiver (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Identity IdentityIndexOf (r:0 w:1)
+	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Quota IdtyQuota (r:0 w:1)
+	/// Proof: Quota IdtyQuota (max_values: None, max_size: Some(24), added: 2499, mode: MaxEncodedLen)
 	fn prune_identities_err() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `360`
-		//  Estimated: `3825`
-		// Minimum execution time: 5_680_000 picoseconds.
-		Weight::from_parts(6_083_000, 0)
-			.saturating_add(Weight::from_parts(0, 3825))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(1))
+		//  Measured:  `1177`
+		//  Estimated: `4642`
+		// Minimum execution time: 1_427_848_000 picoseconds.
+		Weight::from_parts(2_637_229_000, 0)
+			.saturating_add(Weight::from_parts(0, 4642))
+			.saturating_add(T::DbWeight::get().reads(8))
+			.saturating_add(T::DbWeight::get().writes(8))
 	}
 }
diff --git a/runtime/common/src/weights/pallet_membership_membership.rs b/runtime/common/src/weights/pallet_membership_membership.rs
index 64d9bd04f1ebf18aa80210f62410d0089fee66bc..127922e2fb21601acff507954905318d1f900530 100644
--- a/runtime/common/src/weights/pallet_membership_membership.rs
+++ b/runtime/common/src/weights/pallet_membership_membership.rs
@@ -1,28 +1,41 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_membership`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-14, STEPS: `8`, REPEAT: `4`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! HOSTNAME: `squirrel`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz`
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// ./target/debug/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=8
+// --repeat=4
+// --pallet=pallet-membership
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
-// --output=runtime/common/src/weights/
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -37,21 +50,6 @@ pub struct WeightInfo<T>(PhantomData<T>);
 impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 	/// Storage: Identity IdentityIndexOf (r:1 w:0)
 	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Identity Identities (r:1 w:0)
-	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
-	fn request_membership() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `429`
-		//  Estimated: `3894`
-		// Minimum execution time: 6_310_000 picoseconds.
-		Weight::from_parts(6_733_000, 0)
-			.saturating_add(Weight::from_parts(0, 3894))
-			.saturating_add(T::DbWeight::get().reads(2))
-	}
-	/// Storage: Identity IdentityIndexOf (r:1 w:0)
-	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Membership PendingMembership (r:1 w:1)
-	/// Proof Skipped: Membership PendingMembership (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Cert StorageIdtyCertMeta (r:1 w:0)
 	/// Proof Skipped: Cert StorageIdtyCertMeta (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Parameters ParametersStorage (r:1 w:0)
@@ -68,15 +66,17 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
 	/// Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
 	/// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen)
+	/// Storage: Identity IdentityChangeSchedule (r:1 w:0)
+	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
 	fn claim_membership() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1302`
-		//  Estimated: `4767`
-		// Minimum execution time: 27_879_000 picoseconds.
-		Weight::from_parts(30_454_000, 0)
-			.saturating_add(Weight::from_parts(0, 4767))
+		//  Measured:  `1272`
+		//  Estimated: `4737`
+		// Minimum execution time: 1_213_348_000 picoseconds.
+		Weight::from_parts(1_439_442_000, 0)
+			.saturating_add(Weight::from_parts(0, 4737))
 			.saturating_add(T::DbWeight::get().reads(10))
-			.saturating_add(T::DbWeight::get().writes(5))
+			.saturating_add(T::DbWeight::get().writes(4))
 	}
 	/// Storage: Identity IdentityIndexOf (r:1 w:0)
 	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
@@ -94,8 +94,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `988`
 		//  Estimated: `6928`
-		// Minimum execution time: 20_913_000 picoseconds.
-		Weight::from_parts(22_331_000, 0)
+		// Minimum execution time: 714_537_000 picoseconds.
+		Weight::from_parts(862_085_000, 0)
 			.saturating_add(Weight::from_parts(0, 6928))
 			.saturating_add(T::DbWeight::get().reads(7))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -108,118 +108,57 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 	/// Proof: Membership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
 	/// Storage: Membership MembershipsExpireOn (r:1 w:1)
 	/// Proof Skipped: Membership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Identity Identities (r:1 w:0)
+	/// Storage: Identity Identities (r:1 w:1)
 	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
 	/// Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
 	/// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen)
+	/// Storage: Identity IdentityChangeSchedule (r:2 w:1)
+	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
 	fn revoke_membership() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `703`
-		//  Estimated: `4168`
-		// Minimum execution time: 16_631_000 picoseconds.
-		Weight::from_parts(18_080_000, 0)
-			.saturating_add(Weight::from_parts(0, 4168))
-			.saturating_add(T::DbWeight::get().reads(6))
-			.saturating_add(T::DbWeight::get().writes(3))
+		//  Estimated: `6643`
+		// Minimum execution time: 847_926_000 picoseconds.
+		Weight::from_parts(1_282_028_000, 0)
+			.saturating_add(Weight::from_parts(0, 6643))
+			.saturating_add(T::DbWeight::get().reads(8))
+			.saturating_add(T::DbWeight::get().writes(5))
 	}
 	fn on_initialize() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 26_000 picoseconds.
-		Weight::from_parts(27_000, 0)
+		// Minimum execution time: 4_012_000 picoseconds.
+		Weight::from_parts(4_629_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
-	/// Storage: Membership PendingMembershipsExpireOn (r:1 w:1)
-	/// Proof Skipped: Membership PendingMembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Membership PendingMembership (r:1024 w:1024)
-	/// Proof Skipped: Membership PendingMembership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Identity Identities (r:1024 w:4)
-	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
-	/// Storage: SmithMembership Membership (r:4 w:3)
-	/// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: SmithMembership CounterForMembership (r:1 w:1)
-	/// Proof: SmithMembership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: SmithMembership MembershipsExpireOn (r:1 w:1)
-	/// Proof Skipped: SmithMembership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: AuthorityMembers Members (r:3 w:3)
-	/// Proof Skipped: AuthorityMembers Members (max_values: None, max_size: None, mode: Measured)
-	/// Storage: AuthorityMembers OnlineAuthorities (r:1 w:1)
-	/// Proof Skipped: AuthorityMembers OnlineAuthorities (max_values: Some(1), max_size: None, mode: Measured)
-	/// Storage: AuthorityMembers OutgoingAuthorities (r:1 w:1)
-	/// Proof Skipped: AuthorityMembers OutgoingAuthorities (max_values: Some(1), max_size: None, mode: Measured)
-	/// Storage: AuthorityMembers AuthoritiesCounter (r:1 w:1)
-	/// Proof Skipped: AuthorityMembers AuthoritiesCounter (max_values: Some(1), max_size: None, mode: Measured)
-	/// Storage: AuthorityMembers IncomingAuthorities (r:1 w:1)
-	/// Proof Skipped: AuthorityMembers IncomingAuthorities (max_values: Some(1), max_size: None, mode: Measured)
-	/// Storage: Session NextKeys (r:3 w:3)
-	/// Proof Skipped: Session NextKeys (max_values: None, max_size: None, mode: Measured)
-	/// Storage: System Account (r:4 w:4)
-	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
-	/// Storage: Membership Membership (r:4 w:4)
-	/// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Membership CounterForMembership (r:1 w:1)
-	/// Proof: Membership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: Membership MembershipsExpireOn (r:1 w:1)
-	/// Proof Skipped: Membership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
-	/// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen)
-	/// Storage: Identity CounterForIdentities (r:1 w:1)
-	/// Proof: Identity CounterForIdentities (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: Identity IdentityIndexOf (r:0 w:4)
-	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Quota IdtyQuota (r:0 w:4)
-	/// Proof: Quota IdtyQuota (max_values: None, max_size: Some(24), added: 2499, mode: MaxEncodedLen)
-	/// Storage: Session KeyOwner (r:0 w:12)
-	/// Proof Skipped: Session KeyOwner (max_values: None, max_size: None, mode: Measured)
-	/// The range of component `i` is `[0, 1024]`.
-	/// The range of component `i` is `[0, 1024]`.
-	fn expire_pending_memberships(i: u32, ) -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `2214 + i * (19 ±0)`
-		//  Estimated: `13117 + i * (2495 ±0)`
-		// Minimum execution time: 2_147_000 picoseconds.
-		Weight::from_parts(104_974_304, 0)
-			.saturating_add(Weight::from_parts(0, 13117))
-			// Standard Error: 3_603
-			.saturating_add(Weight::from_parts(3_246_507, 0).saturating_mul(i.into()))
-			.saturating_add(T::DbWeight::get().reads(27))
-			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(i.into())))
-			.saturating_add(T::DbWeight::get().writes(47))
-			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
-			.saturating_add(Weight::from_parts(0, 2495).saturating_mul(i.into()))
-	}
-	/// Storage: Parameters ParametersStorage (r:1 w:0)
-	/// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured)
 	/// Storage: Membership MembershipsExpireOn (r:1 w:1)
 	/// Proof Skipped: Membership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Membership Membership (r:1024 w:1024)
 	/// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Membership CounterForMembership (r:1 w:1)
 	/// Proof: Membership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: Membership PendingMembershipsExpireOn (r:1 w:1)
-	/// Proof Skipped: Membership PendingMembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Identity Identities (r:1024 w:0)
+	/// Storage: Identity Identities (r:1024 w:4)
 	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
 	/// Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
 	/// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen)
-	/// Storage: Membership PendingMembership (r:0 w:1024)
-	/// Proof Skipped: Membership PendingMembership (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Identity IdentityChangeSchedule (r:2 w:1)
+	/// Proof Skipped: Identity IdentityChangeSchedule (max_values: None, max_size: None, mode: Measured)
 	/// The range of component `i` is `[0, 1024]`.
 	/// The range of component `i` is `[0, 1024]`.
 	fn expire_memberships(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `714 + i * (23 ±0)`
-		//  Estimated: `4199 + i * (2499 ±0)`
-		// Minimum execution time: 4_828_000 picoseconds.
-		Weight::from_parts(5_150_000, 0)
-			.saturating_add(Weight::from_parts(0, 4199))
-			// Standard Error: 885
-			.saturating_add(Weight::from_parts(3_785_083, 0).saturating_mul(i.into()))
-			.saturating_add(T::DbWeight::get().reads(5))
+		//  Measured:  `567 + i * (23 ±0)`
+		//  Estimated: `6583 + i * (2499 ±0)`
+		// Minimum execution time: 86_925_000 picoseconds.
+		Weight::from_parts(89_056_000, 0)
+			.saturating_add(Weight::from_parts(0, 6583))
+			// Standard Error: 2_429_589
+			.saturating_add(Weight::from_parts(295_368_241, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(i.into())))
-			.saturating_add(T::DbWeight::get().writes(3))
-			.saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(5))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 			.saturating_add(Weight::from_parts(0, 2499).saturating_mul(i.into()))
 	}
 }
diff --git a/runtime/common/src/weights/pallet_membership_smith_membership.rs b/runtime/common/src/weights/pallet_membership_smith_membership.rs
index be9d722ae75852bc23a1477ffc95f5f4138d5d26..d7008fec48c84920bacb37236a257c56fb851ef8 100644
--- a/runtime/common/src/weights/pallet_membership_smith_membership.rs
+++ b/runtime/common/src/weights/pallet_membership_smith_membership.rs
@@ -1,28 +1,41 @@
+// Copyright 2021-2022 Axiom-Team
+//
+// This file is part of Duniter-v2S.
+//
+// Duniter-v2S is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, version 3 of the License.
+//
+// Duniter-v2S is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>.
 
 //! Autogenerated weights for `pallet_membership`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-11-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2023-12-14, STEPS: `8`, REPEAT: `4`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F`
-//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
+//! HOSTNAME: `squirrel`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz`
+//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
 
 // Executed Command:
-// ./target/release/duniter
+// ./target/debug/duniter
 // benchmark
 // pallet
-// --chain
-// dev
+// --chain=dev
+// --steps=8
+// --repeat=4
+// --pallet=pallet-membership
+// --extrinsic=*
+// --execution=wasm
 // --wasm-execution=compiled
-// --pallet
-// *
-// --extrinsic
-// *
-// --steps
-// 50
-// --repeat
-// 20
-// --output=runtime/common/src/weights/
+// --heap-pages=4096
+// --header=./file_header.txt
+// --output=./runtime/common/src/weights/
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
 #![allow(unused_parens)]
@@ -37,30 +50,6 @@ pub struct WeightInfo<T>(PhantomData<T>);
 impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 	/// Storage: Identity IdentityIndexOf (r:1 w:0)
 	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Identity Identities (r:1 w:0)
-	/// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured)
-	/// Storage: SmithMembership PendingMembership (r:1 w:1)
-	/// Proof Skipped: SmithMembership PendingMembership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: SmithMembership Membership (r:1 w:0)
-	/// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured)
-	/// Storage: Parameters ParametersStorage (r:1 w:0)
-	/// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured)
-	/// Storage: SmithMembership PendingMembershipsExpireOn (r:1 w:1)
-	/// Proof Skipped: SmithMembership PendingMembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	fn request_membership() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `706`
-		//  Estimated: `4171`
-		// Minimum execution time: 14_737_000 picoseconds.
-		Weight::from_parts(15_859_000, 0)
-			.saturating_add(Weight::from_parts(0, 4171))
-			.saturating_add(T::DbWeight::get().reads(6))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: Identity IdentityIndexOf (r:1 w:0)
-	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
-	/// Storage: SmithMembership PendingMembership (r:1 w:1)
-	/// Proof Skipped: SmithMembership PendingMembership (max_values: None, max_size: None, mode: Measured)
 	/// Storage: SmithCert StorageIdtyCertMeta (r:1 w:0)
 	/// Proof Skipped: SmithCert StorageIdtyCertMeta (max_values: None, max_size: None, mode: Measured)
 	/// Storage: Parameters ParametersStorage (r:1 w:0)
@@ -73,13 +62,13 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 	/// Proof Skipped: SmithMembership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
 	fn claim_membership() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `734`
-		//  Estimated: `4199`
-		// Minimum execution time: 19_034_000 picoseconds.
-		Weight::from_parts(20_081_000, 0)
-			.saturating_add(Weight::from_parts(0, 4199))
-			.saturating_add(T::DbWeight::get().reads(7))
-			.saturating_add(T::DbWeight::get().writes(4))
+		//  Measured:  `704`
+		//  Estimated: `4169`
+		// Minimum execution time: 667_020_000 picoseconds.
+		Weight::from_parts(729_140_000, 0)
+			.saturating_add(Weight::from_parts(0, 4169))
+			.saturating_add(T::DbWeight::get().reads(6))
+			.saturating_add(T::DbWeight::get().writes(3))
 	}
 	/// Storage: Identity IdentityIndexOf (r:1 w:0)
 	/// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured)
@@ -95,8 +84,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `717`
 		//  Estimated: `6657`
-		// Minimum execution time: 16_561_000 picoseconds.
-		Weight::from_parts(17_959_000, 0)
+		// Minimum execution time: 794_915_000 picoseconds.
+		Weight::from_parts(930_094_000, 0)
 			.saturating_add(Weight::from_parts(0, 6657))
 			.saturating_add(T::DbWeight::get().reads(6))
 			.saturating_add(T::DbWeight::get().writes(3))
@@ -127,8 +116,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `1183`
 		//  Estimated: `4648`
-		// Minimum execution time: 34_770_000 picoseconds.
-		Weight::from_parts(38_431_000, 0)
+		// Minimum execution time: 1_199_726_000 picoseconds.
+		Weight::from_parts(1_499_376_000, 0)
 			.saturating_add(Weight::from_parts(0, 4648))
 			.saturating_add(T::DbWeight::get().reads(10))
 			.saturating_add(T::DbWeight::get().writes(13))
@@ -137,58 +126,47 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 25_000 picoseconds.
-		Weight::from_parts(27_000, 0)
+		// Minimum execution time: 3_972_000 picoseconds.
+		Weight::from_parts(4_845_000, 0)
 			.saturating_add(Weight::from_parts(0, 0))
 	}
-	/// Storage: SmithMembership PendingMembershipsExpireOn (r:1 w:1)
-	/// Proof Skipped: SmithMembership PendingMembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: SmithMembership PendingMembership (r:1024 w:1024)
-	/// Proof Skipped: SmithMembership PendingMembership (max_values: None, max_size: None, mode: Measured)
-	/// The range of component `i` is `[0, 1024]`.
-	/// The range of component `i` is `[0, 1024]`.
-	fn expire_pending_memberships(i: u32, ) -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `179 + i * (19 ±0)`
-		//  Estimated: `3649 + i * (2495 ±0)`
-		// Minimum execution time: 2_213_000 picoseconds.
-		Weight::from_parts(2_309_000, 0)
-			.saturating_add(Weight::from_parts(0, 3649))
-			// Standard Error: 981
-			.saturating_add(Weight::from_parts(2_257_315, 0).saturating_mul(i.into()))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
-			.saturating_add(T::DbWeight::get().writes(1))
-			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
-			.saturating_add(Weight::from_parts(0, 2495).saturating_mul(i.into()))
-	}
-	/// Storage: Parameters ParametersStorage (r:1 w:0)
-	/// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured)
 	/// Storage: SmithMembership MembershipsExpireOn (r:1 w:1)
 	/// Proof Skipped: SmithMembership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
 	/// Storage: SmithMembership Membership (r:1024 w:1024)
 	/// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured)
 	/// Storage: SmithMembership CounterForMembership (r:1 w:1)
 	/// Proof: SmithMembership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: SmithMembership PendingMembershipsExpireOn (r:1 w:1)
-	/// Proof Skipped: SmithMembership PendingMembershipsExpireOn (max_values: None, max_size: None, mode: Measured)
-	/// Storage: SmithMembership PendingMembership (r:0 w:1024)
-	/// Proof Skipped: SmithMembership PendingMembership (max_values: None, max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers Members (r:1024 w:3)
+	/// Proof Skipped: AuthorityMembers Members (max_values: None, max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers OnlineAuthorities (r:1 w:1)
+	/// Proof Skipped: AuthorityMembers OnlineAuthorities (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers OutgoingAuthorities (r:1 w:1)
+	/// Proof Skipped: AuthorityMembers OutgoingAuthorities (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers AuthoritiesCounter (r:1 w:1)
+	/// Proof Skipped: AuthorityMembers AuthoritiesCounter (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: AuthorityMembers IncomingAuthorities (r:1 w:1)
+	/// Proof Skipped: AuthorityMembers IncomingAuthorities (max_values: Some(1), max_size: None, mode: Measured)
+	/// Storage: Session NextKeys (r:3 w:3)
+	/// Proof Skipped: Session NextKeys (max_values: None, max_size: None, mode: Measured)
+	/// Storage: System Account (r:3 w:3)
+	/// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen)
+	/// Storage: Session KeyOwner (r:0 w:12)
+	/// Proof Skipped: Session KeyOwner (max_values: None, max_size: None, mode: Measured)
 	/// The range of component `i` is `[0, 1024]`.
 	/// The range of component `i` is `[0, 1024]`.
 	fn expire_memberships(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `251 + i * (23 ±0)`
-		//  Estimated: `3735 + i * (2499 ±0)`
-		// Minimum execution time: 4_948_000 picoseconds.
-		Weight::from_parts(5_162_000, 0)
-			.saturating_add(Weight::from_parts(0, 3735))
-			// Standard Error: 953
-			.saturating_add(Weight::from_parts(3_313_144, 0).saturating_mul(i.into()))
-			.saturating_add(T::DbWeight::get().reads(4))
-			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(i.into())))
-			.saturating_add(T::DbWeight::get().writes(3))
-			.saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(i.into())))
+		//  Measured:  `1339 + i * (23 ±0)`
+		//  Estimated: `9830 + i * (2499 ±0)`
+		// Minimum execution time: 81_859_000 picoseconds.
+		Weight::from_parts(90_890_000, 0)
+			.saturating_add(Weight::from_parts(0, 9830))
+			// Standard Error: 1_930_380
+			.saturating_add(Weight::from_parts(304_822_479, 0).saturating_mul(i.into()))
+			.saturating_add(T::DbWeight::get().reads(7))
+			.saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(i.into())))
+			.saturating_add(T::DbWeight::get().writes(16))
+			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 			.saturating_add(Weight::from_parts(0, 2499).saturating_mul(i.into()))
 	}
 }