diff --git a/src/sakia/app.py b/src/sakia/app.py
index b706b6c5a2496605b9eb4c9d8f0e317ce9706bb0..0805c3609cfc76e116b4a5aff2e6c00f291229fc 100644
--- a/src/sakia/app.py
+++ b/src/sakia/app.py
@@ -107,7 +107,7 @@ class Application(QObject):
         nodes_processor = NodesProcessor(self.db.nodes_repo)
         bma_connector = BmaConnector(nodes_processor, self.parameters)
         connections_processor = ConnectionsProcessor(self.db.connections_repo)
-        identities_processor = IdentitiesProcessor(self.db.identities_repo, self.db.blockchains_repo, bma_connector)
+        identities_processor = IdentitiesProcessor(self.db.identities_repo, self.db.certifications_repo, self.db.blockchains_repo, bma_connector)
         certs_processor = CertificationsProcessor(self.db.certifications_repo, self.db.identities_repo, bma_connector)
         blockchain_processor = BlockchainProcessor.instanciate(self)
         sources_processor = SourcesProcessor.instanciate(self)
@@ -144,9 +144,8 @@ class Application(QObject):
         connections_processor = ConnectionsProcessor.instanciate(self)
         connections_processor.remove_connections(connection)
 
-        IdentitiesProcessor.instanciate(self).cleanup_connection(connection)
-
         CertificationsProcessor.instanciate(self).cleanup_connection(connection, connections_processor.pubkeys())
+        IdentitiesProcessor.instanciate(self).cleanup_connection(connection)
 
         SourcesProcessor.instanciate(self).drop_all_of(currency=connection.currency, pubkey=connection.pubkey)
 
@@ -154,9 +153,6 @@ class Application(QObject):
 
         TransactionsProcessor.instanciate(self).cleanup_connection(connection, connections_processor.pubkeys())
 
-        if not connections_processor.connections():
-            NodesProcessor.instanciate(self).drop_all(self.currency)
-
         self.db.commit()
 
     def switch_language(self):
diff --git a/src/sakia/data/processors/certifications.py b/src/sakia/data/processors/certifications.py
index 0f042bf3a782a752f3b26575da0919475a222519..0c956ae3f2b4c8bd27239b355349a7bd2d30009b 100644
--- a/src/sakia/data/processors/certifications.py
+++ b/src/sakia/data/processors/certifications.py
@@ -114,24 +114,12 @@ class CertificationsProcessor:
         :param List[str] connections_pubkeys: pubkeys of existing connections
         :return:
         """
-        def clean_unused_identity(pubkey):
-            others_certs = self._certifications_repo.get_all(currency=connection.currency,
-                                                             certifier=pubkey)
-            others_certs += self._certifications_repo.get_all(currency=connection.currency,
-                                                              certified=pubkey)
-            if not others_certs:
-                idty = self._identities_repo.get_one(currency=connection.currency, pubkey=pubkey)
-                if idty:
-                    self._identities_repo.drop(idty)
-
         certifiers = self._certifications_repo.get_all(currency=connection.currency, certifier=connection.pubkey)
         for c in certifiers:
-            self._certifications_repo.drop(c)
             if c.certified not in connections_pubkeys:
-                clean_unused_identity(c.certified)
+                self._certifications_repo.drop(c)
 
         certified = self._certifications_repo.get_all(currency=connection.currency, certified=connection.pubkey)
         for c in certified:
-            self._certifications_repo.drop(c)
             if c.certifier not in connections_pubkeys:
-                clean_unused_identity(c.certifier)
\ No newline at end of file
+                self._certifications_repo.drop(c)
\ No newline at end of file
diff --git a/src/sakia/data/processors/identities.py b/src/sakia/data/processors/identities.py
index 0db946262197fb80e23782dbec8c4a0e24db6b4c..a8288afb0f71451d4d6d21b14e7905c0fa0c5c3c 100644
--- a/src/sakia/data/processors/identities.py
+++ b/src/sakia/data/processors/identities.py
@@ -15,7 +15,16 @@ from sakia.errors import NoPeerAvailable
 
 @attr.s
 class IdentitiesProcessor:
+    """
+
+    :param _identities_repo: sakia.data.repositories.IdentitiesRepo
+    :param _certifications_repo: sakia.data.repositories.IdentitiesRepo
+    :param _blockchain_repo: sakia.data.repositories.BlockchainRepo
+    :param _bma_connector: sakia.data.connectors.bma.BmaConnector
+    :param _logger:
+    """
     _identities_repo = attr.ib()  # :type sakia.data.repositories.IdentitiesRepo
+    _certifications_repo = attr.ib()  # :type sakia.data.repositories.IdentitiesRepo
     _blockchain_repo = attr.ib()  # :type sakia.data.repositories.BlockchainRepo
     _bma_connector = attr.ib()  # :type sakia.data.connectors.bma.BmaConnector
     _logger = attr.ib(default=attr.Factory(lambda: logging.getLogger('sakia')))
@@ -26,7 +35,7 @@ class IdentitiesProcessor:
         Instanciate a blockchain processor
         :param sakia.app.Application app: the app
         """
-        return cls(app.db.identities_repo, app.db.blockchains_repo,
+        return cls(app.db.identities_repo, app.db.certifications_repo, app.db.blockchains_repo,
                    BmaConnector(NodesProcessor(app.db.nodes_repo), app.parameters))
 
     async def find_from_pubkey(self, currency, pubkey):
@@ -240,6 +249,11 @@ class IdentitiesProcessor:
         :param sakia.data.entities.Connectionb connection:
         :return:
         """
-        identities = self._identities_repo.get_all(currency=connection.currency, pubkey=connection.pubkey)
+        identities = self._identities_repo.get_all(currency=connection.currency)
         for idty in identities:
-            self._identities_repo.drop(idty)
+            others_certs = self._certifications_repo.get_all(currency=connection.currency,
+                                                             certifier=idty.pubkey)
+            others_certs += self._certifications_repo.get_all(currency=connection.currency,
+                                                              certified=idty.pubkey)
+            if not others_certs:
+                self._identities_repo.drop(idty)
diff --git a/src/sakia/gui/dialogs/connection_cfg/controller.py b/src/sakia/gui/dialogs/connection_cfg/controller.py
index 83e6efcfd6be499a7206688260dc02830f33c769..8c11b6bccaf611581cfe6c68d2e0c1c0cbb76991 100644
--- a/src/sakia/gui/dialogs/connection_cfg/controller.py
+++ b/src/sakia/gui/dialogs/connection_cfg/controller.py
@@ -65,9 +65,7 @@ class ConnectionConfigController(QObject):
         """
         view = ConnectionConfigView(parent.view if parent else None)
         model = ConnectionConfigModel(None, app, None,
-                                      IdentitiesProcessor(app.db.identities_repo, app.db.blockchains_repo,
-                                                          BmaConnector(NodesProcessor(app.db.nodes_repo),
-                                                                       app.parameters)))
+                                      IdentitiesProcessor.instanciate(app))
         account_cfg = cls(parent, view, model)
         model.setParent(account_cfg)
         view.set_license(app.currency)