diff --git a/res/ui/community_tab.ui b/res/ui/community_tab.ui
index 9b0005591abc6fa677cd5f51b48595cbce363e98..c7fa18c7e511196510002d9b823ed9616ad0c004 100644
--- a/res/ui/community_tab.ui
+++ b/res/ui/community_tab.ui
@@ -119,6 +119,13 @@
              </property>
             </widget>
            </item>
+           <item>
+            <widget class="QPushButton" name="button_publish_uid">
+             <property name="text">
+              <string>Publish UID</string>
+             </property>
+            </widget>
+           </item>
            <item>
             <widget class="QPushButton" name="button_membership">
              <property name="text">
diff --git a/src/cutecoin/core/account.py b/src/cutecoin/core/account.py
index c0cf310bf1be96f13c5b24358db33a4431d9ccf9..c102d759157d3ef0311c6ce7da71ccbffbfd9da8 100644
--- a/src/cutecoin/core/account.py
+++ b/src/cutecoin/core/account.py
@@ -275,6 +275,16 @@ class Account(QObject):
             value += w.value(community)
         return value
 
+    def published_uid(self, community):
+        '''
+        Check if this account identity is a member of a community
+
+        :param community: The target community of this request
+        :return: True if the account is a member of the target community
+        '''
+        self_person = Person.lookup(self.pubkey, community)
+        return self_person.published_uid(community)
+
     def member_of(self, community):
         '''
         Check if this account identity is a member of a community
@@ -283,6 +293,7 @@ class Account(QObject):
         :return: True if the account is a member of the target community
         '''
         self_person = Person.lookup(self.pubkey, community)
+        logging.debug("Self person : {0}".format(self_person.uid))
         return self_person.is_member(community)
 
     def send_selfcert(self, password, community):
diff --git a/src/cutecoin/core/person.py b/src/cutecoin/core/person.py
index 4e66d309030a5c5a4649da8362f5c2e2eb2dc16a..4a45013fc17bde456fe64859a9f9ef2e0976cd72 100644
--- a/src/cutecoin/core/person.py
+++ b/src/cutecoin/core/person.py
@@ -259,6 +259,30 @@ class Person(object):
 
         return membership_data
 
+    @cached
+    def published_uid(self, community):
+        try:
+            data = community.request(bma.wot.Lookup,
+                                     req_args={'search': self.pubkey},
+                                     cached=cached)
+        except ValueError as e:
+            if '404' in str(e):
+                return False
+
+        timestamp = 0
+
+        for result in data['results']:
+            if result["pubkey"] == self.pubkey:
+                uids = result['uids']
+                person_uid = ""
+                for uid_data in uids:
+                    if uid_data["meta"]["timestamp"] > timestamp:
+                        timestamp = uid_data["meta"]["timestamp"]
+                        person_uid = uid_data["uid"]
+                    if person_uid == self.uid:
+                        return True
+        return False
+
     @cached
     def is_member(self, community):
         '''
diff --git a/src/cutecoin/core/watching/persons.py b/src/cutecoin/core/watching/persons.py
index 5d8214cf1dd8eeff1cf36e6a387fbd6fedc2ad0f..6311acd524b39b8ed53ba3723ac7cac88c837daf 100644
--- a/src/cutecoin/core/watching/persons.py
+++ b/src/cutecoin/core/watching/persons.py
@@ -24,12 +24,14 @@ class PersonsWatcher(Watcher):
 
     def watch(self):
         logging.debug("Watching persons")
-        for p in Person._instances.values():
+        instances = Person._instances.copy()
+        for p in instances.values():
             if not self.exiting:
                 for func in [Person.membership,
                              Person.is_member,
                              Person.certifiers_of,
-                             Person.certified_by]:
+                             Person.certified_by,
+                             Person.published_uid]:
                     if not self.exiting:
                         if p.reload(func, self.community):
                             logging.debug("Change detected on {0} about {1}".format(p.pubkey,
diff --git a/src/cutecoin/gui/community_tab.py b/src/cutecoin/gui/community_tab.py
index ea57c4998579319b6e32c7acca249f8909949254..2def3e5d80c3f5be84f50f0712d336a0b4be9bb4 100644
--- a/src/cutecoin/gui/community_tab.py
+++ b/src/cutecoin/gui/community_tab.py
@@ -52,11 +52,24 @@ class CommunityTabWidget(QWidget, Ui_CommunityTabWidget):
         self.table_identities.customContextMenuRequested.connect(self.identity_context_menu)
         self.table_identities.sortByColumn(0, Qt.AscendingOrder)
 
-        if self.account.member_of(self.community):
-            self.button_membership.setText("Renew membership")
-        else:
-            self.button_membership.setText("Send membership demand")
+        try:
+            if self.account.published_uid(self.community):
+                if self.account.member_of(self.community):
+                    self.button_membership.setText("Renew membership")
+                    self.button_publish_uid.hide()
+                    self.button_leaving.show()
+                else:
+                    self.button_membership.setText("Send membership demand")
+                    self.button_leaving.hide()
+                    self.button_publish_uid.hide()
+            else:
+                self.button_membership.hide()
+                self.button_leaving.hide()
+                self.button_publish_uid.show()
+        except PersonNotFoundError:
+            self.button_membership.hide()
             self.button_leaving.hide()
+            self.button_publish_uid.show()
 
         self.wot_tab = WotTabWidget(app, account, community, password_asker, self)
         self.tabs_information.addTab(self.wot_tab, QIcon(':/icons/wot_icon'), "WoT")
diff --git a/src/cutecoin/gui/process_cfg_community.py b/src/cutecoin/gui/process_cfg_community.py
index 4b9c67074dab22d55abfb2cee7c888ee223e9b3b..037334f8acfab09e1214f20504f962098842733b 100644
--- a/src/cutecoin/gui/process_cfg_community.py
+++ b/src/cutecoin/gui/process_cfg_community.py
@@ -217,9 +217,6 @@ Would you like to publish the key ?""").format(self.account.pubkey))
                                          "{0}".format(e),
                                          QMessageBox.Ok)
 
-            else:
-                return
-
         if self.community not in self.account.communities:
             self.account.add_community(self.community)
         super().accept()