diff --git a/src/conversationsadapter.cpp b/src/conversationsadapter.cpp
index 02114eb3a9bd5163d0ddbc275c67e7f3bcca9f5f..69d46f9197695cc598572c9a9f7b0de7b983e01b 100644
--- a/src/conversationsadapter.cpp
+++ b/src/conversationsadapter.cpp
@@ -138,6 +138,7 @@ ConversationsAdapter::accountChangedSetUp(const QString &accountId)
     LRCInstance::getCurrentConversationModel()->setFilter(accountInfo.profileInfo.type);
     updateConversationsFilterWidget();
 
+    disconnectConversationModel();
     connectConversationModel();
 }
 
@@ -178,22 +179,20 @@ ConversationsAdapter::setConversationFilter(lrc::api::profile::Type filter)
     LRCInstance::getCurrentConversationModel()->setFilter(currentTypeFilter_);
 }
 
+void
+ConversationsAdapter::refill()
+{
+    if (conversationSmartListModel_)
+        conversationSmartListModel_->fillConversationsList();
+}
+
+
 bool
-ConversationsAdapter::connectConversationModel()
+ConversationsAdapter::connectConversationModel(bool updateFilter)
 {
     // Signal connections
     auto currentConversationModel = LRCInstance::getCurrentConversationModel();
 
-    QObject::disconnect(modelSortedConnection_);
-    QObject::disconnect(modelUpdatedConnection_);
-    QObject::disconnect(filterChangedConnection_);
-    QObject::disconnect(newConversationConnection_);
-    QObject::disconnect(conversationRemovedConnection_);
-    QObject::disconnect(conversationClearedConnection);
-    QObject::disconnect(interactionRemovedConnection_);
-    QObject::disconnect(searchStatusChangedConnection_);
-    QObject::disconnect(searchResultUpdatedConnection_);
-
     modelSortedConnection_ = QObject::connect(currentConversationModel,
                                               &lrc::api::ConversationModel::modelSorted,
                                               [this]() {
@@ -271,10 +270,23 @@ ConversationsAdapter::connectConversationModel()
         QMetaObject::invokeMethod(qmlObj_, "updateConversationSmartListView");
     });
 
-    currentConversationModel->setFilter("");
+    if (updateFilter) currentConversationModel->setFilter("");
     return true;
 }
 
+void
+ConversationsAdapter::disconnectConversationModel()
+{
+    QObject::disconnect(modelSortedConnection_);
+    QObject::disconnect(modelUpdatedConnection_);
+    QObject::disconnect(filterChangedConnection_);
+    QObject::disconnect(conversationRemovedConnection_);
+    QObject::disconnect(conversationClearedConnection);
+    QObject::disconnect(interactionRemovedConnection_);
+    QObject::disconnect(searchStatusChangedConnection_);
+    QObject::disconnect(searchResultUpdatedConnection_);
+}
+
 void
 ConversationsAdapter::updateConversationForNewContact(const QString &convUid)
 {
diff --git a/src/conversationsadapter.h b/src/conversationsadapter.h
index 1c7178485d1616e4f9bd38265815f431befcfa5b..19cad97f438a7f3974bb4d361594c5b8c32e8a93 100644
--- a/src/conversationsadapter.h
+++ b/src/conversationsadapter.h
@@ -33,12 +33,14 @@ public:
     explicit ConversationsAdapter(QObject *parent = nullptr);
     ~ConversationsAdapter();
 
-    Q_INVOKABLE bool connectConversationModel();
+    Q_INVOKABLE bool connectConversationModel(bool updateFilter = true);
+    Q_INVOKABLE void disconnectConversationModel();
     Q_INVOKABLE void selectConversation(const QString &accountId,
                                         const QString &convUid,
                                         bool preventSendingSignal = true);
     Q_INVOKABLE void selectConversation(const QString &uid);
     Q_INVOKABLE void deselectConversation();
+    Q_INVOKABLE void refill();
     Q_INVOKABLE void accountChangedSetUp(const QString &accountId);
     Q_INVOKABLE void updateConversationsFilterWidget();
     Q_INVOKABLE void setConversationFilter(const QString &type);
diff --git a/src/lrcinstance.h b/src/lrcinstance.h
index 8e7a618e60c9c5943b66ae13dfe62a6b04f800a6..1da63c1f1d7c7e287b9acd4ff230c5b79df360b3 100644
--- a/src/lrcinstance.h
+++ b/src/lrcinstance.h
@@ -270,6 +270,8 @@ public:
     static void
     setSelectedAccountId(const QString &accountId = {})
     {
+        if (accountId == instance().selectedAccountId_)
+            return; // No need to select current selected account
         instance().selectedAccountId_ = accountId;
 
         // Last selected account should be set as preferred.
diff --git a/src/mainview/MainView.qml b/src/mainview/MainView.qml
index a553fbed9c881025f2e88042affe1b382ccc2e12..1ab5a3fc06cda8b2d43f8ab102827aae32483681 100644
--- a/src/mainview/MainView.qml
+++ b/src/mainview/MainView.qml
@@ -117,9 +117,14 @@ Window {
                 mainViewStack.push(settingsView, StackView.Immediate)
                 sidePanelViewStack.push(leftPanelSettingsView, StackView.Immediate)
             }
+            ConversationsAdapter.disconnectConversationModel()
 
         } else {
 
+            ConversationsAdapter.connectConversationModel(false)
+            ConversationsAdapter.refill() // to be sure to have latest informations
+            mainViewWindowSidePanel.forceUpdateConversationSmartListView()
+
             if (!sidePanelHidden) {
                 sidePanelViewStack.pop(mainViewWindowSidePanel, StackView.Immediate)
                 mainViewStack.pop(StackView.Immediate)
diff --git a/src/settingsview/components/CurrentAccountSettingsScrollPage.qml b/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
index cefcc09de78ae29154cc5d7c5f35188cd75ac1b3..f885ddc7a440d2c3fa0896a505f84256dae579c5 100644
--- a/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
+++ b/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
@@ -128,6 +128,7 @@ Rectangle {
     Connections {
         id: accountConnections_ContactModel
         target: ClientWrapper.contactModel
+        enabled: accountViewRect.visible
 
         function onModelUpdated(uri, needsSorted) {
             updateAndShowBannedContactsSlot()
@@ -145,6 +146,7 @@ Rectangle {
     Connections {
         id: accountConnections_DeviceModel
         target: ClientWrapper.deviceModel
+        enabled: accountViewRect.visible
 
         function onDeviceAdded(id) {
             updateAndShowDevicesSlot()