diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index a74361ed601fa5dcc8dda77c517a152c03ee29fc..7f559b5e3a59f564fa134b35c1cb1808795c260d 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -2393,6 +2393,35 @@ JamiAccount::doRegister_()
             *currentDhtStatus = newStatus;
             setRegistrationState(state);
         };
+        context.identityAnnouncedCb = [this](bool ok) {
+            if (!ok)
+                return;
+            accountManager_->startSync([this](const std::shared_ptr<dht::crypto::Certificate>& crt) {
+                if (!crt)
+                    return;
+                auto deviceId = crt->getId().toString();
+                if (accountManager_->getInfo()->deviceId == deviceId)
+                    return;
+
+                std::lock_guard<std::mutex> lk(connManagerMtx_);
+                if (!connectionManager_)
+                    connectionManager_ = std::make_unique<ConnectionManager>(*this);
+                auto channelName = "sync://" + deviceId;
+                if (connectionManager_->isConnecting(crt->getId(), channelName)) {
+                    JAMI_INFO("[Account %s] Already connecting to %s",
+                        getAccountID().c_str(),
+                        deviceId.c_str());
+                    return;
+                }
+                connectionManager_->connectDevice(crt,
+                                                channelName,
+                                                [this](std::shared_ptr<ChannelSocket> socket,
+                                                        const DeviceId& deviceId) {
+                                                    if (socket)
+                                                        syncWith(deviceId.toString(), socket);
+                                                });
+            });
+        };
 
         setRegistrationState(RegistrationState::TRYING);
         dht_->run(dhtPortUsed(), config, std::move(context));
@@ -2401,34 +2430,7 @@ JamiAccount::doRegister_()
             dht_->bootstrap(bootstrap);
 
         accountManager_->setDht(dht_);
-        accountManager_->startSync([this](const std::shared_ptr<dht::crypto::Certificate>& crt) {
-            if (!crt)
-                return;
-            auto deviceId = crt->getId().toString();
-            if (accountManager_->getInfo()->deviceId == deviceId)
-                return;
-
-            std::lock_guard<std::mutex> lk(connManagerMtx_);
-            if (!connectionManager_)
-                return;
-
-            auto channelName = "sync://" + deviceId;
-            if (connectionManager_->isConnecting(crt->getId(), channelName)) {
-                JAMI_INFO("[Account %s] Already connecting to %s",
-                    getAccountID().c_str(),
-                    deviceId.c_str());
-                return;
-            }
-            connectionManager_->connectDevice(crt,
-                                              channelName,
-                                              [this](std::shared_ptr<ChannelSocket> socket,
-                                                     const DeviceId& deviceId) {
-                                                  if (socket)
-                                                      syncWith(deviceId.toString(), socket);
-                                              });
-        });
 
-        // Init connection manager
         std::unique_lock<std::mutex> lkCM(connManagerMtx_);
         if (!connectionManager_)
             connectionManager_ = std::make_unique<ConnectionManager>(*this);
@@ -2440,14 +2442,14 @@ JamiAccount::doRegister_()
                 deviceId, [this, &accept](const std::shared_ptr<dht::crypto::Certificate>& cert) {
                     dht::InfoHash peer_account_id;
                     auto res = accountManager_->onPeerCertificate(cert,
-                                                                  dhtPublicInCalls_,
-                                                                  peer_account_id);
+                                                                dhtPublicInCalls_,
+                                                                peer_account_id);
                     if (res)
                         JAMI_INFO("Accepting ICE request from account %s",
-                                  peer_account_id.toString().c_str());
+                                peer_account_id.toString().c_str());
                     else
                         JAMI_INFO("Discarding ICE request from account %s",
-                                  peer_account_id.toString().c_str());
+                                peer_account_id.toString().c_str());
                     accept.set_value(res);
                 });
             fut.wait();