diff --git a/src/sakia/app.py b/src/sakia/app.py
index de2ccd0823e9e624ae3c9a4e6e70b72f8cd7ec37..8a6b83aeafc3da17fa9dc087c4dd452b1ed034cf 100644
--- a/src/sakia/app.py
+++ b/src/sakia/app.py
@@ -51,6 +51,7 @@ class Application(QObject):
     referential_changed = pyqtSignal()
     sources_refreshed = pyqtSignal()
     new_blocks_handled = pyqtSignal()
+    view_in_wot = pyqtSignal(Connection, Identity)
 
     qapp = attr.ib()
     loop = attr.ib()
diff --git a/src/sakia/gui/navigation/controller.py b/src/sakia/gui/navigation/controller.py
index 7572ec6701371a76059c19e97e0678aecfa1c1d0..c0c46776cef664e5bf6ebaffc639075df9ad3741 100644
--- a/src/sakia/gui/navigation/controller.py
+++ b/src/sakia/gui/navigation/controller.py
@@ -62,8 +62,18 @@ class NavigationController(QObject):
         model.setParent(navigation)
         navigation.init_navigation()
         app.new_connection.connect(navigation.add_connection)
+        app.view_in_wot.connect(navigation.view_in_wot)
         return navigation
 
+    def view_in_wot(self, connection, _):
+        raw_data = self.model.get_raw_data('Wot', connection=connection)
+        if raw_data:
+            widget = raw_data['widget']
+            if self.view.stacked_widget.indexOf(widget) != -1:
+                self.view.stacked_widget.setCurrentWidget(widget)
+                self.view.current_view_changed.emit(raw_data)
+                return
+
     def parse_node(self, node_data):
         if 'component' in node_data:
             component_class = self.components[node_data['component']]
diff --git a/src/sakia/gui/navigation/graphs/wot/controller.py b/src/sakia/gui/navigation/graphs/wot/controller.py
index c61b4e596aa099bcd8ec1e9d2baaf2a81a11ce83..3ec96bc9a1b77ded7e915684b16037adc00fbeaa 100644
--- a/src/sakia/gui/navigation/graphs/wot/controller.py
+++ b/src/sakia/gui/navigation/graphs/wot/controller.py
@@ -39,6 +39,7 @@ class WotController(BaseGraphController):
         search_user = SearchUserController.create(wot, app)
         wot.view.set_search_user(search_user.view)
         app.identity_changed.connect(wot.handle_identity_change)
+        app.view_in_wot.connect(lambda c, i: wot.center_on_identity(i) if c == connection else None)
         search_user.identity_selected.connect(wot.center_on_identity)
         search_user.view.button_reset.clicked.connect(wot.reset)
         return wot
diff --git a/src/sakia/gui/navigation/identities/controller.py b/src/sakia/gui/navigation/identities/controller.py
index 48a7d107ecff49f86b22cfa97b731aee68d64c04..2a71d8689233695e5a52628e382f6783e0ed5f5d 100644
--- a/src/sakia/gui/navigation/identities/controller.py
+++ b/src/sakia/gui/navigation/identities/controller.py
@@ -5,6 +5,7 @@ from PyQt5.QtCore import QObject, pyqtSignal
 from sakia.errors import NoPeerAvailable
 
 from duniterpy.api import errors
+from sakia.data.entities import Identity
 from sakia.decorators import once_at_a_time, asyncify
 from sakia.gui.widgets.context_menu import ContextMenu
 from .model import IdentitiesModel
@@ -15,7 +16,7 @@ class IdentitiesController(QObject):
     """
     The navigation panel
     """
-    view_in_wot = pyqtSignal(object)
+    view_in_wot = pyqtSignal(Identity)
 
     def __init__(self, parent, view, model, password_asker=None):
         """
@@ -40,6 +41,7 @@ class IdentitiesController(QObject):
         model = IdentitiesModel(None, app, connection, blockchain_service, identities_service)
         identities = cls(parent, view, model)
         model.setParent(identities)
+        identities.view_in_wot.connect(lambda i: app.view_in_wot.emit(connection, i))
         return identities
 
     def identity_context_menu(self, point):
diff --git a/src/sakia/gui/navigation/model.py b/src/sakia/gui/navigation/model.py
index 420a96242893dfd47530538bb89797eed9e3422c..1ef2753b44d89eaf6560262dd3bbb76ea9dabb2a 100644
--- a/src/sakia/gui/navigation/model.py
+++ b/src/sakia/gui/navigation/model.py
@@ -115,6 +115,20 @@ class NavigationModel(QObject):
     def current_data(self, key):
         return self._current_data.get(key, None)
 
+    def _lookup_raw_data(self, raw_data, component, **kwargs):
+        if raw_data['component'] == component:
+            for k in kwargs:
+                if raw_data['misc'].get(k, None) == kwargs[k]:
+                    return raw_data
+        for c in raw_data.get('children', []):
+            children_data = self._lookup_raw_data(c, component, **kwargs)
+            if children_data:
+                return children_data
+
+    def get_raw_data(self, component, **kwargs):
+        for data in self.navigation:
+            return self._lookup_raw_data(data, component, **kwargs)
+
     def current_connection(self):
         if self._current_data:
             return self._current_data['misc'].get('connection', None)
diff --git a/src/sakia/gui/navigation/txhistory/controller.py b/src/sakia/gui/navigation/txhistory/controller.py
index 36b46be799a4440222c5041496881afa3b40db23..a827c6861d8650e3bbf8fffeb4209c18494cbfec 100644
--- a/src/sakia/gui/navigation/txhistory/controller.py
+++ b/src/sakia/gui/navigation/txhistory/controller.py
@@ -42,6 +42,7 @@ class TxHistoryController(QObject):
         model.setParent(txhistory)
         app.referential_changed.connect(txhistory.refresh_balance)
         app.sources_refreshed.connect(txhistory.refresh_balance)
+        txhistory.view_in_wot.connect(lambda i: app.view_in_wot.emit(connection, i))
         return txhistory
 
     def refresh_minimum_maximum(self):
diff --git a/src/sakia/services/identities.py b/src/sakia/services/identities.py
index fd8483711ee5e1d4d212fe955e0204998899b8f9..d81ff1f7d0228c324a1c7201346e9000143e013a 100644
--- a/src/sakia/services/identities.py
+++ b/src/sakia/services/identities.py
@@ -372,18 +372,19 @@ class IdentitiesService(QObject):
         try:
             requirements = await self._bma_connector.get(self.currency, bma.wot.requirements,
                                                          req_args={'search': identity.pubkey})
-            identity_data = requirements['identities'][0]
-            identity.uid = identity_data["uid"]
-            identity.blockstamp = block_uid(identity_data["meta"]["timestamp"])
-            identity.timestamp = await self._blockchain_processor.timestamp(self.currency, identity.blockstamp.number)
-            identity.outdistanced = identity_data["outdistanced"]
-            identity.member = identity_data["membershipExpiresIn"] > 0
-            median_time = self._blockchain_processor.time(self.currency)
-            expiration_time = self._blockchain_processor.parameters(self.currency).ms_validity
-            identity.membership_timestamp = median_time - (expiration_time - identity_data["membershipExpiresIn"])
-            # We save connections pubkeys
-            if self._identities_processor.get_identity(self.currency, identity.pubkey, identity.uid):
-                self._identities_processor.insert_or_update_identity(identity)
+            for identity_data in requirements['identities']:
+                if not identity.uid or identity.uid == identity_data["uid"]:
+                    identity.uid = identity_data["uid"]
+                    identity.blockstamp = block_uid(identity_data["meta"]["timestamp"])
+                    identity.timestamp = await self._blockchain_processor.timestamp(self.currency, identity.blockstamp.number)
+                    identity.outdistanced = identity_data["outdistanced"]
+                    identity.member = identity_data["membershipExpiresIn"] > 0
+                    median_time = self._blockchain_processor.time(self.currency)
+                    expiration_time = self._blockchain_processor.parameters(self.currency).ms_validity
+                    identity.membership_timestamp = median_time - (expiration_time - identity_data["membershipExpiresIn"])
+                    # We save connections pubkeys
+                    if self._identities_processor.get_identity(self.currency, identity.pubkey, identity.uid):
+                        self._identities_processor.insert_or_update_identity(identity)
         except errors.DuniterError as e:
             if e.ucode == errors.NO_MEMBER_MATCHING_PUB_OR_UID:
                 pass