diff --git a/src/jamidht/conversationrepository.cpp b/src/jamidht/conversationrepository.cpp
index ee88f768087b16ef62f049e1c5bf4eea0f83e86f..d415373ffc4ba80126084b0e763329105e075a46 100644
--- a/src/jamidht/conversationrepository.cpp
+++ b/src/jamidht/conversationrepository.cpp
@@ -521,9 +521,9 @@ add_initial_files(GitRepository& repo,
  */
 std::string
 initial_commit(GitRepository& repo,
-               const std::shared_ptr<JamiAccount>& account,
-               ConversationMode mode,
-               const std::string& otherMember = "")
+                const std::shared_ptr<JamiAccount>& account,
+                ConversationMode mode,
+                const std::string& otherMember = "")
 {
     auto deviceId = std::string(account->currentDeviceId());
     auto name = account->getDisplayName();
@@ -538,8 +538,10 @@ initial_commit(GitRepository& repo,
 
     // Sign commit's buffer
     if (git_signature_new(&sig_ptr, name.c_str(), deviceId.c_str(), std::time(nullptr), 0) < 0) {
-        JAMI_ERROR("Unable to create a commit signature.");
-        return {};
+        if (git_signature_new(&sig_ptr, deviceId.c_str(), deviceId.c_str(), std::time(nullptr), 0) < 0) {
+            JAMI_ERROR("Unable to create a commit signature.");
+            return {};
+        }
     }
     GitSignature sig {sig_ptr, git_signature_free};
 
@@ -630,8 +632,11 @@ ConversationRepository::Impl::signature()
     // Sign commit's buffer
     auto deviceId = std::string(account->currentDeviceId());
     if (git_signature_new(&sig_ptr, name.c_str(), deviceId.c_str(), std::time(nullptr), 0) < 0) {
-        JAMI_ERROR("Unable to create a commit signature.");
-        return {nullptr, git_signature_free};
+        // Maybe the display name is invalid (like " ") - try without
+        if (git_signature_new(&sig_ptr, deviceId.c_str(), deviceId.c_str(), std::time(nullptr), 0) < 0) {
+            JAMI_ERROR("Unable to create a commit signature.");
+            return {nullptr, git_signature_free};
+        }
     }
     return {sig_ptr, git_signature_free};
 }
@@ -1745,19 +1750,10 @@ ConversationRepository::Impl::commit(const std::string& msg, bool verifyDevice)
 {
     if (verifyDevice && !validateDevice())
         return {};
-    auto account = account_.lock();
-    auto name = getDisplayName();
-    if (!account || name.empty())
-        return {};
-
-    git_signature* sig_ptr = nullptr;
-    // Sign commit's buffer
-    auto deviceId = std::string(account->currentDeviceId());
-    if (git_signature_new(&sig_ptr, name.c_str(), deviceId.c_str(), std::time(nullptr), 0) < 0) {
-        JAMI_ERROR("Unable to create a commit signature.");
+    GitSignature sig = signature();
+    if (!sig)
         return {};
-    }
-    GitSignature sig {sig_ptr, git_signature_free};
+    auto account = account_.lock();
 
     // Retrieve current index
     git_index* index_ptr = nullptr;
@@ -2934,24 +2930,12 @@ ConversationRepository::addMember(const std::string& uri)
 std::string
 ConversationRepository::amend(const std::string& id, const std::string& msg)
 {
-    auto account = pimpl_->account_.lock();
-    if (!account)
-        return {};
-    auto deviceId = std::string(account->currentDeviceId());
-    auto name = pimpl_->getDisplayName();
-    if (name.empty())
+    GitSignature sig = pimpl_->signature();
+    if (!sig)
         return {};
+    auto account = pimpl_->account_.lock();
 
-    git_signature* sig_ptr = nullptr;
     git_oid tree_id, commit_id;
-
-    // Sign commit's buffer
-    if (git_signature_new(&sig_ptr, name.c_str(), deviceId.c_str(), std::time(nullptr), 0) < 0) {
-        JAMI_ERROR("Unable to create a commit signature.");
-        return {};
-    }
-    GitSignature sig {sig_ptr, git_signature_free};
-
     git_commit* commit_ptr = nullptr;
     auto repo = pimpl_->repository();
     if (!repo || git_oid_fromstr(&tree_id, id.c_str()) < 0
diff --git a/test/unitTest/conversation/conversation.cpp b/test/unitTest/conversation/conversation.cpp
index 5df1ff206b75cc8dd60a202e4459106c38c8faec..8630f17ac5e7d3faf7e6bf9c41ce63356d69de09 100644
--- a/test/unitTest/conversation/conversation.cpp
+++ b/test/unitTest/conversation/conversation.cpp
@@ -78,6 +78,7 @@ public:
 
 private:
     void testCreateConversation();
+    void testCreateConversationInvalidDisplayName();
     void testGetConversation();
     void testGetConversationsAfterRm();
     void testRemoveInvalidConversation();
@@ -131,6 +132,7 @@ private:
 
     CPPUNIT_TEST_SUITE(ConversationTest);
     CPPUNIT_TEST(testCreateConversation);
+    CPPUNIT_TEST(testCreateConversationInvalidDisplayName);
     CPPUNIT_TEST(testGetConversation);
     CPPUNIT_TEST(testGetConversationsAfterRm);
     CPPUNIT_TEST(testRemoveInvalidConversation);
@@ -271,6 +273,59 @@ ConversationTest::testCreateConversation()
     CPPUNIT_ASSERT(deviceCrtStr == deviceCert);
 }
 
+void
+ConversationTest::testCreateConversationInvalidDisplayName()
+{
+    std::cout << "\nRunning test: " << __func__ << std::endl;
+
+    auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId);
+
+    std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers;
+    bool conversationReady = false;
+    confHandlers.insert(libjami::exportable_callback<libjami::ConversationSignal::ConversationReady>(
+        [&](const std::string& accountId, const std::string& /* conversationId */) {
+            if (accountId == aliceId) {
+                conversationReady = true;
+                cv.notify_one();
+            }
+        }));
+    bool aliceRegistered = false;
+    confHandlers.insert(
+        libjami::exportable_callback<libjami::ConfigurationSignal::VolatileDetailsChanged>(
+            [&](const std::string&, const std::map<std::string, std::string>&) {
+                auto details = aliceAccount->getVolatileAccountDetails();
+                auto daemonStatus = details[libjami::Account::ConfProperties::Registration::STATUS];
+                if (daemonStatus == "REGISTERED") {
+                    aliceRegistered = true;
+                    cv.notify_one();
+                }
+            }));
+    auto messageAliceReceived = 0;
+    confHandlers.insert(libjami::exportable_callback<libjami::ConversationSignal::MessageReceived>(
+        [&](const std::string& accountId,
+            const std::string& /* conversationId */,
+            std::map<std::string, std::string> /*message*/) {
+            if (accountId == aliceId) {
+                messageAliceReceived += 1;
+            }
+            cv.notify_one();
+        }));
+    libjami::registerSignalHandlers(confHandlers);
+
+
+    std::map<std::string, std::string> details;
+    details[ConfProperties::DISPLAYNAME] = " ";
+    libjami::setAccountDetails(aliceId, details);
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return aliceRegistered; }));
+
+    // Start conversation
+    auto convId = libjami::startConversation(aliceId);
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return conversationReady; }));
+    messageAliceReceived = 0;
+    libjami::sendMessage(aliceId, convId, "hi"s, "");
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return messageAliceReceived == 1; }));
+}
+
 void
 ConversationTest::testGetConversation()
 {