diff --git a/pallets/certification/src/benchmarking.rs b/pallets/certification/src/benchmarking.rs
index 553e34846ae9c1a99e68c5ee677ffbd126c50979..add49d64470f60b9dbc3bfdefcd37e4d08c4acc5 100644
--- a/pallets/certification/src/benchmarking.rs
+++ b/pallets/certification/src/benchmarking.rs
@@ -80,7 +80,7 @@ benchmarks! {
         assert!(CertsByReceiver::<T>::get(receiver).is_empty() );
     }
     on_initialize {
-        assert!(StorageCertsRemovableOn::<T>::try_get(T::BlockNumber::zero()).is_err());
+        assert!(CertsRemovableOn::<T>::try_get(T::BlockNumber::zero()).is_err());
     }: {Pallet::<T>::on_initialize(T::BlockNumber::zero());}
     do_remove_cert_noop {
     }: {Pallet::<T>::do_remove_cert(100.into(), 101.into(), Some(T::BlockNumber::zero()));}
diff --git a/pallets/certification/src/lib.rs b/pallets/certification/src/lib.rs
index aab81a26417bc6e1c7a4e4459537e121c840e140..13209fea45827b47443ec0f59e7fc09ce3091c15 100644
--- a/pallets/certification/src/lib.rs
+++ b/pallets/certification/src/lib.rs
@@ -191,9 +191,9 @@ pub mod pallet {
                 );
                 StorageIdtyCertMeta::<T>::insert(issuer, cert_meta);
             }
-            // Write storage StorageCertsRemovableOn
+            // Write storage CertsRemovableOn
             for (removable_on, certs) in certs_removable_on {
-                StorageCertsRemovableOn::<T>::insert(removable_on, certs);
+                CertsRemovableOn::<T>::insert(removable_on, certs);
             }
         }
     }
@@ -215,7 +215,7 @@ pub mod pallet {
     /// Certifications removable on
     #[pallet::storage]
     #[pallet::getter(fn certs_removable_on)]
-    pub type StorageCertsRemovableOn<T: Config> =
+    pub type CertsRemovableOn<T: Config> =
         StorageMap<_, Twox64Concat, T::BlockNumber, Vec<(T::IdtyIndex, T::IdtyIndex)>, OptionQuery>;
 
     // EVENTS //
@@ -284,7 +284,9 @@ pub mod pallet {
 
             let block_number = frame_system::pallet::Pallet::<T>::block_number();
             Self::check_cert_allowed(who, issuer, receiver, block_number)?;
-            Self::do_add_cert(block_number, issuer, receiver)
+            Self::do_add_cert(block_number, issuer, receiver);
+
+            Ok(().into())
         }
 
         /// remove a certification (only root)
@@ -324,13 +326,13 @@ pub mod pallet {
             receiver: T::IdtyIndex,
             verify_rules: bool,
         ) -> DispatchResultWithPostInfo {
-            // Forbid self cert
+            // Verify rule (1.) Forbid self cert
             ensure!(issuer != receiver, Error::<T>::CannotCertifySelf);
 
             let block_number = frame_system::pallet::Pallet::<T>::block_number();
 
             if verify_rules {
-                // Verify rule MinReceivedCertToBeAbleToIssueCert
+                // Verify rule (3.) MinReceivedCertToBeAbleToIssueCert
                 let issuer_idty_cert_meta = StorageIdtyCertMeta::<T>::get(issuer);
                 ensure!(
                     issuer_idty_cert_meta.received_count
@@ -338,30 +340,28 @@ pub mod pallet {
                     Error::<T>::NotEnoughCertReceived
                 );
 
-                // Verify rule MaxByIssuer
+                // Verify rule (4.) MaxByIssuer
                 ensure!(
                     issuer_idty_cert_meta.issued_count < T::MaxByIssuer::get(),
                     Error::<T>::IssuedTooManyCert
                 );
 
-                // Verify rule CertPeriod
+                // Verify rule (5.) CertPeriod
                 ensure!(
                     block_number >= issuer_idty_cert_meta.next_issuable_on,
                     Error::<T>::NotRespectCertPeriod
                 );
             };
 
-            Self::do_add_cert(block_number, issuer, receiver)
+            Self::do_add_cert(block_number, issuer, receiver);
+
+            Ok(().into())
         }
         /// perform cert addition or renewal
-        fn do_add_cert(
-            block_number: T::BlockNumber,
-            issuer: T::IdtyIndex,
-            receiver: T::IdtyIndex,
-        ) -> DispatchResultWithPostInfo {
-            // Write StorageCertsRemovableOn
+        fn do_add_cert(block_number: T::BlockNumber, issuer: T::IdtyIndex, receiver: T::IdtyIndex) {
+            // Write CertsRemovableOn
             let removable_on = block_number + T::ValidityPeriod::get();
-            <StorageCertsRemovableOn<T>>::append(removable_on, (issuer, receiver));
+            <CertsRemovableOn<T>>::append(removable_on, (issuer, receiver));
 
             // Write CertsByReceiver
             let mut created = false;
@@ -414,9 +414,7 @@ pub mod pallet {
                 });
                 // emit CertRenewed event
                 Self::deposit_event(Event::CertRenewed { issuer, receiver });
-            }
-
-            Ok(().into())
+            };
         }
         /// remove the certifications due to expire on the given block
         // (run at on_initialize step)
@@ -424,7 +422,7 @@ pub mod pallet {
             // See on initialize for the overhead weight accounting
             let mut total_weight = Weight::zero();
 
-            if let Some(certs) = StorageCertsRemovableOn::<T>::take(block_number) {
+            if let Some(certs) = CertsRemovableOn::<T>::take(block_number) {
                 for (issuer, receiver) in certs {
                     total_weight += Self::do_remove_cert(issuer, receiver, Some(block_number));
                 }
diff --git a/pallets/certification/src/weights.rs b/pallets/certification/src/weights.rs
index 4a5bc2f404d0341a3d6607d68b51e4b25bfdb513..1f5918b2a6abdad08e259e4448dd7368db486774 100644
--- a/pallets/certification/src/weights.rs
+++ b/pallets/certification/src/weights.rs
@@ -33,7 +33,7 @@ impl WeightInfo for () {
     // Storage: Identity Identities (r:2 w:0)
     // Storage: Cert StorageIdtyCertMeta (r:2 w:2)
     // Storage: Parameters ParametersStorage (r:1 w:0)
-    // Storage: Cert StorageCertsRemovableOn (r:1 w:1)
+    // Storage: Cert CertsRemovableOn (r:1 w:1)
     // Storage: Cert CertsByReceiver (r:1 w:1)
     fn add_cert() -> Weight {
         // Minimum execution time: 259_247 nanoseconds.
diff --git a/pallets/distance/src/lib.rs b/pallets/distance/src/lib.rs
index b7ee0e21420bc71d7c316f19d40c7d73f3293fab..a776c8182514ac92f7ed5eca4ceab88e150470a7 100644
--- a/pallets/distance/src/lib.rs
+++ b/pallets/distance/src/lib.rs
@@ -191,6 +191,8 @@ pub mod pallet {
         CallerIdentityNotFound,
         /// Caller not member.
         CallerNotMember,
+        // Caller status can only be Unvalidated, Member or NotMember
+        CallerStatusInvalid,
         /// Target identity not found.
         TargetIdentityNotFound,
         /// Evaluation queue is full.
@@ -200,7 +202,7 @@ pub mod pallet {
         /// Evaluation result has a wrong length.
         WrongResultLength,
         /// Targeted distance evaluation request is only possible for an unvalidated identity
-        DistanceRequestOnlyAllowedForUnvalidated,
+        TargetMustBeUnvalidated,
     }
 
     #[pallet::hooks]
@@ -376,6 +378,15 @@ pub mod pallet {
             // caller has an identity
             let idty_index = pallet_identity::IdentityIndexOf::<T>::get(who)
                 .ok_or(Error::<T>::CallerHasNoIdentity)?;
+            let idty = pallet_identity::Identities::<T>::get(idty_index)
+                .ok_or(Error::<T>::CallerIdentityNotFound)?;
+            // caller is (Unvalidated, Member, NotMember)
+            ensure!(
+                idty.status == pallet_identity::IdtyStatus::Unvalidated
+                    || idty.status == pallet_identity::IdtyStatus::Member
+                    || idty.status == pallet_identity::IdtyStatus::NotMember,
+                Error::<T>::CallerStatusInvalid
+            );
             Self::check_request_distance_evaluation_common(idty_index)?;
             Ok(idty_index)
         }
@@ -401,7 +412,7 @@ pub mod pallet {
             // target is unvalidated
             ensure!(
                 target_idty.status == pallet_identity::IdtyStatus::Unvalidated,
-                Error::<T>::DistanceRequestOnlyAllowedForUnvalidated
+                Error::<T>::TargetMustBeUnvalidated
             );
             Self::check_request_distance_evaluation_common(target)?;
             Ok(())
@@ -416,8 +427,9 @@ pub mod pallet {
                 PendingEvaluationRequest::<T>::get(target).is_none(),
                 Error::<T>::AlreadyInEvaluation
             );
-            // external validation
-            // target has received enough certifications
+            // external validation (wot)
+            // - membership renewal antispam
+            // - target has received enough certifications
             T::CheckRequestDistanceEvaluation::check_request_distance_evaluation(target)
         }
 
diff --git a/pallets/distance/src/tests.rs b/pallets/distance/src/tests.rs
index b1be3c04a488d49496992b8166235d9229554261..18302be75c61c8ed2718d33d353e7a49b8148253 100644
--- a/pallets/distance/src/tests.rs
+++ b/pallets/distance/src/tests.rs
@@ -16,9 +16,10 @@
 
 use crate::mock::*;
 use crate::*;
-use frame_support::assert_ok;
 use frame_support::traits::Currency;
+use frame_support::{assert_noop, assert_ok};
 
+// allow request distance evaluation for oneself
 #[test]
 fn test_request_distance_evaluation() {
     new_test_ext().execute_with(|| {
@@ -39,3 +40,69 @@ fn test_request_distance_evaluation() {
         assert_eq!(Balances::reserved_balance(1), 1000);
     });
 }
+
+// allow request distance evaluation for an unvalidated identity
+#[test]
+fn test_request_distance_evaluation_for() {
+    new_test_ext().execute_with(|| {
+        run_to_block(1);
+        // give enough for reserve
+        Balances::make_free_balance_be(&1, 10_000);
+        assert_ok!(Identity::create_identity(RuntimeOrigin::signed(1), 5));
+        assert_ok!(Identity::confirm_identity(
+            RuntimeOrigin::signed(5),
+            "Eeeve".into()
+        ));
+
+        // call request
+        assert_ok!(Distance::request_distance_evaluation_for(
+            RuntimeOrigin::signed(1),
+            5
+        ));
+        System::assert_has_event(RuntimeEvent::Distance(Event::EvaluationRequested {
+            idty_index: 5,
+            who: 1,
+        }));
+
+        // currency was reserved
+        assert_eq!(Balances::reserved_balance(1), 1000);
+    });
+}
+
+// non member can not request distance evaluation
+#[test]
+fn test_request_distance_evaluation_non_member() {
+    new_test_ext().execute_with(|| {
+        run_to_block(1);
+        // give enough for reserve
+        Balances::make_free_balance_be(&5, 10_000);
+
+        assert_noop!(
+            Distance::request_distance_evaluation_for(RuntimeOrigin::signed(5), 1),
+            Error::<Test>::CallerHasNoIdentity
+        );
+        assert_ok!(Identity::create_identity(RuntimeOrigin::signed(1), 5));
+        assert_noop!(
+            Distance::request_distance_evaluation_for(RuntimeOrigin::signed(5), 1),
+            Error::<Test>::CallerNotMember
+        );
+    });
+}
+
+// can not request distance eval if already in evaluation
+#[test]
+fn test_request_distance_evaluation_twice() {
+    new_test_ext().execute_with(|| {
+        run_to_block(1);
+        // give enough for reserve
+        Balances::make_free_balance_be(&1, 10_000);
+
+        assert_ok!(Distance::request_distance_evaluation(
+            RuntimeOrigin::signed(1)
+        ));
+        assert_noop!(
+            Distance::request_distance_evaluation(RuntimeOrigin::signed(1)),
+            Error::<Test>::AlreadyInEvaluation
+        );
+    });
+}
diff --git a/pallets/duniter-wot/src/lib.rs b/pallets/duniter-wot/src/lib.rs
index 079467a3f8f2d3c3c5c139bfa666d9b46668f428..f7c0090340b5c5e219d9a862f6fa19e80c857a79 100644
--- a/pallets/duniter-wot/src/lib.rs
+++ b/pallets/duniter-wot/src/lib.rs
@@ -83,40 +83,22 @@ pub mod pallet {
 
     #[pallet::error]
     pub enum Error<T> {
-        /// Insufficient certifications received to claim membership.
-        NotEnoughCertsToClaimMembership,
-        /// Distance is invalid.
-        DistanceIsInvalid,
-        /// Distance is not evaluated.
-        DistanceNotEvaluated,
-        /// Distance evaluation has been requested but is still pending
-        DistanceEvaluationPending,
-        /// Distance evaluation has not been requested
-        DistanceEvaluationNotRequested,
-        /// Identity is not allowed to claim membership.
-        IdtyNotAllowedToClaimMembership,
-        /// Identity not allowed to renew membership.
-        IdtyNotAllowedToRenewMembership,
+        /// Insufficient certifications received
+        NotEnoughCerts,
+        /// Target status is incompatible with this operation
+        // Membership can not be added/renewed with this status
+        // Certification can not be added to identity with this status
+        TargetStatusInvalid,
         /// Identity creation period not respected.
         IdtyCreationPeriodNotRespected,
         /// Insufficient received certifications to create identity.
         NotEnoughReceivedCertsToCreateIdty,
         /// Maximum number of emitted certifications reached.
         MaxEmittedCertsReached,
-        /// Not allowed to change identity address.
-        NotAllowedToChangeIdtyAddress,
-        /// Not allowed to remove identity.
-        NotAllowedToRemoveIdty,
         /// Issuer cannot emit a certification because it is not member.
         IssuerNotMember,
-        /// Cannot issue a certification to an unconfirmed identity
-        CertToUnconfirmed,
-        /// Cannot issue a certification to a revoked identity
-        CertToRevoked,
         /// Issuer or receiver not found.
         IdtyNotFound,
-        /// Not enough certs received to request distance evaluation.
-        NotEnoughCertsReceivedToRequestDistanceEvaluation,
         /// Membership can only be renewed after an antispam delay
         MembershipRenewalPeriodNotRespected,
     }
@@ -162,61 +144,51 @@ impl<T: Config> pallet_certification::traits::CheckCertAllowed<IdtyIndex> for Pa
     fn check_cert_allowed(issuer: IdtyIndex, receiver: IdtyIndex) -> Result<(), DispatchError> {
         // issuer checks
         // ensure issuer is member
-        if let Some(issuer_data) = pallet_identity::Pallet::<T>::identity(issuer) {
-            ensure!(
-                issuer_data.status == IdtyStatus::Member,
-                Error::<T>::IssuerNotMember
-            );
-        } else {
-            return Err(Error::<T>::IdtyNotFound.into());
-        }
+        let issuer_data =
+            pallet_identity::Pallet::<T>::identity(issuer).ok_or(Error::<T>::IdtyNotFound)?;
+        ensure!(
+            issuer_data.status == IdtyStatus::Member,
+            Error::<T>::IssuerNotMember
+        );
 
         // receiver checks
         // ensure receiver identity is confirmed and not revoked
-        if let Some(receiver_data) = pallet_identity::Pallet::<T>::identity(receiver) {
-            match receiver_data.status {
-                // able to receive cert
-                IdtyStatus::Unvalidated | IdtyStatus::Member | IdtyStatus::NotMember => {}
-                IdtyStatus::Unconfirmed => return Err(Error::<T>::CertToUnconfirmed.into()),
-                IdtyStatus::Revoked => return Err(Error::<T>::CertToRevoked.into()),
-            };
-        } else {
-            return Err(Error::<T>::IdtyNotFound.into());
-        }
+        let receiver_data =
+            pallet_identity::Pallet::<T>::identity(receiver).ok_or(Error::<T>::IdtyNotFound)?;
+        ensure!(
+            receiver_data.status == IdtyStatus::Unvalidated
+                || receiver_data.status == IdtyStatus::Member
+                || receiver_data.status == IdtyStatus::NotMember,
+            Error::<T>::TargetStatusInvalid
+        );
         Ok(())
     }
 }
 
 // implement membership call checks
-impl<T: Config> sp_membership::traits::CheckMembershipCallAllowed<IdtyIndex> for Pallet<T> {
-    // membership claim is only possible when enough certs are received (both wots) and distance is ok
-    fn check_idty_allowed_to_claim_membership(idty_index: &IdtyIndex) -> Result<(), DispatchError> {
+impl<T: Config> sp_membership::traits::CheckMembershipOpAllowed<IdtyIndex> for Pallet<T> {
+    fn check_add_membership(idty_index: IdtyIndex) -> Result<(), DispatchError> {
         // check identity status
         let idty_value =
             pallet_identity::Pallet::<T>::identity(idty_index).ok_or(Error::<T>::IdtyNotFound)?;
         ensure!(
             idty_value.status == IdtyStatus::Unvalidated
                 || idty_value.status == IdtyStatus::NotMember,
-            Error::<T>::IdtyNotAllowedToClaimMembership
-        );
-        // check received certifications
-        // TODO deduplicate
-        let idty_cert_meta = pallet_certification::Pallet::<T>::idty_cert_meta(idty_index);
-        ensure!(
-            idty_cert_meta.received_count >= T::MinCertForMembership::get(),
-            Error::<T>::NotEnoughCertsToClaimMembership
+            Error::<T>::TargetStatusInvalid
         );
+        // check cert count
+        check_cert_count::<T>(idty_index)?;
         Ok(())
     }
 
     // membership renewal is only possible when identity is member (otherwise it should claim again)
-    fn check_idty_allowed_to_renew_membership(idty_index: &IdtyIndex) -> Result<(), DispatchError> {
+    fn check_renew_membership(idty_index: IdtyIndex) -> Result<(), DispatchError> {
         // check identity status
         let idty_value =
             pallet_identity::Pallet::<T>::identity(idty_index).ok_or(Error::<T>::IdtyNotFound)?;
         ensure!(
             idty_value.status == IdtyStatus::Member,
-            Error::<T>::IdtyNotAllowedToRenewMembership
+            Error::<T>::TargetStatusInvalid
         );
         // no need to check certification count since loosing certifications make membership expire
         Ok(())
@@ -403,12 +375,17 @@ impl<T: Config + pallet_distance::Config> pallet_distance::traits::CheckRequestD
             );
         };
         // check cert count
-        // TODO deduplicate
-        let idty_cert_meta = pallet_certification::Pallet::<T>::idty_cert_meta(idty_index);
-        ensure!(
-            idty_cert_meta.received_count >= T::MinCertForMembership::get(),
-            Error::<T>::NotEnoughCertsReceivedToRequestDistanceEvaluation
-        );
+        check_cert_count::<T>(idty_index)?;
         Ok(())
     }
 }
+
+/// check certification count
+fn check_cert_count<T: Config>(idty_index: IdtyIndex) -> Result<(), DispatchError> {
+    let idty_cert_meta = pallet_certification::Pallet::<T>::idty_cert_meta(idty_index);
+    ensure!(
+        idty_cert_meta.received_count >= T::MinCertForMembership::get(),
+        Error::<T>::NotEnoughCerts
+    );
+    Ok(())
+}
diff --git a/pallets/duniter-wot/src/mock.rs b/pallets/duniter-wot/src/mock.rs
index d2679e1b92185cd66f0f979401b2bcc0d2063b26..3ecb6c2332c42f019958a347a45aef79148f7fba 100644
--- a/pallets/duniter-wot/src/mock.rs
+++ b/pallets/duniter-wot/src/mock.rs
@@ -142,7 +142,7 @@ parameter_types! {
 }
 
 impl pallet_membership::Config for Test {
-    type CheckMembershipCallAllowed = DuniterWot;
+    type CheckMembershipOpAllowed = DuniterWot;
     type IdtyId = IdtyIndex;
     type IdtyIdOf = IdentityIndexOf<Self>;
     type AccountIdOf = ();
diff --git a/pallets/membership/src/lib.rs b/pallets/membership/src/lib.rs
index 38f1c491c231635abb6bb6c1777b432275cd9882..f699a24c0296b7551906010dbb2e755031aa8620 100644
--- a/pallets/membership/src/lib.rs
+++ b/pallets/membership/src/lib.rs
@@ -84,7 +84,7 @@ pub mod pallet {
     #[pallet::config]
     pub trait Config: frame_system::Config {
         /// Ask the runtime whether the identity can perform membership operations
-        type CheckMembershipCallAllowed: CheckMembershipCallAllowed<Self::IdtyId>;
+        type CheckMembershipOpAllowed: CheckMembershipOpAllowed<Self::IdtyId>;
         /// Something that identifies an identity
         type IdtyId: Copy + MaybeSerializeDeserialize + Parameter + Ord;
         /// Something that gives the IdtyId of an AccountId
@@ -225,7 +225,7 @@ pub mod pallet {
         }
 
         /// check that membership can be claimed
-        pub fn check_allowed_to_claim(idty_id: T::IdtyId) -> Result<(), DispatchError> {
+        pub fn check_add_membership(idty_id: T::IdtyId) -> Result<(), DispatchError> {
             // no-op is error
             ensure!(
                 Membership::<T>::get(idty_id).is_none(),
@@ -233,32 +233,32 @@ pub mod pallet {
             );
 
             // enough certifications and distance rule for example
-            T::CheckMembershipCallAllowed::check_idty_allowed_to_claim_membership(&idty_id)?;
+            T::CheckMembershipOpAllowed::check_add_membership(idty_id)?;
             Ok(())
         }
 
         /// check that membership can be renewed
-        pub fn check_allowed_to_renew(
+        pub fn check_renew_membership(
             idty_id: T::IdtyId,
         ) -> Result<MembershipData<T::BlockNumber>, DispatchError> {
             let membership_data =
                 Membership::<T>::get(idty_id).ok_or(Error::<T>::MembershipNotFound)?;
 
             // enough certifications and distance rule for example
-            T::CheckMembershipCallAllowed::check_idty_allowed_to_renew_membership(&idty_id)?;
+            T::CheckMembershipOpAllowed::check_renew_membership(idty_id)?;
             Ok(membership_data)
         }
 
         /// try claim membership
         pub fn try_add_membership(idty_id: T::IdtyId) -> Result<(), DispatchError> {
-            Self::check_allowed_to_claim(idty_id)?;
+            Self::check_add_membership(idty_id)?;
             Self::do_add_membership(idty_id);
             Ok(())
         }
 
         /// try renew membership
         pub fn try_renew_membership(idty_id: T::IdtyId) -> Result<(), DispatchError> {
-            let membership_data = Self::check_allowed_to_renew(idty_id)?;
+            let membership_data = Self::check_renew_membership(idty_id)?;
             Self::do_renew_membership(idty_id, membership_data);
             Ok(())
         }
diff --git a/pallets/membership/src/mock.rs b/pallets/membership/src/mock.rs
index a13325a0c29ce3e32fa7d16cfc5af80de48f06e4..f197691276be7446d36a9a5fa910222c5337adb9 100644
--- a/pallets/membership/src/mock.rs
+++ b/pallets/membership/src/mock.rs
@@ -83,7 +83,7 @@ parameter_types! {
 }
 
 impl pallet_membership::Config for Test {
-    type CheckMembershipCallAllowed = ();
+    type CheckMembershipOpAllowed = ();
     type IdtyId = IdtyId;
     type IdtyIdOf = ConvertInto;
     type AccountIdOf = ConvertInto;
diff --git a/primitives/membership/src/traits.rs b/primitives/membership/src/traits.rs
index abb5961cd3d7d76cdba4f845a79b458ce03e326e..9e54c148b7dd06be47a76c9ca114f0e51ab6cc5b 100644
--- a/primitives/membership/src/traits.rs
+++ b/primitives/membership/src/traits.rs
@@ -16,16 +16,16 @@
 
 use frame_support::pallet_prelude::*;
 
-pub trait CheckMembershipCallAllowed<IdtyId> {
-    fn check_idty_allowed_to_claim_membership(idty_id: &IdtyId) -> Result<(), DispatchError>;
-    fn check_idty_allowed_to_renew_membership(idty_id: &IdtyId) -> Result<(), DispatchError>;
+pub trait CheckMembershipOpAllowed<IdtyId> {
+    fn check_add_membership(idty_id: IdtyId) -> Result<(), DispatchError>;
+    fn check_renew_membership(idty_id: IdtyId) -> Result<(), DispatchError>;
 }
 
-impl<IdtyId> CheckMembershipCallAllowed<IdtyId> for () {
-    fn check_idty_allowed_to_claim_membership(_: &IdtyId) -> Result<(), DispatchError> {
+impl<IdtyId> CheckMembershipOpAllowed<IdtyId> for () {
+    fn check_add_membership(_: IdtyId) -> Result<(), DispatchError> {
         Ok(())
     }
-    fn check_idty_allowed_to_renew_membership(_: &IdtyId) -> Result<(), DispatchError> {
+    fn check_renew_membership(_: IdtyId) -> Result<(), DispatchError> {
         Ok(())
     }
 }
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index d0ce866c0d4bf0bde2f48c5155b05ecdc9f1bdd6..d70ece043f1a29ed2c9f1802b39eb8a23c0be56c 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -482,7 +482,7 @@ macro_rules! pallets_config {
         }
 
         impl pallet_membership::Config for Runtime {
-            type CheckMembershipCallAllowed = Wot;
+            type CheckMembershipOpAllowed = Wot;
             type IdtyId = IdtyIndex;
             type IdtyIdOf = common_runtime::providers::IdentityIndexOf<Self>;
             type AccountIdOf = common_runtime::providers::IdentityAccountIdProvider<Self>;
diff --git a/runtime/common/src/weights/pallet_certification.rs b/runtime/common/src/weights/pallet_certification.rs
index 3e98b656d34399f3c2954a667f791db2168eca30..4252be4605eae790017201d5e58f1b79ea3267c5 100644
--- a/runtime/common/src/weights/pallet_certification.rs
+++ b/runtime/common/src/weights/pallet_certification.rs
@@ -54,8 +54,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 	/// 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: Cert StorageCertsRemovableOn (r:1 w:1)
-	/// Proof Skipped: Cert StorageCertsRemovableOn (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Cert CertsRemovableOn (r:1 w:1)
+	/// Proof Skipped: Cert CertsRemovableOn (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)
 	fn add_cert() -> Weight {
@@ -110,8 +110,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into())))
 			.saturating_add(Weight::from_parts(0, 2511).saturating_mul(i.into()))
 	}
-	/// Storage: Cert StorageCertsRemovableOn (r:1 w:0)
-	/// Proof Skipped: Cert StorageCertsRemovableOn (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Cert CertsRemovableOn (r:1 w:0)
+	/// Proof Skipped: Cert CertsRemovableOn (max_values: None, max_size: None, mode: Measured)
 	fn on_initialize() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `181`
diff --git a/runtime/common/src/weights/pallet_identity.rs b/runtime/common/src/weights/pallet_identity.rs
index 159094ef918d118978f8caefcf26e22ed75472f4..16189190a6bbb51687c61eea057452de22587d48 100644
--- a/runtime/common/src/weights/pallet_identity.rs
+++ b/runtime/common/src/weights/pallet_identity.rs
@@ -64,8 +64,8 @@ impl<T: frame_system::Config> pallet_identity::WeightInfo for WeightInfo<T> {
 	/// 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: Cert StorageCertsRemovableOn (r:1 w:1)
-	/// Proof Skipped: Cert StorageCertsRemovableOn (max_values: None, max_size: None, mode: Measured)
+	/// Storage: Cert CertsRemovableOn (r:1 w:1)
+	/// Proof Skipped: Cert CertsRemovableOn (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: Quota IdtyQuota (r:0 w:1)