diff --git a/src/sakia/data/processors/certifications.py b/src/sakia/data/processors/certifications.py
index 7897932797065ff114e78f45277344856e8b6c71..82e0021ff2cb646fb978627019cf24ad20296f29 100644
--- a/src/sakia/data/processors/certifications.py
+++ b/src/sakia/data/processors/certifications.py
@@ -1,7 +1,7 @@
 import attr
 import asyncio
 from duniterpy.api import bma, errors
-from duniterpy.documents import BlockUID
+from duniterpy.documents import block_uid
 from ..connectors import BmaConnector
 from ..processors import NodesProcessor
 from ..entities import Certification, Identity
diff --git a/src/sakia/gui/dialogs/certification/controller.py b/src/sakia/gui/dialogs/certification/controller.py
index f7a8615a16b0831afcd0156a7c094cb19e31dd76..c656ede2529b9620d450611fa423af4852abab2a 100644
--- a/src/sakia/gui/dialogs/certification/controller.py
+++ b/src/sakia/gui/dialogs/certification/controller.py
@@ -80,6 +80,7 @@ class CertificationController(QObject):
         """
         dialog = cls.create(parent, app)
         dialog.view.combo_pubkey.setCurrentText(connection.title())
+        dialog.user_information.change_identity(identity)
         dialog.refresh()
         return await dialog.async_exec()
 
@@ -125,7 +126,8 @@ class CertificationController(QObject):
             QApplication.restoreOverrideCursor()
             self.view.button_box.setEnabled(True)
 
-    def reject(self):
+    @asyncify
+    async def reject(self):
         self.view.reject()
 
     def refresh(self):
diff --git a/src/sakia/gui/dialogs/transfer/controller.py b/src/sakia/gui/dialogs/transfer/controller.py
index d1b3c08665ec3de25c51e97a0fa8fc0083bcb49d..3e0ba57ed6f9594fd66f6022bea52176ceaf5b7d 100644
--- a/src/sakia/gui/dialogs/transfer/controller.py
+++ b/src/sakia/gui/dialogs/transfer/controller.py
@@ -71,6 +71,7 @@ class TransferController(QObject):
     async def send_money_to_identity(cls, parent, app, connection, identity):
         dialog = cls.create(parent, app)
         dialog.view.combo_connections.setCurrentText(connection.title())
+        dialog.user_information.change_identity(identity)
         dialog.view.edit_pubkey.setText(identity.pubkey)
         dialog.view.radio_pubkey.setChecked(True)
 
diff --git a/src/sakia/gui/main_window/toolbar/model.py b/src/sakia/gui/main_window/toolbar/model.py
index a7b32325fbda10afc3b9438849a4256fb36a0ae0..abf8adb0500a8f67df99214671bc8179c0067d16 100644
--- a/src/sakia/gui/main_window/toolbar/model.py
+++ b/src/sakia/gui/main_window/toolbar/model.py
@@ -34,7 +34,7 @@ class ToolbarModel(QObject):
         version_url = ""
         if not latest[0]:
             version_info = "Latest release : {version}" \
-                            .format(version='.'.join(latest[1]))
+                            .format(version=latest[1])
             version_url = latest[2]
 
         new_version_text = """
diff --git a/src/sakia/gui/navigation/graphs/base/controller.py b/src/sakia/gui/navigation/graphs/base/controller.py
index 5d5f42eab552409931c9b0272e54bf3ff5cf812e..e1af19acbd1f9485bd71ac5a975fb3a8d638bfc0 100644
--- a/src/sakia/gui/navigation/graphs/base/controller.py
+++ b/src/sakia/gui/navigation/graphs/base/controller.py
@@ -62,12 +62,11 @@ class BaseGraphController(QObject):
         """
         raise NotImplementedError("refresh not implemented")
 
-    def node_context_menu(self, pubkey):
+    def node_context_menu(self, identity):
         """
         Open the node context menu
-        :param str pubkey: the pubkey of the node to open
+        :param sakia.data.entities.Identity identity: the identity of the node to open
         """
-        identity = self.model.get_identity(pubkey)
         menu = ContextMenu.from_data(self.view, self.model.app, self.model.connection, (identity,))
         menu.view_identity_in_wot.connect(self.draw_graph)
 
diff --git a/src/sakia/gui/navigation/graphs/base/node.py b/src/sakia/gui/navigation/graphs/base/node.py
index 33362993ed08eaf75bbfadc85da2051ce9fd83d6..f07802526c77144ced6941477173af888b6590c5 100644
--- a/src/sakia/gui/navigation/graphs/base/node.py
+++ b/src/sakia/gui/navigation/graphs/base/node.py
@@ -66,5 +66,5 @@ class BaseNode(QGraphicsEllipseItem):
 
         :param event: scene context menu event
         """
-        self.scene().node_context_menu_requested.emit(self.id)
+        self.scene().node_context_menu_requested.emit(self.metadata['identity'])
 
diff --git a/src/sakia/gui/navigation/graphs/base/scene.py b/src/sakia/gui/navigation/graphs/base/scene.py
index 36cd72880a4def8abc332cd47f0b5c06e68aaede..3c5a46e58bddacffc84eb12d74c0a3f54527154d 100644
--- a/src/sakia/gui/navigation/graphs/base/scene.py
+++ b/src/sakia/gui/navigation/graphs/base/scene.py
@@ -1,10 +1,11 @@
+from sakia.data.entities import Identity
 from PyQt5.QtCore import pyqtSignal
 from PyQt5.QtWidgets import QGraphicsScene, QGraphicsSceneContextMenuEvent
 
 
 class BaseScene(QGraphicsScene):
     # This defines signals taking string arguments
-    node_context_menu_requested = pyqtSignal(str)
+    node_context_menu_requested = pyqtSignal(Identity)
     node_hovered = pyqtSignal(str)
     node_clicked = pyqtSignal(str, dict)
 
diff --git a/src/sakia/gui/widgets/context_menu.py b/src/sakia/gui/widgets/context_menu.py
index 13072b76350a4850b8d61ef94b097cdad6a3b421..340ee2080a99b6cc3095dcb8019ca27539df8426 100644
--- a/src/sakia/gui/widgets/context_menu.py
+++ b/src/sakia/gui/widgets/context_menu.py
@@ -134,7 +134,6 @@ class ContextMenu(QObject):
     @asyncify
     async def send_money(self, identity):
         await TransferController.send_money_to_identity(None, self._app, self._connection, identity)
-        self._app.refresh_transfers.emit()
 
     def view_wot(self, identity):
         self.view_identity_in_wot.emit(identity)
diff --git a/src/sakia/services/documents.py b/src/sakia/services/documents.py
index 9448d1cbd99a67c3b134cf087a9ddcab9a7672c2..27bb0274f6d8c616a6aaeddfde1337aaf572a989 100644
--- a/src/sakia/services/documents.py
+++ b/src/sakia/services/documents.py
@@ -1,13 +1,11 @@
 import asyncio
 import attr
 import logging
-import jsonschema
-from collections import Counter
 
 from duniterpy.key import SigningKey
 from duniterpy import PROTOCOL_VERSION
 from duniterpy.documents import BlockUID, Block, Certification, Membership, Revocation, InputSource, \
-    OutputSource, SIGParameter, Unlock
+    OutputSource, SIGParameter, Unlock, block_uid
 from duniterpy.documents import Identity as IdentityDoc
 from duniterpy.documents import Transaction as TransactionDoc
 from duniterpy.documents.transaction import reduce_base
@@ -142,6 +140,15 @@ class DocumentsService:
         """
         self._logger.debug("Certdata")
         blockUID = self._blockchain_processor.current_buid(connection.currency)
+        if not identity.signature:
+            lookup_data = await self._bma_connector.get(connection.currency, bma.wot.lookup,
+                                                     req_args={'search': identity.pubkey})
+            for uid_data in next(data["uids"] for data in lookup_data["results"] if data["pubkey"] == identity.pubkey):
+                if uid_data["uid"] == identity.uid and block_uid(uid_data["meta"]["timestamp"]) == identity.blockstamp:
+                    identity.signature = uid_data["self"]
+                    break
+            else:
+                return False, "Could not find certified identity signature"
 
         certification = Certification(10, connection.currency,
                                       connection.pubkey, identity.pubkey, blockUID, None)