diff --git a/src/jamidht/conversation_module.cpp b/src/jamidht/conversation_module.cpp
index b349fc6e514b1d162fd17e8bf71df6c3ed4a29c7..9717578ed2c077a560c15cc20d180b6ed2a70301 100644
--- a/src/jamidht/conversation_module.cpp
+++ b/src/jamidht/conversation_module.cpp
@@ -1264,10 +1264,9 @@ ConversationModule::loadConversations()
 }
 
 void
-ConversationModule::bootstrap()
+ConversationModule::bootstrap(const std::string& convId)
 {
-    std::unique_lock<std::mutex> lk(pimpl_->conversationsMtx_);
-    for (auto& [_, conv] : pimpl_->conversations_) {
+    auto bootstrap = [&](auto& conv) {
         if (conv) {
 #ifdef LIBJAMI_TESTABLE
             conv->onBootstrapStatus(pimpl_->bootstrapCbTest_);
@@ -1275,6 +1274,17 @@ ConversationModule::bootstrap()
             conv->bootstrap(
                 std::bind(&ConversationModule::Impl::bootstrapCb, pimpl_.get(), conv->id()));
         }
+    };
+    std::unique_lock<std::mutex> lk(pimpl_->conversationsMtx_);
+    if (convId.empty()) {
+        for (auto& [_, conv] : pimpl_->conversations_) {
+            bootstrap(conv);
+        }
+    } else {
+        auto it = pimpl_->conversations_.find(convId);
+        if (it != pimpl_->conversations_.end()) {
+            bootstrap(it->second);
+        }
     }
 }
 void
diff --git a/src/jamidht/conversation_module.h b/src/jamidht/conversation_module.h
index 59d28770c0a9619812c0e42d6ffb436fc5661949..dddedb6ac7f5cc459ec4534b0c22375877edeeab 100644
--- a/src/jamidht/conversation_module.h
+++ b/src/jamidht/conversation_module.h
@@ -80,7 +80,7 @@ public:
     /**
      * Bootstrap swarm managers to other peers
      */
-    void bootstrap();
+    void bootstrap(const std::string& convId = "");
 
     /**
      * Clear not removed fetch