diff --git a/pallets/certification/src/benchmarking.rs b/pallets/certification/src/benchmarking.rs
index 7084dc11df8e9c979532c77bf63c282838110632..3e47370a09a946b4bbd4ef7c4a95559fc93ee1c3 100644
--- a/pallets/certification/src/benchmarking.rs
+++ b/pallets/certification/src/benchmarking.rs
@@ -38,7 +38,7 @@ mod benchmarks {
     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);
+            Pallet::<T>::do_add_cert_checked(j.into(), receiver, false)?;
         }
         assert!(
             CertsByReceiver::<T>::get(receiver).len() as u32 == i - 1,
@@ -56,7 +56,7 @@ mod benchmarks {
 
         #[block]
         {
-            Pallet::<T>::do_add_cert_checked(issuer, receiver, true);
+            Pallet::<T>::do_add_cert_checked(issuer, receiver, true)?;
         }
 
         assert_has_event::<T>(Event::<T>::CertAdded { issuer, receiver }.into());
@@ -98,12 +98,12 @@ mod benchmarks {
     }
 
     #[benchmark]
-    fn del_cert() -> Result<(), BenchmarkError> {
+    fn del_cert() {
         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
-        Pallet::<T>::do_add_cert_checked(issuer, receiver, false);
+        let _ = Pallet::<T>::do_add_cert_checked(issuer, receiver, false);
 
         #[extrinsic_call]
         _(RawOrigin::Root, issuer, receiver);
@@ -116,7 +116,6 @@ mod benchmarks {
             }
             .into(),
         );
-        Ok(())
     }
 
     #[benchmark]
@@ -150,11 +149,11 @@ mod benchmarks {
     }
 
     #[benchmark]
-    fn do_remove_cert() {
+    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);
+        Pallet::<T>::do_add_cert_checked(issuer, receiver, false)?;
         let block_number = T::ValidityPeriod::get();
         frame_system::pallet::Pallet::<T>::set_block_number(block_number);
 
@@ -171,6 +170,7 @@ mod benchmarks {
             }
             .into(),
         );
+        Ok(())
     }
 
     impl_benchmark_test_suite!(
diff --git a/pallets/certification/src/lib.rs b/pallets/certification/src/lib.rs
index 56bf87f5ea301b9878f650179baf0e10ee2bd39e..b2061d396db5ddaa71c2fd01e951e2490cada2ce 100644
--- a/pallets/certification/src/lib.rs
+++ b/pallets/certification/src/lib.rs
@@ -360,19 +360,16 @@ pub mod pallet {
             issuer: T::IdtyIndex,
             receiver: T::IdtyIndex,
             verify_rules: bool,
-        ) {
+        ) -> DispatchResultWithPostInfo {
             let block_number = frame_system::pallet::Pallet::<T>::block_number();
 
             if verify_rules {
                 // only verify internal rules if asked
-                if let Err(e) = Self::check_add_cert_internal(issuer, receiver, block_number) {
-                    sp_std::if_std! {println!("fail to force add cert: {:?}", e)}
-                }
-            }
+                Self::check_add_cert_internal(issuer, receiver, block_number)?;
+            };
 
-            if let Err(e) = Self::try_add_cert(block_number, issuer, receiver) {
-                sp_std::if_std! {println!("fail to force add cert: {:?}", e)}
-            }
+            Self::try_add_cert(block_number, issuer, receiver)?;
+            Ok(().into())
         }
 
         /// perform cert addition if not existing, else CertAlreadyExists
diff --git a/pallets/duniter-wot/src/lib.rs b/pallets/duniter-wot/src/lib.rs
index bf79348ae58d531ed00c792f585e1da1361ddf1b..0abf864d596aca0f4e9b26a882f3e96d6e085c53 100644
--- a/pallets/duniter-wot/src/lib.rs
+++ b/pallets/duniter-wot/src/lib.rs
@@ -240,7 +240,13 @@ where
 impl<T: Config> pallet_identity::traits::OnNewIdty<T> for Pallet<T> {
     /// This implementation adds a certificate when a new identity is created.
     fn on_created(idty_index: &IdtyIndex, creator: &IdtyIndex) {
-        <pallet_certification::Pallet<T>>::do_add_cert_checked(*creator, *idty_index, true);
+        if let Err(e) =
+            <pallet_certification::Pallet<T>>::do_add_cert_checked(*creator, *idty_index, true)
+        {
+            sp_std::if_std! {
+                println!("fail to force add cert: {:?}", e)
+            }
+        }
     }
 }