diff --git a/src/jamidht/conversation.cpp b/src/jamidht/conversation.cpp
index 8e7ad27e3d32cd5a67ad6265c398347980474564..89676a6f6137bc4ac65f38ae71dca5f6e0f117ae 100644
--- a/src/jamidht/conversation.cpp
+++ b/src/jamidht/conversation.cpp
@@ -177,7 +177,7 @@ public:
         conversationDataPath_ = fileutils::get_data_dir() / account->getAccountID()
                                         / "conversation_data" / conversationId;
         activeCallsPath_ = conversationDataPath_ / ConversationMapKeys::ACTIVE_CALLS;
-        for (const auto& c: repository_->convCommitToMap(commits))
+        for (const auto& c: repository_->convCommitsToMap(commits))
             updateActiveCalls(c);
         init();
     }
@@ -276,7 +276,7 @@ public:
                 convcommits.emplace_back(*commit);
             }
         }
-        announce(repository_->convCommitToMap(convcommits));
+        announce(repository_->convCommitsToMap(convcommits));
     }
 
     /**
@@ -838,7 +838,7 @@ Conversation::Impl::loadMessages(const LogOptions& options)
         [](auto, auto, auto) { return false; },
         options.from,
         options.logIfNotFound);
-    return repository_->convCommitToMap(commits);
+    return repository_->convCommitsToMap(commits);
 }
 
 std::vector<libjami::SwarmMessage>
@@ -895,15 +895,18 @@ Conversation::Impl::loadMessages2(const LogOptions& options, History* optHistory
             return CallbackResult::Ok; // Continue
         },
         [&](auto&& cc) {
-            std::map<std::string, std::string> map = *repository_->convCommitToMap(cc);
-            if (map.find("reply-to") != map.end()) {
-                replies.emplace_back(map.at("reply-to"));
+            auto optMessage = repository_->convCommitToMap(cc);
+            if (!optMessage.has_value())
+                return;
+            auto message = optMessage.value();
+            if (message.find("reply-to") != message.end()) {
+                replies.emplace_back(message.at("reply-to"));
             }
-            auto it = std::find(replies.begin(), replies.end(), map.at("id"));
+            auto it = std::find(replies.begin(), replies.end(), message.at("id"));
             if (it != replies.end()) {
                 replies.erase(it);
             }
-            auto added = addToHistory({map}, false, optHistory);
+            auto added = addToHistory({message}, false, optHistory);
             ret.insert(ret.end(), added.begin(), added.end());
         },
         [](auto, auto, auto) { return false; },
@@ -1609,7 +1612,7 @@ Conversation::Impl::mergeHistory(const std::string& uri)
     }
 
     JAMI_DEBUG("Successfully merge history with {:s}", uri);
-    auto result = repository_->convCommitToMap(newCommits);
+    auto result = repository_->convCommitsToMap(newCommits);
     for (const auto& commit : result) {
         auto it = commit.find("type");
         if (it != commit.end() && it->second == "member") {
@@ -2400,9 +2403,8 @@ Conversation::search(uint32_t req,
                     return CallbackResult::Ok; // Continue
                 },
                 [&](auto&& cc) {
-                    sthis->pimpl_->addToHistory({*sthis->pimpl_->repository_->convCommitToMap(cc)},
-                                                false,
-                                                &history);
+                    if (auto optMessage = sthis->pimpl_->repository_->convCommitToMap(cc))
+                        sthis->pimpl_->addToHistory({optMessage.value()}, false, &history);
                 },
                 [&](auto id, auto, auto) {
                     if (id == filter.lastId)
diff --git a/src/jamidht/conversationrepository.cpp b/src/jamidht/conversationrepository.cpp
index 1cfde5053a346cb3875c35a5a3aa3a73f871ec94..3575cca3755e4c28ebb1fe88da7a84d92783f168 100644
--- a/src/jamidht/conversationrepository.cpp
+++ b/src/jamidht/conversationrepository.cpp
@@ -3876,7 +3876,7 @@ ConversationRepository::convCommitToMap(const ConversationCommit& commit) const
 }
 
 std::vector<std::map<std::string, std::string>>
-ConversationRepository::convCommitToMap(const std::vector<ConversationCommit>& commits) const
+ConversationRepository::convCommitsToMap(const std::vector<ConversationCommit>& commits) const
 {
     std::vector<std::map<std::string, std::string>> result = {};
     result.reserve(commits.size());
diff --git a/src/jamidht/conversationrepository.h b/src/jamidht/conversationrepository.h
index 2202227dcf2a6df2f7e3fe2eca97df8d39ca9d85..3e7c517e327fba43d4d481e5b23c78b0667b29fd 100644
--- a/src/jamidht/conversationrepository.h
+++ b/src/jamidht/conversationrepository.h
@@ -407,7 +407,7 @@ public:
     /**
      * Convert ConversationCommit to MapStringString for the client
      */
-    std::vector<std::map<std::string, std::string>> convCommitToMap(
+    std::vector<std::map<std::string, std::string>> convCommitsToMap(
         const std::vector<ConversationCommit>& commits) const;
     std::optional<std::map<std::string, std::string>> convCommitToMap(
         const ConversationCommit& commit) const;