diff --git a/redfish-core/include/utils/systemd_utils.hpp b/redfish-core/include/utils/systemd_utils.hpp
new file mode 100644
index 0000000..1c34fca
--- /dev/null
+++ b/redfish-core/include/utils/systemd_utils.hpp
@@ -0,0 +1,54 @@
+/*
+// Copyright (c) 2019 Intel Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+*/
+#pragma once
+
+#include <systemd/sd-id128.h>
+
+namespace redfish
+{
+
+namespace systemd_utils
+{
+
+/**
+ * @brief Retrieve service root UUID
+ *
+ * @return Service root UUID
+ */
+
+const std::string getUuid()
+{
+    std::string ret;
+    // This ID needs to match the one in ipmid
+    sd_id128_t appId = SD_ID128_MAKE(e0, e1, 73, 76, 64, 61, 47, da, a5, 0c, d0,
+                                     cc, 64, 12, 45, 78);
+    sd_id128_t machineId = SD_ID128_NULL;
+
+    if (sd_id128_get_machine_app_specific(appId, &machineId) == 0)
+    {
+        std::array<char, SD_ID128_STRING_MAX> str;
+        ret = sd_id128_to_string(machineId, str.data());
+        ret.insert(8, 1, '-');
+        ret.insert(13, 1, '-');
+        ret.insert(18, 1, '-');
+        ret.insert(23, 1, '-');
+    }
+
+    return ret;
+}
+
+} // namespace systemd_utils
+} // namespace redfish
diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index a9efb4c..65bea03 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -21,6 +21,7 @@
 #include <boost/date_time.hpp>
 #include <dbus_utility.hpp>
 #include <sstream>
+#include <utils/systemd_utils.hpp>
 #include <variant>
 
 namespace redfish
@@ -944,6 +945,7 @@
         res.jsonValue["Status"] = {{"State", "Enabled"}, {"Health", "OK"}};
         res.jsonValue["ManagerType"] = "BMC";
         res.jsonValue["UUID"] = uuid;
+        res.jsonValue["ServiceEntryPointUUID"] = systemd_utils::getUuid();
         res.jsonValue["Model"] = "OpenBmc"; // TODO(ed), get model
 
         res.jsonValue["LogServices"] = {
diff --git a/redfish-core/lib/service_root.hpp b/redfish-core/lib/service_root.hpp
index 8cbab6f..a525ca6 100644
--- a/redfish-core/lib/service_root.hpp
+++ b/redfish-core/lib/service_root.hpp
@@ -17,7 +17,7 @@
 
 #include "node.hpp"
 
-#include <systemd/sd-id128.h>
+#include <utils/systemd_utils.hpp>
 
 namespace redfish
 {
@@ -64,30 +64,9 @@
         res.jsonValue["UpdateService"] = {
             {"@odata.id", "/redfish/v1/UpdateService"}};
 
-        res.jsonValue["UUID"] = getUuid();
+        res.jsonValue["UUID"] = systemd_utils::getUuid();
         res.end();
     }
-
-    const std::string getUuid()
-    {
-        std::string ret;
-        // This ID needs to match the one in ipmid
-        sd_id128_t appId = SD_ID128_MAKE(e0, e1, 73, 76, 64, 61, 47, da, a5, 0c,
-                                         d0, cc, 64, 12, 45, 78);
-        sd_id128_t machineId = SD_ID128_NULL;
-
-        if (sd_id128_get_machine_app_specific(appId, &machineId) == 0)
-        {
-            std::array<char, SD_ID128_STRING_MAX> str;
-            ret = sd_id128_to_string(machineId, str.data());
-            ret.insert(8, 1, '-');
-            ret.insert(13, 1, '-');
-            ret.insert(18, 1, '-');
-            ret.insert(23, 1, '-');
-        }
-
-        return ret;
-    }
 };
 
 } // namespace redfish
