diff --git a/redfish-core/include/utils/manager_utils.hpp b/redfish-core/include/utils/manager_utils.hpp
new file mode 100644
index 0000000..a58f357
--- /dev/null
+++ b/redfish-core/include/utils/manager_utils.hpp
@@ -0,0 +1,64 @@
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-FileCopyrightText: Copyright OpenBMC Authors
+#pragma once
+
+#include "async_resp.hpp"
+#include "error_messages.hpp"
+#include "persistent_data.hpp"
+
+#include <nlohmann/json.hpp>
+
+#include <memory>
+#include <string_view>
+
+namespace redfish
+{
+
+namespace manager_utils
+{
+
+inline void setServiceIdentification(
+    const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+    std::string_view serviceIdentification)
+{
+    constexpr const size_t maxStrSize = 99;
+    constexpr const char* allowedChars =
+        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 _-";
+    if (serviceIdentification.size() > maxStrSize)
+    {
+        messages::stringValueTooLong(asyncResp->res, "ServiceIdentification",
+                                     maxStrSize);
+        return;
+    }
+    if (serviceIdentification.find_first_not_of(allowedChars) !=
+        std::string_view::npos)
+    {
+        messages::propertyValueError(asyncResp->res, "ServiceIdentification");
+        return;
+    }
+
+    persistent_data::ConfigFile& config = persistent_data::getConfig();
+    config.serviceIdentification = serviceIdentification;
+    config.writeData();
+    messages::success(asyncResp->res);
+}
+
+inline void getServiceIdentification(
+    const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+    const bool isServiceRoot)
+{
+    std::string_view serviceIdentification =
+        persistent_data::getConfig().serviceIdentification;
+
+    // This property shall not be present if its value is an empty string or
+    // null: Redfish Data Model Specification 6.125.3
+    if (isServiceRoot && serviceIdentification.empty())
+    {
+        return;
+    }
+    asyncResp->res.jsonValue["ServiceIdentification"] = serviceIdentification;
+}
+
+} // namespace manager_utils
+
+} // namespace redfish
diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index 40848f4..3b6be77 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -23,6 +23,7 @@
 #include "registries/privilege_registry.hpp"
 #include "utils/dbus_utils.hpp"
 #include "utils/json_utils.hpp"
+#include "utils/manager_utils.hpp"
 #include "utils/sw_utils.hpp"
 #include "utils/systemd_utils.hpp"
 #include "utils/time_utils.hpp"
@@ -796,7 +797,7 @@
             asyncResp->res.jsonValue["@odata.id"] = boost::urls::format(
                 "/redfish/v1/Managers/{}", BMCWEB_REDFISH_MANAGER_URI_NAME);
             asyncResp->res.jsonValue["@odata.type"] =
-                "#Manager.v1_14_0.Manager";
+                "#Manager.v1_15_0.Manager";
             asyncResp->res.jsonValue["Id"] = BMCWEB_REDFISH_MANAGER_URI_NAME;
             asyncResp->res.jsonValue["Name"] = "OpenBmc Manager";
             asyncResp->res.jsonValue["Description"] =
@@ -820,6 +821,8 @@
                     "/redfish/v1/Managers/{}/EthernetInterfaces",
                     BMCWEB_REDFISH_MANAGER_URI_NAME);
 
+            manager_utils::getServiceIdentification(asyncResp, false);
+
             if constexpr (BMCWEB_VM_NBDPROXY)
             {
                 asyncResp->res.jsonValue["VirtualMedia"]["@odata.id"] =
@@ -964,6 +967,7 @@
                 std::optional<nlohmann::json::object_t> fanZones;
                 std::optional<nlohmann::json::object_t> stepwiseControllers;
                 std::optional<std::string> profile;
+                std::optional<std::string> serviceIdentification;
 
                 if (!json_util::readJsonPatch(                            //
                         req, asyncResp->res,                              //
@@ -977,7 +981,8 @@
                         "Oem/OpenBmc/Fan/PidControllers", pidControllers, //
                         "Oem/OpenBmc/Fan/Profile", profile,               //
                         "Oem/OpenBmc/Fan/StepwiseControllers",
-                        stepwiseControllers                               //
+                        stepwiseControllers,                              //
+                        "ServiceIdentification", serviceIdentification    //
                         ))
                 {
                     return;
@@ -1000,6 +1005,12 @@
                         asyncResp, *locationIndicatorActive, managerId);
                 }
 
+                if (serviceIdentification)
+                {
+                    manager_utils::setServiceIdentification(
+                        asyncResp, serviceIdentification.value());
+                }
+
                 RedfishService::getInstance(app).handleSubRoute(req, asyncResp);
             });
 }
diff --git a/redfish-core/lib/service_root.hpp b/redfish-core/lib/service_root.hpp
index 34f0e31..a67a75d 100644
--- a/redfish-core/lib/service_root.hpp
+++ b/redfish-core/lib/service_root.hpp
@@ -11,6 +11,7 @@
 #include "persistent_data.hpp"
 #include "query.hpp"
 #include "registries/privilege_registry.hpp"
+#include "utils/manager_utils.hpp"
 
 #include <boost/beast/http/field.hpp>
 #include <boost/beast/http/verb.hpp>
@@ -80,6 +81,7 @@
         "/redfish/v1/EventService";
     asyncResp->res.jsonValue["TelemetryService"]["@odata.id"] =
         "/redfish/v1/TelemetryService";
+    manager_utils::getServiceIdentification(asyncResp, true);
     asyncResp->res.jsonValue["Cables"]["@odata.id"] = "/redfish/v1/Cables";
 
     asyncResp->res.jsonValue["Links"]["ManagerProvidingService"]["@odata.id"] =
