diff --git a/src/credentialmodel.cpp b/src/credentialmodel.cpp
index 58ebee4b05866df812db7fa9a57acd46bbb975c5..af3eb9aa965bff50ab01ff14b1a7c8e692814ebb 100644
--- a/src/credentialmodel.cpp
+++ b/src/credentialmodel.cpp
@@ -515,20 +515,27 @@ bool CredentialModel::performAction(const CredentialModel::EditAction action)
    return curState != d_ptr->m_EditState;
 }
 
-Credential* CredentialModel::primaryCredential(Credential::Type type) const
+/*
+ * Return the primary credential's set of specified type
+ * @return credential object, new empty one if none existed.
+ */
+Credential* CredentialModel::primaryCredential(Credential::Type type)
 {
    switch(type) {
       case Credential::Type::STUN:
-         if (d_ptr->m_pStunCat && d_ptr->m_pStunCat->m_lChildren.size())
-            return d_ptr->m_pStunCat->m_lChildren.first()->m_pCredential;
+         if (!d_ptr->m_pStunCat || !d_ptr->m_pStunCat->m_lChildren.size())
+            addCredentials(Credential::Type::STUN);
+         return d_ptr->m_pStunCat->m_lChildren.first()->m_pCredential;
          break;
       case Credential::Type::TURN:
-         if (d_ptr->m_pTurnCat && d_ptr->m_pTurnCat->m_lChildren.size())
-            return d_ptr->m_pTurnCat->m_lChildren.first()->m_pCredential;
+         if (!d_ptr->m_pTurnCat || !d_ptr->m_pTurnCat->m_lChildren.size())
+            addCredentials(Credential::Type::TURN);
+         return d_ptr->m_pTurnCat->m_lChildren.first()->m_pCredential;
          break;
       case Credential::Type::SIP:
-         if (d_ptr->m_pSipCat && d_ptr->m_pSipCat->m_lChildren.size())
-            return d_ptr->m_pSipCat->m_lChildren.first()->m_pCredential;
+         if (!d_ptr->m_pSipCat || !d_ptr->m_pSipCat->m_lChildren.size())
+            addCredentials(Credential::Type::SIP);
+         return d_ptr->m_pSipCat->m_lChildren.first()->m_pCredential;
          break;
       case Credential::Type::COUNT__:
          break;
diff --git a/src/credentialmodel.h b/src/credentialmodel.h
index e71c75a8e1521b6859cf0e9951cb04b4d838d475..704ee5e51d095777e062b7487d94be7fe58c95b3 100644
--- a/src/credentialmodel.h
+++ b/src/credentialmodel.h
@@ -87,7 +87,7 @@ public:
    CredentialModel::EditState editState() const;
    QAbstractItemModel* availableTypeModel() const;
    QItemSelectionModel* availableTypeSelectionModel() const;
-   Credential* primaryCredential(Credential::Type type = Credential::Type::SIP) const;
+   Credential* primaryCredential(Credential::Type type = Credential::Type::SIP);
 
    //Operator
    CredentialModel* operator<<(CredentialModel::EditAction& action);
@@ -102,4 +102,3 @@ private:
 Q_DECLARE_METATYPE(CredentialModel*)
 
 CredentialModel* LIB_EXPORT operator<<(CredentialModel* a, CredentialModel::EditAction action);
-