diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index 97db9b72cc91018ae42d3718d6791e862005a852..cb1b3a5639f371b7813afec181098512c1951769 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -936,10 +936,11 @@ JamiAccount::loadConfig()
         std::error_code ec;
         std::filesystem::remove(cachePath_ / "dhtproxy", ec);
     }
-    loadAccount(config().archive_password_scheme,
-                config().archive_password,
-                config().archive_pin,
-                config().archive_path);
+    auto credentials = consumeConfigCredentials();
+    loadAccount(credentials.archive_password_scheme,
+                credentials.archive_password,
+                credentials.archive_pin,
+                credentials.archive_path);
 }
 
 bool
diff --git a/src/jamidht/jamiaccount.h b/src/jamidht/jamiaccount.h
index 347deb409a5941c8dea2950ad39416dfa985a13c..09d72334b4c4d7b7dfe02cc9730a1029e9804e36 100644
--- a/src/jamidht/jamiaccount.h
+++ b/src/jamidht/jamiaccount.h
@@ -133,6 +133,12 @@ public:
         return *static_cast<const JamiAccountConfig*>(&Account::config());
     }
 
+    JamiAccountConfig::Credentials
+    consumeConfigCredentials() {
+        auto conf = static_cast<JamiAccountConfig*>(config_.get());
+        return std::move(conf->credentials);
+    }
+
     void loadConfig() override;
 
     /**
diff --git a/src/jamidht/jamiaccount_config.cpp b/src/jamidht/jamiaccount_config.cpp
index 552d2f66b600b60a910cbe753207e31f324322fd..aa841b267c0479e384112533702cc4030f92147f 100644
--- a/src/jamidht/jamiaccount_config.cpp
+++ b/src/jamidht/jamiaccount_config.cpp
@@ -207,11 +207,11 @@ JamiAccountConfig::fromMap(const std::map<std::string, std::string>& details)
     parseBool(details, libjami::Account::ConfProperties::DHT::PUBLIC_IN_CALLS, dhtPublicInCalls);
     // parseString(details, libjami::Account::ConfProperties::USERNAME, username);
 
-    parseString(details, libjami::Account::ConfProperties::ARCHIVE_PASSWORD, archive_password);
-    parseString(details, libjami::Account::ConfProperties::ARCHIVE_PASSWORD_SCHEME, archive_password_scheme);
-    parseString(details, libjami::Account::ConfProperties::ARCHIVE_PIN, archive_pin);
-    std::transform(archive_pin.begin(), archive_pin.end(), archive_pin.begin(), ::toupper);
-    parseString(details, libjami::Account::ConfProperties::ARCHIVE_PATH, archive_path);
+    parseString(details, libjami::Account::ConfProperties::ARCHIVE_PASSWORD, credentials.archive_password);
+    parseString(details, libjami::Account::ConfProperties::ARCHIVE_PASSWORD_SCHEME, credentials.archive_password_scheme);
+    parseString(details, libjami::Account::ConfProperties::ARCHIVE_PIN, credentials.archive_pin);
+    std::transform(credentials.archive_pin.begin(), credentials.archive_pin.end(), credentials.archive_pin.begin(), ::toupper);
+    parseString(details, libjami::Account::ConfProperties::ARCHIVE_PATH, credentials.archive_path);
     parseString(details, libjami::Account::ConfProperties::DEVICE_NAME, deviceName);
 
     auto oldProxyServer = proxyServer, oldProxyServerList = proxyListUrl;
diff --git a/src/jamidht/jamiaccount_config.h b/src/jamidht/jamiaccount_config.h
index 6fbda16cd80928bc78eaf223de6f62666d236259..4cbb5a4818ccb4dcd152d5c6af6d79efd4fd8d28 100644
--- a/src/jamidht/jamiaccount_config.h
+++ b/src/jamidht/jamiaccount_config.h
@@ -69,10 +69,12 @@ struct JamiAccountConfig : public SipAccountBaseConfig {
     std::string archivePath {"archive.gz"};
     bool archiveHasPassword {true};
     // not saved, only used client->daemon
-    std::string archive_password_scheme;
-    std::string archive_password;
-    std::string archive_pin;
-    std::string archive_path;
+    struct Credentials {
+        std::string archive_password_scheme;
+        std::string archive_password;
+        std::string archive_pin;
+        std::string archive_path;
+    } credentials;
 
     std::string receipt {};
     std::vector<uint8_t> receiptSignature {};