diff --git a/pallets/authority-members/src/benchmarking.rs b/pallets/authority-members/src/benchmarking.rs
index 893d89ba867bb56f5d9f209536f2df6fccb428e4..808ea5865cee6ab763bcdf1be40adcc66ff08051 100644
--- a/pallets/authority-members/src/benchmarking.rs
+++ b/pallets/authority-members/src/benchmarking.rs
@@ -17,70 +17,83 @@
 #![cfg(feature = "runtime-benchmarks")]
 
 use super::*;
-
-use frame_benchmarking::benchmarks;
-use frame_system::RawOrigin;
-
 use crate::Pallet;
 
-fn assert_has_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
-    frame_system::Pallet::<T>::assert_has_event(generic_event.into());
-}
+use frame_benchmarking::v2::*;
+use frame_system::RawOrigin;
 
-benchmarks! {
-    where_clause {
+#[benchmarks(
         where
-            T::MemberId: From<u32>,
+            <T as Config>::MemberId: From<u32>,
+)]
+mod benchmarks {
+    use super::*;
+
+    fn assert_has_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
+        frame_system::Pallet::<T>::assert_has_event(generic_event.into());
     }
-    go_offline {
+
+    #[benchmark]
+    fn go_offline() {
         let id: T::MemberId = OnlineAuthorities::<T>::get()[0];
         let caller: T::AccountId = Members::<T>::get(id).unwrap().owner_key;
-        let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
-    }: _<T::RuntimeOrigin>(caller_origin)
-    verify {
-        assert_has_event::<T>(Event::<T>::MemberGoOffline{member: id}.into());
+
+        #[extrinsic_call]
+        _(RawOrigin::Signed(caller));
+
+        assert_has_event::<T>(Event::<T>::MemberGoOffline { member: id }.into());
     }
-     go_online {
+
+    #[benchmark]
+    fn go_online() {
         let id: T::MemberId = OnlineAuthorities::<T>::get()[0];
         let caller: T::AccountId = Members::<T>::get(id).unwrap().owner_key;
-        let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
         OnlineAuthorities::<T>::mutate(|ids| {
             ids.retain(|&x| x != id);
         });
         OutgoingAuthorities::<T>::mutate(|ids| {
             ids.retain(|&x| x != id);
         });
-    }: _<T::RuntimeOrigin>(caller_origin)
-    verify {
-        assert_has_event::<T>(Event::<T>::MemberGoOnline{member: id}.into());
+
+        #[extrinsic_call]
+        _(RawOrigin::Signed(caller));
+
+        assert_has_event::<T>(Event::<T>::MemberGoOnline { member: id }.into());
     }
-     set_session_keys {
+
+    #[benchmark]
+    fn set_session_keys() {
         let id: T::MemberId = OnlineAuthorities::<T>::get()[0];
         let caller: T::AccountId = Members::<T>::get(id).unwrap().owner_key;
-        let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
-            let validator_id = T::ValidatorIdOf::convert(caller.clone()).unwrap();
-            let session_keys: T::Keys = pallet_session::NextKeys::<T>::get(validator_id).unwrap();
-        }: _<T::RuntimeOrigin>(caller_origin, session_keys)
-     remove_member {
+        let validator_id = T::ValidatorIdOf::convert(caller.clone()).unwrap();
+        let session_keys: T::Keys = pallet_session::NextKeys::<T>::get(validator_id).unwrap();
+
+        #[extrinsic_call]
+        _(RawOrigin::Signed(caller), session_keys);
+    }
+
+    #[benchmark]
+    fn remove_member() {
         let id: T::MemberId = OnlineAuthorities::<T>::get()[0];
-        let caller_origin = RawOrigin::Root.into();
-        }: _<T::RuntimeOrigin>(caller_origin, id)
-    verify {
-        assert_has_event::<T>(Event::<T>::MemberRemoved{member: id}.into());
+
+        #[extrinsic_call]
+        _(RawOrigin::Root, id);
+
+        assert_has_event::<T>(Event::<T>::MemberRemoved { member: id }.into());
     }
-     remove_member_from_blacklist {
+
+    #[benchmark]
+    fn remove_member_from_blacklist() {
         let id: T::MemberId = OnlineAuthorities::<T>::get()[0];
         Blacklist::<T>::mutate(|blacklist| {
             blacklist.push(id);
         });
-    }: _<T::RuntimeOrigin>(RawOrigin::Root.into(), id)
-    verify {
-        assert_has_event::<T>(Event::<T>::MemberRemovedFromBlacklist{member: id}.into());
+
+        #[extrinsic_call]
+        _(RawOrigin::Root, id);
+
+        assert_has_event::<T>(Event::<T>::MemberRemovedFromBlacklist { member: id }.into());
     }
 
-     impl_benchmark_test_suite!(
-            Pallet,
-            crate::mock::new_test_ext(2),
-            crate::mock::Test
-        );
+    impl_benchmark_test_suite!(Pallet, crate::mock::new_test_ext(2), crate::mock::Test);
 }
diff --git a/pallets/certification/src/benchmarking.rs b/pallets/certification/src/benchmarking.rs
index 5aa67fdf40a170cd4d629e99ebdf6abbdb26c9d6..090b8012b0e9ed43981a1384d74f623562feb888 100644
--- a/pallets/certification/src/benchmarking.rs
+++ b/pallets/certification/src/benchmarking.rs
@@ -18,7 +18,7 @@
 
 use super::*;
 
-use frame_benchmarking::benchmarks;
+use frame_benchmarking::v2::*;
 use frame_system::RawOrigin;
 use sp_runtime::traits::Zero;
 
@@ -27,104 +27,145 @@ use maplit::btreemap;
 
 use crate::Pallet;
 
-fn assert_has_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
-    frame_system::Pallet::<T>::assert_has_event(generic_event.into());
-}
+#[benchmarks(
+        where
+            <T as Config>::IdtyIndex: From<u32>,
+)]
+mod benchmarks {
+    use super::*;
 
-fn add_certs<T: Config>(i: u32, receiver: T::IdtyIndex) -> Result<(), &'static str> {
-    Pallet::<T>::remove_all_certs_received_by(RawOrigin::Root.into(), receiver)?;
-    for j in 1..i {
-        Pallet::<T>::do_add_cert_checked(j.into(), receiver, false)?;
+    fn assert_has_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
+        frame_system::Pallet::<T>::assert_has_event(generic_event.into());
     }
-    assert!(
-        CertsByReceiver::<T>::get(receiver).len() as u32 == i - 1,
-        "Certs not added",
-    );
-    Ok(())
-}
 
-benchmarks! {
-    where_clause {
-        where
-            T::IdtyIndex: From<u32>,
+    fn add_certs<T: Config>(i: u32, receiver: T::IdtyIndex) -> Result<(), &'static str> {
+        Pallet::<T>::remove_all_certs_received_by(RawOrigin::Root.into(), receiver)?;
+        for j in 1..i {
+            Pallet::<T>::do_add_cert_checked(j.into(), receiver, false)?;
+        }
+        assert!(
+            CertsByReceiver::<T>::get(receiver).len() as u32 == i - 1,
+            "Certs not added",
+        );
+        Ok(())
     }
-    add_cert {
+
+    #[benchmark]
+    fn add_cert() -> Result<(), BenchmarkError> {
         let issuer: T::IdtyIndex = 1.into();
-        let caller: T::AccountId  = T::IdtyAttr::owner_key(issuer).unwrap();
-        let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
+        let caller: T::AccountId = T::IdtyAttr::owner_key(issuer).unwrap();
         let receiver: T::IdtyIndex = 2.into();
         Pallet::<T>::del_cert(RawOrigin::Root.into(), issuer, receiver)?;
-        let issuer_cert: u32 = StorageIdtyCertMeta::<T>::get(issuer).issued_count;
-        let receiver_cert: u32 = StorageIdtyCertMeta::<T>::get(receiver).received_count;
         frame_system::pallet::Pallet::<T>::set_block_number(T::CertPeriod::get());
-    }: _<T::RuntimeOrigin>(caller_origin, receiver)
-    verify {
-        assert_has_event::<T>(Event::<T>::CertAdded{ issuer, receiver }.into());
+
+        #[extrinsic_call]
+        _(RawOrigin::Signed(caller), receiver);
+
+        assert_has_event::<T>(Event::<T>::CertAdded { issuer, receiver }.into());
+        Ok(())
     }
 
-    renew_cert {
+    #[benchmark]
+    fn renew_cert() -> Result<(), BenchmarkError> {
         let issuer: T::IdtyIndex = 1.into();
-        let caller: T::AccountId  = T::IdtyAttr::owner_key(issuer).unwrap();
-        let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
+        let caller: T::AccountId = T::IdtyAttr::owner_key(issuer).unwrap();
         let receiver: T::IdtyIndex = 2.into();
         Pallet::<T>::del_cert(RawOrigin::Root.into(), issuer, receiver)?;
-        let issuer_cert: u32 = StorageIdtyCertMeta::<T>::get(issuer).issued_count;
-        let receiver_cert: u32 = StorageIdtyCertMeta::<T>::get(receiver).received_count;
         frame_system::pallet::Pallet::<T>::set_block_number(T::CertPeriod::get());
-        Pallet::<T>::add_cert(caller_origin.clone(), receiver)?;
-        frame_system::pallet::Pallet::<T>::set_block_number(T::CertPeriod::get() + T::CertPeriod::get());
-    }: _<T::RuntimeOrigin>(caller_origin, receiver)
-    verify {
-        assert_has_event::<T>(Event::<T>::CertAdded{ issuer, receiver }.into());
+        Pallet::<T>::add_cert(RawOrigin::Signed(caller.clone()).into(), receiver)?;
+        frame_system::pallet::Pallet::<T>::set_block_number(
+            T::CertPeriod::get() + T::CertPeriod::get(),
+        );
+
+        #[extrinsic_call]
+        _(RawOrigin::Signed(caller), receiver);
+
+        assert_has_event::<T>(Event::<T>::CertAdded { issuer, receiver }.into());
+        Ok(())
     }
 
-    del_cert {
+    #[benchmark]
+    fn del_cert() -> Result<(), BenchmarkError> {
         let issuer: T::IdtyIndex = 1.into();
         let receiver: T::IdtyIndex = 2.into();
         // try to add cert if missing, else ignore
         // this depends on initial data
-        let _ = Pallet::<T>::do_add_cert_checked(issuer, receiver, false);
-        let receiver_cert: u32 = StorageIdtyCertMeta::<T>::get(receiver).received_count;
-        let issuer_cert: u32 = StorageIdtyCertMeta::<T>::get(issuer).issued_count;
-    }: _<T::RuntimeOrigin>(RawOrigin::Root.into(), issuer, receiver)
-    verify {
-        assert_has_event::<T>(Event::<T>::CertRemoved{ issuer,  receiver, expiration: false }.into());
+        Pallet::<T>::do_add_cert_checked(issuer, receiver, false)?;
+
+        #[extrinsic_call]
+        _(RawOrigin::Root, issuer, receiver);
+
+        assert_has_event::<T>(
+            Event::<T>::CertRemoved {
+                issuer,
+                receiver,
+                expiration: false,
+            }
+            .into(),
+        );
+        Ok(())
     }
 
-    remove_all_certs_received_by {
+    #[benchmark]
+    fn remove_all_certs_received_by(i: Linear<2, 1_000>) -> Result<(), BenchmarkError> {
         let receiver: T::IdtyIndex = 0.into();
-        let i in 2..1000 => add_certs::<T>(i, receiver)?;
-    }: _<T::RuntimeOrigin>(RawOrigin::Root.into(),  receiver)
-    verify {
-        assert!(CertsByReceiver::<T>::get(receiver).is_empty() );
+        add_certs::<T>(i, receiver)?;
+
+        #[extrinsic_call]
+        _(RawOrigin::Root, receiver);
+
+        assert!(CertsByReceiver::<T>::get(receiver).is_empty());
+        Ok(())
     }
 
-    on_initialize {
+    #[benchmark]
+    fn on_initialize() {
         assert!(CertsRemovableOn::<T>::try_get(BlockNumberFor::<T>::zero()).is_err());
-    }: {Pallet::<T>::on_initialize(BlockNumberFor::<T>::zero());}
 
-    do_remove_cert_noop {
-    }: {Pallet::<T>::do_remove_cert(100.into(), 101.into(), Some(BlockNumberFor::<T>::zero()));}
+        #[block]
+        {
+            Pallet::<T>::on_initialize(BlockNumberFor::<T>::zero());
+        }
+    }
+
+    #[benchmark]
+    fn do_remove_cert_noop() {
+        #[block]
+        {
+            Pallet::<T>::do_remove_cert(100.into(), 101.into(), Some(BlockNumberFor::<T>::zero()));
+        }
+    }
 
-    do_remove_cert {
+    #[benchmark]
+    fn do_remove_cert() -> Result<(), BenchmarkError> {
         let issuer: T::IdtyIndex = 1.into();
         let receiver: T::IdtyIndex = 0.into();
         Pallet::<T>::do_remove_cert(issuer, receiver, None);
         Pallet::<T>::do_add_cert_checked(issuer, receiver, false)?;
-        let issuer_cert: u32 = StorageIdtyCertMeta::<T>::get(issuer).issued_count;
-        let receiver_cert: u32 = StorageIdtyCertMeta::<T>::get(receiver).received_count;
         let block_number = T::ValidityPeriod::get();
         frame_system::pallet::Pallet::<T>::set_block_number(block_number);
-    }: {Pallet::<T>::do_remove_cert(issuer, receiver, Some(block_number));}
-    verify {
-        assert_has_event::<T>(Event::<T>::CertRemoved{ issuer,  receiver, expiration: true }.into());
+
+        #[block]
+        {
+            Pallet::<T>::do_remove_cert(issuer, receiver, Some(block_number));
+        }
+
+        assert_has_event::<T>(
+            Event::<T>::CertRemoved {
+                issuer,
+                receiver,
+                expiration: true,
+            }
+            .into(),
+        );
+        Ok(())
     }
 
     impl_benchmark_test_suite!(
         Pallet,
         crate::mock::new_test_ext(crate::mock::DefaultCertificationConfig {
-        apply_cert_period_at_genesis: true,
-        certs_by_receiver: btreemap![
+            apply_cert_period_at_genesis: true,
+            certs_by_receiver: btreemap![
                 0 => btreemap![
                     1 => Some(7),
                     2 => Some(9),
@@ -133,7 +174,7 @@ benchmarks! {
                     0 => Some(10),
                     2 => Some(3),
                 ],
-            ] ,
+            ],
         }),
         crate::mock::Test
     );