diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index cc1a520dcb5a6b4796e8781ee6ab745b37925493..dd03af28db5a604eaddcc433ad68e2d300e4ebe2 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -1206,10 +1206,11 @@ JamiAccount::loadAccount(const std::string& archive_password,
                 auto details = vCard::utils::toMap(
                     std::string_view(reinterpret_cast<const char*>(payload.data()), payload.size()));
                 req.metadatas = ConversationRepository::infosFromVCard(details);
+                auto reqMap = req.toMap();
                 accountManager_->addConversationRequest(conversationId, std::move(req));
                 emitSignal<DRing::ConversationSignal::ConversationRequestReceived>(getAccountID(),
                                                                                    conversationId,
-                                                                                   req.toMap());
+                                                                                   reqMap);
             }
         },
         [this](const std::map<dht::InfoHash, KnownDevice>& devices) {
@@ -4386,13 +4387,12 @@ JamiAccount::onConversationRequest(const std::string& from, const Json::Value& v
         return;
     }
     req.received = std::time(nullptr);
+    auto reqMap = req.toMap();
     accountManager_->addConversationRequest(convId, std::move(req));
     // Note: no need to sync here because over connected devices should receives
     // the same conversation request. Will sync when the conversation will be added
 
-    emitSignal<DRing::ConversationSignal::ConversationRequestReceived>(accountID_,
-                                                                       convId,
-                                                                       req.toMap());
+    emitSignal<DRing::ConversationSignal::ConversationRequestReceived>(accountID_, convId, reqMap);
 }
 
 void