diff --git a/src/connectivity/connectionmanager.cpp b/src/connectivity/connectionmanager.cpp
index 85afa5c0847e09da811c7e3863d5100f3b34d2b6..d7c09680160e8a5742674d18070aae5918d0effc 100644
--- a/src/connectivity/connectionmanager.cpp
+++ b/src/connectivity/connectionmanager.cpp
@@ -1363,8 +1363,6 @@ ConnectionManager::Impl::getIceOptions() const noexcept
     IceTransportOptions opts;
     opts.upnpEnable = getUPnPActive();
 
-    if (config_->stunEnabled_)
-        opts.stunServers.emplace_back(StunServerInfo().setUri(config_->stunServer_));
     if (config_->turnEnabled_) {
         auto cached = false;
         std::lock_guard<std::mutex> lk(config_->cachedTurnMutex_);
diff --git a/src/connectivity/connectionmanager.h b/src/connectivity/connectionmanager.h
index d2fc5d037d69ba18d68366826949e4433f8b5bcf..01120178657ba59bd06e51818999fbcfcb1f21ec 100644
--- a/src/connectivity/connectionmanager.h
+++ b/src/connectivity/connectionmanager.h
@@ -250,18 +250,6 @@ public:
      * ie: if it is able to make port mappings
      */
     bool getUPnPActive() const;
-
-    /**
-     * Determine if STUN public address resolution is required to register this account. In this
-     * case a STUN server hostname must be specified.
-     */
-    bool stunEnabled_ {false};
-
-    /**
-     * The STUN server hostname (optional), used to provide the public IP address in case the
-     * softphone stay behind a NAT.
-     */
-    std::string stunServer_ {};
     /**
      * The TURN server hostname (optional), used to provide the public IP address in case the
      * softphone stay behind a NAT.
diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index 350c8f84e88fdd203d7d954f0f4530f5381c38a5..84b31c04200d3259c0b24b2fe96a1c57ce7aa1ec 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -895,6 +895,17 @@ JamiAccount::loadConfig()
     registeredName_ = config().registeredName;
     if (accountManager_)
         accountManager_->setAccountDeviceName(config().deviceName);
+    if (connectionManager_) {
+        if (auto c = connectionManager_->getConfig()) {
+            // Update connectionManager's config
+            c->upnpEnabled_ = config().upnpEnabled;
+            c->turnEnabled_ = config().turnEnabled;
+            c->turnServer_ = config().turnServer;
+            c->turnServerUserName_ = config().turnServerUserName;
+            c->turnServerPwd_ = config().turnServerPwd;
+            c->turnServerRealm_ = config().turnServerRealm;
+        }
+    }
     try {
         auto str = fileutils::loadCacheTextFile(cachePath_ + DIR_SEPARATOR_STR "dhtproxy",
                                                 std::chrono::hours(24 * 7));
@@ -4193,6 +4204,8 @@ JamiAccount::initConnectionManager()
                                                           config().turnEnabled);
         connectionManagerConfig->cachePath = cachePath_;
         connectionManager_ = std::make_unique<ConnectionManager>(connectionManagerConfig);
+        channelHandlers_[Uri::Scheme::SWARM]
+            = std::make_unique<SwarmChannelHandler>(shared(), *connectionManager_.get());
         channelHandlers_[Uri::Scheme::GIT]
             = std::make_unique<ConversationChannelHandler>(shared(), *connectionManager_.get());
         channelHandlers_[Uri::Scheme::SYNC]
diff --git a/src/sip/sipaccountbase.cpp b/src/sip/sipaccountbase.cpp
index 9fa372d4fbbce1d97311da9ef4548f8f294e4f25..f7fe7ad93897b8f9fa6e1642e4aaa7b9b4843957 100644
--- a/src/sip/sipaccountbase.cpp
+++ b/src/sip/sipaccountbase.cpp
@@ -252,8 +252,6 @@ SIPAccountBase::getIceOptions() const noexcept
     IceTransportOptions opts;
     opts.upnpEnable = getUPnPActive();
 
-    // if (config().stunEnabled)
-    //     opts.stunServers.emplace_back(StunServerInfo().setUri(stunServer_));
     if (config().turnEnabled && turnCache_) {
         auto turnAddr = turnCache_->getResolvedTurn();
         if (turnAddr != std::nullopt) {