diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index 055a37b..7028260 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -171,7 +171,6 @@
     std::string service =
         (ldapType == "LDAP") ? "LDAPService" : "ActiveDirectoryService";
     nlohmann::json ldap = {
-        {"AccountProviderType", service},
         {"ServiceEnabled", confData.serviceEnabled},
         {"ServiceAddresses", nlohmann::json::array({confData.uri})},
         {"Authentication",
@@ -982,7 +981,6 @@
 
         std::optional<nlohmann::json> authentication;
         std::optional<nlohmann::json> ldapService;
-        std::optional<std::string> accountProviderType;
         std::optional<std::vector<std::string>> serviceAddressList;
         std::optional<bool> serviceEnabled;
         std::optional<std::vector<std::string>> baseDNList;
@@ -995,7 +993,6 @@
         if (!json_util::readJson(input, asyncResp->res, "Authentication",
                                  authentication, "LDAPService", ldapService,
                                  "ServiceAddresses", serviceAddressList,
-                                 "AccountProviderType", accountProviderType,
                                  "ServiceEnabled", serviceEnabled,
                                  "RemoteRoleMapping", remoteRoleMapData))
         {
@@ -1012,11 +1009,6 @@
             parseLDAPServiceJson(*ldapService, asyncResp, baseDNList,
                                  userNameAttribute, groupsAttribute);
         }
-        if (accountProviderType)
-        {
-            messages::propertyNotWritable(asyncResp->res,
-                                          "AccountProviderType");
-        }
         if (serviceAddressList)
         {
             if ((*serviceAddressList).size() == 0)
@@ -1048,9 +1040,9 @@
         // whenever any property gets updated.
         getLDAPConfigData(serverType, [this, asyncResp, userName, password,
                                        baseDNList, userNameAttribute,
-                                       groupsAttribute, accountProviderType,
-                                       serviceAddressList, serviceEnabled,
-                                       dbusObjectPath, remoteRoleMapData](
+                                       groupsAttribute, serviceAddressList,
+                                       serviceEnabled, dbusObjectPath,
+                                       remoteRoleMapData](
                                           bool success, LDAPConfigData confData,
                                           const std::string& serverType) {
             if (!success)
@@ -1140,7 +1132,7 @@
         res.jsonValue = {
             {"@odata.id", "/redfish/v1/AccountService"},
             {"@odata.type", "#AccountService."
-                            "v1_4_0.AccountService"},
+                            "v1_5_0.AccountService"},
             {"Id", "AccountService"},
             {"Name", "Account Service"},
             {"Description", "Account Service"},
