diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2bd8a71..6756575 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,11 +27,11 @@
        Redfish.  Paths are under
        '/redfish/v1/Managers/bmc/LogServices/Journal'." OFF)
 option (BMCWEB_ENABLE_REDFISH_RAW_PECI "Enable PECI transactions through
-       Redfish.  Paths are under '/redfish/v1/Managers/bmc/LogServices/CpuLog/
+       Redfish.  Paths are under '/redfish/v1/Systems/system/LogServices/CpuLog/
        Actions/Oem/CpuLog.SendRawPeci'." OFF)
 option (BMCWEB_ENABLE_REDFISH_CPU_LOG "Enable CPU log service transactions
        through Redfish.  Paths are under
-       '/redfish/v1/Managers/bmc/LogServices/CpuLog'." OFF)
+       '/redfish/v1/Systems/system/LogServices/CpuLog'." OFF)
 
 # Insecure options.  Every option that starts with a BMCWEB_INSECURE flag should
 # not be enabled by default for any platform, unless the author fully
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index bcdb80c..3cff994 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -294,6 +294,10 @@
         logServiceArray = nlohmann::json::array();
         logServiceArray.push_back(
             {{"@odata.id", "/redfish/v1/Systems/system/LogServices/EventLog"}});
+#ifdef BMCWEB_ENABLE_REDFISH_CPU_LOG
+        logServiceArray.push_back(
+            {{"@odata.id", "/redfish/v1/Systems/system/LogServices/CpuLog"}});
+#endif
         asyncResp->res.jsonValue["Members@odata.count"] =
             logServiceArray.size();
     }
@@ -321,7 +325,6 @@
     {
         std::shared_ptr<AsyncResp> asyncResp = std::make_shared<AsyncResp>(res);
 
-        const std::string &name = params[0];
         asyncResp->res.jsonValue["@odata.id"] =
             "/redfish/v1/Systems/system/LogServices/EventLog";
         asyncResp->res.jsonValue["@odata.type"] =
@@ -646,10 +649,6 @@
         logServiceArray.push_back(
             {{"@odata.id", "/redfish/v1/Managers/bmc/LogServices/Journal"}});
 #endif
-#ifdef BMCWEB_ENABLE_REDFISH_CPU_LOG
-        logServiceArray.push_back(
-            {{"@odata.id", "/redfish/v1/Managers/bmc/LogServices/CpuLog"}});
-#endif
         asyncResp->res.jsonValue["Members@odata.count"] =
             logServiceArray.size();
     }
@@ -914,7 +913,7 @@
   public:
     template <typename CrowApp>
     CPULogService(CrowApp &app) :
-        Node(app, "/redfish/v1/Managers/bmc/LogServices/CpuLog/")
+        Node(app, "/redfish/v1/Systems/system/LogServices/CpuLog/")
     {
         entityPrivileges = {
             {boost::beast::http::verb::get, {{"Login"}}},
@@ -935,7 +934,7 @@
         std::shared_ptr<AsyncResp> asyncResp = std::make_shared<AsyncResp>(res);
         // Copy over the static data to include the entries added by SubRoute
         asyncResp->res.jsonValue["@odata.id"] =
-            "/redfish/v1/Managers/bmc/LogServices/CpuLog";
+            "/redfish/v1/Systems/system/LogServices/CpuLog";
         asyncResp->res.jsonValue["@odata.type"] =
             "#LogService.v1_1_0.LogService";
         asyncResp->res.jsonValue["@odata.context"] =
@@ -951,14 +950,14 @@
         asyncResp->res.jsonValue["Actions"] = {
             {"Oem",
              {{"#CpuLog.Immediate",
-               {{"target", "/redfish/v1/Managers/bmc/LogServices/CpuLog/"
+               {{"target", "/redfish/v1/Systems/system/LogServices/CpuLog/"
                            "Actions/Oem/CpuLog.Immediate"}}}}}};
 
 #ifdef BMCWEB_ENABLE_REDFISH_RAW_PECI
         asyncResp->res.jsonValue["Actions"]["Oem"].push_back(
             {"#CpuLog.SendRawPeci",
-             {{"target", "/redfish/v1/Managers/bmc/LogServices/CpuLog/Actions/"
-                         "Oem/CpuLog.SendRawPeci"}}});
+             {{"target", "/redfish/v1/Systems/system/LogServices/CpuLog/"
+                         "Actions/Oem/CpuLog.SendRawPeci"}}});
 #endif
     }
 };
@@ -968,7 +967,7 @@
   public:
     template <typename CrowApp>
     CPULogEntryCollection(CrowApp &app) :
-        Node(app, "/redfish/v1/Managers/bmc/LogServices/CpuLog/Entries/")
+        Node(app, "/redfish/v1/Systems/system/LogServices/CpuLog/Entries/")
     {
         entityPrivileges = {
             {boost::beast::http::verb::get, {{"Login"}}},
@@ -1006,11 +1005,10 @@
             asyncResp->res.jsonValue["@odata.type"] =
                 "#LogEntryCollection.LogEntryCollection";
             asyncResp->res.jsonValue["@odata.id"] =
-                "/redfish/v1/Managers/bmc/LogServices/CpuLog/Entries";
+                "/redfish/v1/Systems/system/LogServices/CpuLog/Entries";
             asyncResp->res.jsonValue["@odata.context"] =
-                "/redfish/v1/$metadata#LogEntryCollection.LogEntryCollection";
-            asyncResp->res.jsonValue["@odata.id"] =
-                "/redfish/v1/Managers/bmc/LogServices/CpuLog/Entries";
+                "/redfish/v1/"
+                "$metadata#LogEntryCollection.LogEntryCollection";
             asyncResp->res.jsonValue["Name"] = "Open BMC CPU Log Entries";
             asyncResp->res.jsonValue["Description"] =
                 "Collection of CPU Log Entries";
@@ -1027,7 +1025,7 @@
                 if (lastPos != std::string::npos)
                 {
                     logEntryArray.push_back(
-                        {{"@odata.id", "/redfish/v1/Managers/bmc/LogServices/"
+                        {{"@odata.id", "/redfish/v1/Systems/system/LogServices/"
                                        "CpuLog/Entries/" +
                                            objpath.substr(lastPos + 1)}});
                 }
@@ -1073,7 +1071,8 @@
 {
   public:
     CPULogEntry(CrowApp &app) :
-        Node(app, "/redfish/v1/Managers/bmc/LogServices/CpuLog/Entries/<str>/",
+        Node(app,
+             "/redfish/v1/Systems/system/LogServices/CpuLog/Entries/<str>/",
              std::string())
     {
         entityPrivileges = {
@@ -1122,7 +1121,7 @@
                 {"@odata.type", "#LogEntry.v1_3_0.LogEntry"},
                 {"@odata.context", "/redfish/v1/$metadata#LogEntry.LogEntry"},
                 {"@odata.id",
-                 "/redfish/v1/Managers/bmc/LogServices/CpuLog/Entries/" +
+                 "/redfish/v1/Systems/system/LogServices/CpuLog/Entries/" +
                      std::to_string(logId)},
                 {"Name", "CPU Debug Log"},
                 {"Id", logId},
@@ -1142,7 +1141,7 @@
 {
   public:
     ImmediateCPULog(CrowApp &app) :
-        Node(app, "/redfish/v1/Managers/bmc/LogServices/CpuLog/Actions/Oem/"
+        Node(app, "/redfish/v1/Systems/system/LogServices/CpuLog/Actions/Oem/"
                   "CpuLog.Immediate/")
     {
         entityPrivileges = {
@@ -1287,7 +1286,7 @@
 {
   public:
     SendRawPECI(CrowApp &app) :
-        Node(app, "/redfish/v1/Managers/bmc/LogServices/CpuLog/Actions/Oem/"
+        Node(app, "/redfish/v1/Systems/system/LogServices/CpuLog/Actions/Oem/"
                   "CpuLog.SendRawPeci/")
     {
         entityPrivileges = {
