diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs
index 33a3fe3307ccce80f78f33dd3276267f1378b385..9a55804fd7dea1abd4d81ee3a5a089dd4a4c40e4 100644
--- a/pallets/identity/src/lib.rs
+++ b/pallets/identity/src/lib.rs
@@ -378,8 +378,8 @@ pub mod pallet {
                 payload.using_encoded(|bytes| payload_sig.verify(bytes, &payload.owner_key)),
                 Error::<T>::InvalidRevocationProof
             );
-            if let Some(idty_index) = <IdentityIndexOf<T>>::take(payload.owner_key) {
-                Self::do_remove_identity(idty_index);
+            if let Some(idty_index) = <IdentityIndexOf<T>>::take(&payload.owner_key) {
+                Self::do_remove_identity(idty_index, Some(&payload.owner_key));
                 Ok(().into())
             } else {
                 Err(Error::<T>::IdtyNotFound.into())
@@ -394,7 +394,7 @@ pub mod pallet {
         ) -> DispatchResultWithPostInfo {
             ensure_root(origin)?;
 
-            Self::do_remove_identity(idty_index);
+            Self::do_remove_identity(idty_index, None);
             if let Some(idty_name) = idty_name {
                 <IdentitiesNames<T>>::remove(idty_name);
             }
@@ -499,9 +499,15 @@ pub mod pallet {
     // INTERNAL FUNCTIONS //
 
     impl<T: Config> Pallet<T> {
-        pub(super) fn do_remove_identity(idty_index: T::IdtyIndex) -> Weight {
+        pub(super) fn do_remove_identity(
+            idty_index: T::IdtyIndex,
+            maybe_owner_key: Option<&T::AccountId>,
+        ) -> Weight {
             if let Some(idty_val) = Identities::<T>::take(idty_index) {
                 T::RemoveIdentityConsumers::remove_idty_consumers(idty_index);
+                if let Some(owner_key) = maybe_owner_key {
+                    IdentityIndexOf::<T>::remove(owner_key);
+                }
                 frame_system::Pallet::<T>::dec_sufficients(&idty_val.owner_key);
                 Self::deposit_event(Event::IdtyRemoved { idty_index });
                 T::OnIdtyChange::on_idty_change(idty_index, IdtyEvent::Removed);
@@ -523,7 +529,8 @@ pub mod pallet {
             for (idty_index, idty_status) in IdentitiesRemovableOn::<T>::take(block_number) {
                 if let Ok(idty_val) = <Identities<T>>::try_get(idty_index) {
                     if idty_val.removable_on == block_number && idty_val.status == idty_status {
-                        total_weight += Self::do_remove_identity(idty_index)
+                        total_weight +=
+                            Self::do_remove_identity(idty_index, Some(&idty_val.owner_key))
                     }
                 }
             }
diff --git a/pallets/identity/src/tests.rs b/pallets/identity/src/tests.rs
index 19c3cd75da529690f3b39da04ea5114fb8920b55..3c4978e1c660fb21a88ec5099da2add0b0f06146 100644
--- a/pallets/identity/src/tests.rs
+++ b/pallets/identity/src/tests.rs
@@ -74,6 +74,50 @@ fn test_create_identity_ok() {
     });
 }
 
+#[test]
+fn test_create_identity_but_not_confirm_it() {
+    new_test_ext(IdentityConfig {
+        identities: vec![alice()],
+    })
+    .execute_with(|| {
+        // We need to initialize at least one block before any call
+        run_to_block(1);
+
+        // Alice should be able te create an identity
+        assert_ok!(Identity::create_identity(Origin::signed(1), 2));
+
+        // The identity shoud expire in blocs #3
+        run_to_block(3);
+        let events = System::events();
+        assert_eq!(events.len(), 1);
+        assert_eq!(
+            events[0],
+            EventRecord {
+                phase: Phase::Initialization,
+                event: Event::Identity(crate::Event::IdtyRemoved { idty_index: 2 }),
+                topics: vec![],
+            }
+        );
+
+        // We shoud be able to recreate the identity
+        run_to_block(4);
+        assert_ok!(Identity::create_identity(Origin::signed(1), 2));
+        let events = System::events();
+        assert_eq!(events.len(), 1);
+        assert_eq!(
+            events[0],
+            EventRecord {
+                phase: Phase::Initialization,
+                event: Event::Identity(crate::Event::IdtyCreated {
+                    idty_index: 3,
+                    owner_key: 2,
+                }),
+                topics: vec![],
+            }
+        );
+    });
+}
+
 #[test]
 fn test_idty_creation_period() {
     new_test_ext(IdentityConfig {