diff --git a/gajim/common/modules/bookmarks.py b/gajim/common/modules/bookmarks.py
index f564eb43f150a4467b9cfbea0590186aca79bc3d..6a636482a791c4c99a80d8941cff9b340211d963 100644
--- a/gajim/common/modules/bookmarks.py
+++ b/gajim/common/modules/bookmarks.py
@@ -286,6 +286,9 @@ class Bookmarks(AbstractPEPModule):
         else:
             self._private_store(storage_node)
 
+        app.nec.push_incoming_event(
+            NetworkEvent('bookmarks-received', account=self._account))
+
     def _pubsub_store(self, storage_node: nbxmpp.Node) -> None:
         self._con.get_module('PubSub').send_pb_publish(
             '', 'storage:bookmarks', storage_node, 'current',
@@ -344,8 +347,12 @@ class Bookmarks(AbstractPEPModule):
         }
 
         self.store_bookmarks()
-        app.nec.push_incoming_event(
-            NetworkEvent('bookmarks-received', account=self._account))
+
+    def remove(self, jid: str, publish: bool = True) -> None:
+        if self.bookmarks.pop(jid, None) is None:
+            return
+        if publish:
+            self.store_bookmarks()
 
     def get_name_from_bookmark(self, jid: str) -> str:
         fallback = jid.split('@')[0]
@@ -354,6 +361,9 @@ class Bookmarks(AbstractPEPModule):
         except KeyError:
             return fallback
 
+    def is_bookmark(self, jid: str) -> bool:
+        return jid in self.bookmarks
+
     def purge_pubsub_bookmarks(self) -> None:
         log.info('Purge/Delete Bookmarks on PubSub, '
                  'because publish options are not available')
diff --git a/gajim/common/modules/muc.py b/gajim/common/modules/muc.py
index 8bee793be8a5e001e1b71fa84613f7edf46b8aa0..650c9993fc0765d0ca29bd22f94b8cf375f54018 100644
--- a/gajim/common/modules/muc.py
+++ b/gajim/common/modules/muc.py
@@ -84,7 +84,7 @@ class MUC:
             'cancel_config',
             'send_captcha',
             'decline',
-            'request_voice'
+            'request_voice',
             'destroy',
         ]
 
diff --git a/gajim/groupchat_control.py b/gajim/groupchat_control.py
index cd7378310fda9f9140e6b4a459486f9c3e28a0b0..01b85a97be6c51b29462b3dce6dd6492adc53cca 100644
--- a/gajim/groupchat_control.py
+++ b/gajim/groupchat_control.py
@@ -182,6 +182,9 @@ class GroupchatControl(ChatControlBase):
         # if True, the room has mentioned us
         self.attention_flag = False
 
+        # True if we initiated room destruction
+        self._wait_for_destruction = False
+
         # sorted list of nicks who mentioned us (last at the end)
         self.attention_list = []
         self.nick_hits = []
@@ -651,14 +654,10 @@ class GroupchatControl(ChatControlBase):
                         _('Invalid group chat JID'),
                         _('The group chat JID has not allowed characters.'))
                     return
+
+            self._wait_for_destruction = True
             con = app.connections[self.account]
             con.get_module('MUC').destroy(self.room_jid, reason, jid)
-            con.get_module('Bookmarks').bookmarks.pop(self.room_jid, None)
-            con.get_module('Bookmarks').store_bookmarks()
-            gui_menu_builder.build_bookmark_menu(self.account)
-            self.force_non_minimizable = True
-            self.parent_win.remove_tab(self, self.parent_win.CLOSE_COMMAND)
-            self.force_non_minimizable = False
 
         # Ask for a reason
         DoubleInputDialog(_('Destroying %s') % '\u200E' + \
@@ -2227,6 +2226,14 @@ class GroupchatControl(ChatControlBase):
         self.autorejoin = False
         self.got_disconnected()
 
+        con = app.connections[self.account]
+        con.get_module('Bookmarks').remove(self.room_jid)
+
+        if self._wait_for_destruction:
+            self.force_non_minimizable = True
+            self.parent_win.remove_tab(self, self.parent_win.CLOSE_COMMAND)
+            self.force_non_minimizable = False
+
     def get_role_iter(self, role: str) -> Optional[Gtk.TreeIter]:
         try:
             ref = self._role_refs[role]
diff --git a/gajim/gtk/bookmarks.py b/gajim/gtk/bookmarks.py
index 5c95774ddda90dc2e4fe58307a66265bf5602710..407cc81370ef191e2e68943791dda8f706b20534 100644
--- a/gajim/gtk/bookmarks.py
+++ b/gajim/gtk/bookmarks.py
@@ -21,8 +21,6 @@ from gajim.common import app
 from gajim.common import helpers
 from gajim.common.i18n import _
 
-from gajim import gui_menu_builder
-
 from gajim.gtk.dialogs import ErrorDialog
 from gajim.gtk.util import get_builder
 
@@ -207,7 +205,6 @@ class ManageBookmarksWindow:
                 con.get_module('Bookmarks').bookmarks[jid] = bmdict
 
             con.get_module('Bookmarks').store_bookmarks()
-            gui_menu_builder.build_bookmark_menu(acct)
         self.window.destroy()
 
     def on_cancel_button_clicked(self, widget):