diff --git a/src/jamidht/conversationrepository.cpp b/src/jamidht/conversationrepository.cpp
index 767ca35a737ccf4e915fce1ad7ef8f60f01078e7..a390a85629ed3be56b89515bce4592b5f28058e6 100644
--- a/src/jamidht/conversationrepository.cpp
+++ b/src/jamidht/conversationrepository.cpp
@@ -2064,7 +2064,7 @@ ConversationRepository::Impl::search(const Filter& filter) const
             if (filter.type.empty() && !isSearchable) {
                 // Not searchable, at least for now
                 return;
-            } else if (contentType == filter.type) {
+            } else if (contentType == filter.type || filter.type.empty()) {
                 if (isSearchable) {
                     // If it's a text match the body, else the display name
                     auto body = contentType == "text/plain" ? content->at("body")
diff --git a/test/unitTest/conversation/conversation.cpp b/test/unitTest/conversation/conversation.cpp
index b69512d80d03fd858590e9bbc9759c6cbb8fd678..9ced2bdb6a386f837ebfc43ec280369f10fed751 100644
--- a/test/unitTest/conversation/conversation.cpp
+++ b/test/unitTest/conversation/conversation.cpp
@@ -2063,7 +2063,7 @@ ConversationTest::testUnknownModeDetected()
             const std::string& /* conversationId */,
             int code,
             const std::string& /* what */) {
-            if (code == 1)
+            if (code == 2)
                 errorDetected = true;
             cv.notify_one();
         }));
diff --git a/test/unitTest/conversation/conversationMembersEvent.cpp b/test/unitTest/conversation/conversationMembersEvent.cpp
index 4e47c28a65381c2a4d0450e1f8133a6b8645e3f6..9f9e64008b6712f7e1dc70131de04d467c523a3c 100644
--- a/test/unitTest/conversation/conversationMembersEvent.cpp
+++ b/test/unitTest/conversation/conversationMembersEvent.cpp
@@ -2448,12 +2448,16 @@ ConversationMembersEventTest::testBanUnbanGotFirstConv()
             }
             cv.notify_one();
         }));
-    auto bobMsgReceived = false, bob2MsgReceived = false;
+    auto bobMsgReceived = false, bob2MsgReceived = false, memberMessageGenerated = false;
     confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::MessageReceived>(
         [&](const std::string& accountId,
             const std::string& conversationId,
             std::map<std::string, std::string> message) {
-            if (accountId == bobId && conversationId == convId)
+            if (accountId == aliceId && conversationId == convId) {
+                auto itFind = message.find("type");
+                if (itFind != message.end() && itFind->second == "member")
+                    memberMessageGenerated = true;
+            } else if (accountId == bobId && conversationId == convId)
                 bobMsgReceived = true;
             else if (accountId == bob2Id && conversationId == convId)
                 bob2MsgReceived = true;
@@ -2469,6 +2473,7 @@ ConversationMembersEventTest::testBanUnbanGotFirstConv()
             }
             cv.notify_one();
         }));
+
     DRing::registerSignalHandlers(confHandlers);
 
     // Bob creates a second device
@@ -2511,8 +2516,8 @@ ConversationMembersEventTest::testBanUnbanGotFirstConv()
     // Bobs re-add Alice
     contactAddedBob = false, contactAddedBob2 = false;
     bobAccount->addContact(aliceUri);
+    bobAccount->sendTrustRequest(aliceUri, {});
     CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return contactAddedBob && contactAddedBob2; }));
-    std::this_thread::sleep_for(10s);
 
     // Alice can sends some messages now
     bobMsgReceived = false, bob2MsgReceived = false;
diff --git a/test/unitTest/conversation/conversationRequest.cpp b/test/unitTest/conversation/conversationRequest.cpp
index c7cf8b5744508e31b485e096e9614f1ab72d1b01..b65caef297ecf3f5fcb3411f63ac1cb9fbf2a90c 100644
--- a/test/unitTest/conversation/conversationRequest.cpp
+++ b/test/unitTest/conversation/conversationRequest.cpp
@@ -227,8 +227,7 @@ ConversationRequestTest::acceptConvReqAlsoAddContact()
     CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return requestReceived; }));
 
     DRing::acceptConversationRequest(bobId, convId2);
-    CPPUNIT_ASSERT(
-        cv.wait_for(lk, 30s, [&]() { return conversationReady == 2; }));
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return conversationReady == 2; }));
     CPPUNIT_ASSERT(bobAccount->getTrustRequests().size() == 0);
 }
 
@@ -352,9 +351,8 @@ ConversationRequestTest::testAddContact()
     CPPUNIT_ASSERT(fileutils::isDirectory(repoPath));
     CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return requestReceived; }));
     CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri));
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return conversationReady && memberMessageGenerated;
-    }));
+    CPPUNIT_ASSERT(
+        cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; }));
     auto clonedPath = fileutils::get_data_dir() + DIR_SEPARATOR_STR + bobAccount->getAccountID()
                       + DIR_SEPARATOR_STR + "conversations" + DIR_SEPARATOR_STR + convId;
     CPPUNIT_ASSERT(fileutils::isDirectory(clonedPath));
@@ -410,9 +408,8 @@ ConversationRequestTest::testAddContactDeleteAndReAdd()
     aliceAccount->sendTrustRequest(bobUri, {});
     CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return requestReceived; }));
     CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri));
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return conversationReady && memberMessageGenerated;
-    }));
+    CPPUNIT_ASSERT(
+        cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; }));
 
     // removeContact
     aliceAccount->removeContact(bobUri, false);
@@ -474,9 +471,8 @@ ConversationRequestTest::testInviteFromMessageAfterRemoved()
     aliceAccount->sendTrustRequest(bobUri, {});
     CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return requestReceived; }));
     CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri));
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return conversationReady && memberMessageGenerated;
-    }));
+    CPPUNIT_ASSERT(
+        cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; }));
 
     // removeContact
     bobAccount->removeContact(aliceUri, false);
@@ -545,14 +541,11 @@ ConversationRequestTest::testRemoveContact()
     aliceAccount->addContact(bobUri);
     aliceAccount->sendTrustRequest(bobUri, {});
     // Check created files
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return !convId.empty() && requestReceived;
-    }));
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return !convId.empty() && requestReceived; }));
     memberMessageGenerated = false;
     CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri));
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return conversationReady && memberMessageGenerated;
-    }));
+    CPPUNIT_ASSERT(
+        cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; }));
 
     conversationRemovedBob = false;
     bobAccount->removeContact(aliceUri, false);
@@ -565,7 +558,8 @@ ConversationRequestTest::testRemoveContact()
     aliceAccount->removeContact(bobUri, false);
     CPPUNIT_ASSERT(cv.wait_for(lk, 20s, [&]() { return conversationRemovedAlice; }));
 
-    std::this_thread::sleep_for(10s); // There is no signal, but daemon should then erase the repository
+    std::this_thread::sleep_for(
+        10s); // There is no signal, but daemon should then erase the repository
 
     auto repoPath = fileutils::get_data_dir() + DIR_SEPARATOR_STR + aliceAccount->getAccountID()
                     + DIR_SEPARATOR_STR + "conversations" + DIR_SEPARATOR_STR + convId;
@@ -628,19 +622,15 @@ ConversationRequestTest::testRemoveSelfDoesntRemoveConversation()
     aliceAccount->addContact(bobUri);
     aliceAccount->sendTrustRequest(bobUri, {});
     // Check created files
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return !convId.empty() && requestReceived;
-    }));
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return !convId.empty() && requestReceived; }));
     memberMessageGenerated = false;
     CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri));
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return conversationReady && memberMessageGenerated;
-    }));
+    CPPUNIT_ASSERT(
+        cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; }));
 
     conversationRemoved = false;
     aliceAccount->removeContact(aliceUri, false);
-    CPPUNIT_ASSERT(
-        !cv.wait_for(lk, 10s, [&]() { return conversationRemoved; }));
+    CPPUNIT_ASSERT(!cv.wait_for(lk, 10s, [&]() { return conversationRemoved; }));
     auto repoPath = fileutils::get_data_dir() + DIR_SEPARATOR_STR + aliceAccount->getAccountID()
                     + DIR_SEPARATOR_STR + "conversations" + DIR_SEPARATOR_STR + convId;
     CPPUNIT_ASSERT(fileutils::isDirectory(repoPath));
@@ -698,14 +688,11 @@ ConversationRequestTest::testRemoveConversationUpdateContactDetails()
     aliceAccount->addContact(bobUri);
     aliceAccount->sendTrustRequest(bobUri, {});
     // Check created files
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return !convId.empty() && requestReceived;
-    }));
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return !convId.empty() && requestReceived; }));
     memberMessageGenerated = false;
     CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri));
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return conversationReady && memberMessageGenerated;
-    }));
+    CPPUNIT_ASSERT(
+        cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; }));
 
     conversationRemoved = false;
     DRing::removeConversation(bobId, convId);
@@ -765,13 +752,11 @@ ConversationRequestTest::testBanContact()
     memberMessageGenerated = false;
     CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri));
     CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return conversationReady; }));
-    CPPUNIT_ASSERT(
-        cv.wait_for(lk, 30s, [&]() { return memberMessageGenerated; }));
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return memberMessageGenerated; }));
 
     memberMessageGenerated = false;
     bobAccount->removeContact(aliceUri, true);
-    CPPUNIT_ASSERT(
-        !cv.wait_for(lk, 30s, [&]() { return memberMessageGenerated; }));
+    CPPUNIT_ASSERT(!cv.wait_for(lk, 30s, [&]() { return memberMessageGenerated; }));
     auto repoPath = fileutils::get_data_dir() + DIR_SEPARATOR_STR + bobAccount->getAccountID()
                     + DIR_SEPARATOR_STR + "conversations" + DIR_SEPARATOR_STR + convId;
     CPPUNIT_ASSERT(fileutils::isDirectory(repoPath));
@@ -879,9 +864,8 @@ ConversationRequestTest::testAddOfflineContactThenConnect()
     CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(60), [&]() { return requestReceived; }));
     memberMessageGenerated = false;
     CPPUNIT_ASSERT(carlaAccount->acceptTrustRequest(aliceUri));
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return conversationReady && memberMessageGenerated;
-    }));
+    CPPUNIT_ASSERT(
+        cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; }));
 }
 
 void
@@ -996,6 +980,14 @@ ConversationRequestTest::testRemoveContactRemoveSyncing()
             }
             cv.notify_one();
         }));
+    bool contactRemoved = false;
+    confHandlers.insert(DRing::exportable_callback<DRing::ConfigurationSignal::ContactRemoved>(
+        [&](const std::string& accountId, const std::string& uri, bool) {
+            if (accountId == bobId && uri == aliceUri) {
+                contactRemoved = true;
+            }
+            cv.notify_one();
+        }));
     DRing::registerSignalHandlers(confHandlers);
     aliceAccount->addContact(bobUri);
     aliceAccount->sendTrustRequest(bobUri, {});
@@ -1007,6 +999,7 @@ ConversationRequestTest::testRemoveContactRemoveSyncing()
 
     CPPUNIT_ASSERT(DRing::getConversations(bobId).size() == 1);
     bobAccount->removeContact(aliceUri, false);
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return contactRemoved; }));
 
     CPPUNIT_ASSERT(DRing::getConversations(bobId).size() == 0);
 }
@@ -1250,9 +1243,7 @@ ConversationRequestTest::testRemoveContactRemoveTrustRequest()
     aliceAccount->addContact(bobUri);
     aliceAccount->sendTrustRequest(bobUri, {});
     CPPUNIT_ASSERT(cv.wait_for(lk, 5s, [&]() { return !convId.empty(); }));
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return requestB1Received && requestB2Received;
-    }));
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return requestB1Received && requestB2Received; }));
 
     // Bob1 accepts, both device should get it
     CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri));
@@ -1262,11 +1253,9 @@ ConversationRequestTest::testRemoveContactRemoveTrustRequest()
 
     // Bob2 remove Alice ; Bob1 should not have any trust requests
     bob2Account->removeContact(aliceUri, false);
-    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() {
-        return conversationB1Removed && conversationB2Removed;
-    }));
-    std::this_thread::sleep_for(
-        10s); // Wait a bit to ensure that everything is update (via synced)
+    CPPUNIT_ASSERT(
+        cv.wait_for(lk, 30s, [&]() { return conversationB1Removed && conversationB2Removed; }));
+    std::this_thread::sleep_for(10s); // Wait a bit to ensure that everything is update (via synced)
     CPPUNIT_ASSERT(bobAccount->getTrustRequests().size() == 0);
     CPPUNIT_ASSERT(bob2Account->getTrustRequests().size() == 0);
 }