diff --git a/test/unitTest/conversation/call.cpp b/test/unitTest/conversation/call.cpp
index 85a3162955e104eeaf0bc3fc8cbf66c77b07ef67..67624ddd9c1170a77abfa46c5bb79d4ec95cef34 100644
--- a/test/unitTest/conversation/call.cpp
+++ b/test/unitTest/conversation/call.cpp
@@ -43,6 +43,7 @@ struct ConvData
     bool conferenceChanged {false};
     bool conferenceRemoved {false};
     std::string hostState {};
+    std::string state {};
     std::vector<std::map<std::string, std::string>> messages {};
 };
 
@@ -220,6 +221,10 @@ ConversationCallTest::connectSignals()
                     else if (details["PEER_NUMBER"].find(carlaUri) != std::string::npos)
                         carlaData_.hostState = state;
                 }
+            } else if (accountId == bobId) {
+                bobData_.state = state;
+            } else if (accountId == carlaId) {
+                carlaData_.state = state;
             }
             cv.notify_one();
         }));
@@ -439,12 +444,12 @@ ConversationCallTest::testRejoinCall()
     aliceData_.conferenceChanged = false;
     auto bobCall = libjami::placeCallWithMedia(bobId, destination, {});
     cv.wait_for(lk, 30s, [&]() {
-        return aliceData_.conferenceChanged && bobData_.hostState == "CURRENT";
+        return aliceData_.conferenceChanged && bobData_.hostState == "CURRENT"  && bobData_.state == "CURRENT";
     });
     aliceData_.conferenceChanged = false;
     libjami::placeCallWithMedia(carlaId, destination, {});
     cv.wait_for(lk, 30s, [&]() {
-        return aliceData_.conferenceChanged && carlaData_.hostState == "CURRENT";
+        return aliceData_.conferenceChanged && carlaData_.hostState == "CURRENT" && carlaData_.state == "CURRENT";
     });
 
     CPPUNIT_ASSERT(libjami::getParticipantList(aliceId, confId).size() == 3);
diff --git a/test/unitTest/conversation/conversation.cpp b/test/unitTest/conversation/conversation.cpp
index 3d73603f0feb11601a7db624f3cbeb9cccd1818b..c13b53caf1e29dd18def438d1a049ec11975cb81 100644
--- a/test/unitTest/conversation/conversation.cpp
+++ b/test/unitTest/conversation/conversation.cpp
@@ -588,28 +588,28 @@ ConversationTest::testMergeAfterMigration()
     auto carlaUri = carlaAccount->getUsername();
     aliceAccount->trackBuddyPresence(carlaUri, true);
     carlaAccount->trackBuddyPresence(aliceUri, true);
-    auto convId = libjami::startConversation(aliceId);
 
     std::mutex mtx;
     std::unique_lock<std::mutex> lk {mtx};
     std::condition_variable cv;
     std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers;
-    bool conversationReady = false;
+    bool conversationReady = false, conversationAliceReady = false;
     confHandlers.insert(libjami::exportable_callback<libjami::ConversationSignal::ConversationReady>(
         [&](const std::string& accountId, const std::string& /* conversationId */) {
-            if (accountId == carlaId) {
+            if (accountId == aliceId)
+                conversationAliceReady = true;
+            else if (accountId == carlaId)
                 conversationReady = true;
-                cv.notify_one();
-            }
+            cv.notify_one();
         }));
     std::string carlaGotMessage, aliceGotMessage;
     confHandlers.insert(libjami::exportable_callback<libjami::ConversationSignal::MessageReceived>(
         [&](const std::string& accountId,
             const std::string& conversationId,
             std::map<std::string, std::string> message) {
-            if (accountId == carlaId && conversationId == convId) {
+            if (accountId == carlaId) {
                 carlaGotMessage = message["id"];
-            } else if (accountId == aliceId && conversationId == convId) {
+            } else if (accountId == aliceId) {
                 aliceGotMessage = message["id"];
             }
             cv.notify_one();
@@ -628,13 +628,20 @@ ConversationTest::testMergeAfterMigration()
             }));
     libjami::registerSignalHandlers(confHandlers);
 
+    auto convId = libjami::startConversation(aliceId);
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&] { return conversationAliceReady; }));
+
+    aliceGotMessage = "";
     aliceAccount->convModule()->addConversationMember(convId, carlaUri, false);
+    CPPUNIT_ASSERT(cv.wait_for(lk, 60s, [&] { return !aliceGotMessage.empty(); }));
 
     // Cp conversations & convInfo
     auto repoPathAlice = fileutils::get_data_dir() + DIR_SEPARATOR_STR
                          + aliceAccount->getAccountID() + DIR_SEPARATOR_STR + "conversations";
     auto repoPathCarla = fileutils::get_data_dir() + DIR_SEPARATOR_STR
                          + carlaAccount->getAccountID() + DIR_SEPARATOR_STR + "conversations";
+    auto p = std::filesystem::path(repoPathCarla);
+    fileutils::recursive_mkdir(p.parent_path());
     std::filesystem::copy(repoPathAlice, repoPathCarla, std::filesystem::copy_options::recursive);
     auto ciPathAlice = fileutils::get_data_dir() + DIR_SEPARATOR_STR + aliceAccount->getAccountID()
                        + DIR_SEPARATOR_STR + "convInfo";
@@ -648,6 +655,8 @@ ConversationTest::testMergeAfterMigration()
     repo.join();
 
     std::filesystem::remove_all(repoPathAlice);
+    p = std::filesystem::path(repoPathAlice);
+    fileutils::recursive_mkdir(p.parent_path());
     std::filesystem::copy(repoPathCarla, repoPathAlice, std::filesystem::copy_options::recursive);
 
     // Makes different heads
diff --git a/test/unitTest/ice/ice_media_cand_exchange.cpp b/test/unitTest/ice/ice_media_cand_exchange.cpp
index fe94ccc515721502caf35e7891490826e77ceb31..210edc87ef956edb5718892e1ca7d0f8679830ab 100644
--- a/test/unitTest/ice/ice_media_cand_exchange.cpp
+++ b/test/unitTest/ice/ice_media_cand_exchange.cpp
@@ -67,7 +67,7 @@ struct CallData
     std::vector<Signal> signals_;
     std::condition_variable cv_ {};
     std::mutex mtx_;
-    bool accountRegistered_ {false};
+    bool deviceAnnounced_ {false};
     bool upnpEnabled_ {false};
     bool turnEnabled_ {false};
     IpAddr dest_ {};
@@ -478,13 +478,13 @@ IceMediaCandExchangeTest::setupAccounts(CallData& aliceData,
                 }
 
                 auto details = account->getVolatileAccountDetails();
-                auto daemonStatus = details[libjami::Account::ConfProperties::Registration::STATUS];
+                auto deviceAnnounced = details[libjami::Account::VolatileProperties::DEVICE_ANNOUNCED];
 
                 if (accountId == aliceData.accountId_) {
-                    aliceData.accountRegistered_ = daemonStatus == "REGISTERED";
+                    aliceData.deviceAnnounced_ = deviceAnnounced == "true";
                     aliceData.cv_.notify_one();
                 } else if (accountId == bobData.accountId_) {
-                    bobData.accountRegistered_ = daemonStatus == "REGISTERED";
+                    bobData.deviceAnnounced_ = deviceAnnounced == "true";
                     bobData.cv_.notify_one();
                 } else {
                     JAMI_ERR("Account with ID [%s] is unknown", accountId.c_str());
@@ -523,7 +523,7 @@ IceMediaCandExchangeTest::configureAccount(CallData& user, const char* accountTy
               user.accountId_.c_str());
     std::unique_lock<std::mutex> lock {user.mtx_};
     CPPUNIT_ASSERT(
-        user.cv_.wait_for(lock, std::chrono::seconds(60), [&] { return user.accountRegistered_; }));
+        user.cv_.wait_for(lock, std::chrono::seconds(60), [&] { return user.deviceAnnounced_; }));
 }
 
 void
@@ -792,8 +792,8 @@ IceMediaCandExchangeTest::jami_account_with_turn()
     JAMI_INFO("=== Begin test %s ===", __FUNCTION__);
 
     auto accountType = libjami::Account::ProtocolNames::RING;
-    setupAccounts(aliceData_, bobData_, accountType);
 
+    setupAccounts(aliceData_, bobData_, accountType);
     bobData_.turnEnabled_ = true;
     aliceData_.turnEnabled_ = true;