diff --git a/daemon/bin/dbus/configurationmanager-introspec.xml b/daemon/bin/dbus/configurationmanager-introspec.xml
index ca19ba2646dab96b9aa5ecba2810c6733923a57f..819ad3b22a464572273a5b5ad9dc87c661006674 100644
--- a/daemon/bin/dbus/configurationmanager-introspec.xml
+++ b/daemon/bin/dbus/configurationmanager-introspec.xml
@@ -8,6 +8,8 @@
 
         <method name="getAccountTemplate" tp:name-for-bindings="getAccountTemplate">
             <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="MapStringString"/>
+            <arg type="s" name="accountType" direction="in" tp:type="String">
+            </arg>
             <arg type="a{ss}" name="details" direction="out" tp:type="String_String_Map">
             </arg>
         </method>
@@ -386,7 +388,7 @@
            <arg type="b" name="result" direction="out"></arg>
            <arg type="s" name="accountID" direction="in"></arg>
            <arg type="u" name="codecId" direction="in"></arg>
-           <annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="MapStringString"/>
+           <annotation name="org.qtproject.QtDBus.QtTypeName.In2" value="MapStringString"/>
            <arg type="a{ss}" name="details" direction="in" tp:type="String_String_Map">
            </arg>
        </method>
diff --git a/daemon/bin/dbus/dbusconfigurationmanager.cpp b/daemon/bin/dbus/dbusconfigurationmanager.cpp
index 0587b7251ea75762a970723619fb4d3d3bc1f56a..7cb4a9ea6242b3a5a478c28bcfb456c637e41571 100644
--- a/daemon/bin/dbus/dbusconfigurationmanager.cpp
+++ b/daemon/bin/dbus/dbusconfigurationmanager.cpp
@@ -56,9 +56,9 @@ DBusConfigurationManager::setAccountDetails(const std::string& accountID, const
 }
 
 auto
-DBusConfigurationManager::getAccountTemplate() -> decltype(DRing::getAccountTemplate())
+DBusConfigurationManager::getAccountTemplate(const std::string& accountType) -> decltype(DRing::getAccountTemplate(accountType))
 {
-    return DRing::getAccountTemplate();
+    return DRing::getAccountTemplate(accountType);
 }
 
 auto
diff --git a/daemon/bin/dbus/dbusconfigurationmanager.h b/daemon/bin/dbus/dbusconfigurationmanager.h
index 7368abb518e992313ca681d745bf9630765f84d5..a72c094caba2822e600c1917e8e5580b91c9042b 100644
--- a/daemon/bin/dbus/dbusconfigurationmanager.h
+++ b/daemon/bin/dbus/dbusconfigurationmanager.h
@@ -68,7 +68,7 @@ class DBusConfigurationManager :
         std::map<std::string, std::string> getAccountDetails(const std::string& accountID);
         std::map<std::string, std::string> getVolatileAccountDetails(const std::string& accountID);
         void setAccountDetails(const std::string& accountID, const std::map<std::string, std::string>& details);
-        std::map<std::string, std::string> getAccountTemplate();
+        std::map<std::string, std::string> getAccountTemplate(const std::string& accountType);
         std::string addAccount(const std::map<std::string, std::string>& details);
         void removeAccount(const std::string& accoundID);
         std::vector<std::string> getAccountList();
diff --git a/daemon/src/client/configurationmanager.cpp b/daemon/src/client/configurationmanager.cpp
index 2fa897440dac681cdef6a75fa7041fc8b681a959..9ffef7f813ea36dce4f7dd19d462a53ae10fca11 100644
--- a/daemon/src/client/configurationmanager.cpp
+++ b/daemon/src/client/configurationmanager.cpp
@@ -45,10 +45,15 @@
 #include "fileutils.h"
 #include "ip_utils.h"
 #include "sip/sipaccount.h"
+#include "ringdht/ringaccount.h"
+#if HAVE_IAX
+#include "iax/iaxaccount.h"
+#endif
 #include "security_const.h"
 #include "audio/audiolayer.h"
 #include "system_codec_container.h"
 #include "client/signal.h"
+#include "account_const.h"
 
 #include <dirent.h>
 
@@ -62,7 +67,6 @@ constexpr unsigned CODECS_NOT_LOADED = 0x1000; /** Codecs not found */
 
 using ring::SIPAccount;
 using ring::TlsValidator;
-using ring::Account;
 using ring::DeviceType;
 using ring::HookPreference;
 
@@ -235,9 +239,17 @@ registerAllAccounts()
 
 ///This function is used as a base for new accounts for clients that support it
 std::map<std::string, std::string>
-getAccountTemplate()
-{
-    return SIPAccount{"dummy", false}.getAccountDetails();
+getAccountTemplate(const std::string& accountType)
+{
+    if (accountType == Account::ProtocolNames::RING)
+        return ring::RingAccount("dummy", false).getAccountDetails();
+    else if (accountType == Account::ProtocolNames::SIP)
+        return ring::SIPAccount("dummy", false).getAccountDetails();
+#if HAVE_IAX
+    else if (accountType == Account::ProtocolNames::IAX)
+        return ring::IAXAccount("dummy").getAccountDetails();
+#endif
+    return {{}};
 }
 
 std::string
@@ -331,7 +343,7 @@ getCodecDetails(const std::string& accountID, const unsigned& codecId)
     {
         RING_ERR("Could not find account %s return default codec details"
                 , accountID.c_str());
-        return Account::getDefaultCodecDetails(codecId);
+        return ring::Account::getDefaultCodecDetails(codecId);
     }
 
     auto codec = acc->searchCodecById(codecId, ring::MEDIA_ALL);
@@ -359,7 +371,7 @@ getActiveCodecList(const std::string& accountID)
     if (auto acc = ring::Manager::instance().getAccount(accountID))
         return acc->getActiveCodecs();
     RING_ERR("Could not find account %s, returning default", accountID.c_str());
-    return Account::getDefaultCodecsId();
+    return ring::Account::getDefaultCodecsId();
 }
 
 void
diff --git a/daemon/src/dring/configurationmanager_interface.h b/daemon/src/dring/configurationmanager_interface.h
index 9bdf42a2e4ab584e527dcad6d38c1490752e58ef..71f10fd8f6e1245ed96152817199114f67a7c8e0 100644
--- a/daemon/src/dring/configurationmanager_interface.h
+++ b/daemon/src/dring/configurationmanager_interface.h
@@ -50,7 +50,7 @@ void registerConfHandlers(const std::map<std::string, std::shared_ptr<CallbackWr
 std::map<std::string, std::string> getAccountDetails(const std::string& accountID);
 std::map<std::string, std::string> getVolatileAccountDetails(const std::string& accountID);
 void setAccountDetails(const std::string& accountID, const std::map<std::string, std::string>& details);
-std::map<std::string, std::string> getAccountTemplate();
+std::map<std::string, std::string> getAccountTemplate(const std::string& accountType);
 std::string addAccount(const std::map<std::string, std::string>& details);
 void removeAccount(const std::string& accoundID);
 std::vector<std::string> getAccountList();