diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index 1a9166b..6dcfd78 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -3302,7 +3302,7 @@
         }
 
         auto getStoredLogCallback =
-            [asyncResp, logID, fileName, url(boost::urls::url(req.urlView))](
+            [asyncResp, logID, fileName, url(boost::urls::url(req.url()))](
                 const boost::system::error_code& ec,
                 const std::vector<
                     std::pair<std::string, dbus::utility::DbusVariantType>>&
diff --git a/redfish-core/lib/processor.hpp b/redfish-core/lib/processor.hpp
index cd9850e..4566e4b 100644
--- a/redfish-core/lib/processor.hpp
+++ b/redfish-core/lib/processor.hpp
@@ -1072,7 +1072,9 @@
         }
         asyncResp->res.jsonValue["@odata.type"] =
             "#OperatingConfigCollection.OperatingConfigCollection";
-        asyncResp->res.jsonValue["@odata.id"] = req.url;
+        asyncResp->res.jsonValue["@odata.id"] = crow::utility::urlFromPieces(
+            "redfish", "v1", "Systems", "system", "Processors", cpuName,
+            "OperatingConfigs");
         asyncResp->res.jsonValue["Name"] = "Operating Config Collection";
 
         // First find the matching CPU object so we know how to
@@ -1140,7 +1142,7 @@
             "xyz.openbmc_project.Inventory.Item.Cpu.OperatingConfig"};
         dbus::utility::getSubTree(
             "/xyz/openbmc_project/inventory", 0, interfaces,
-            [asyncResp, cpuName, configName, reqUrl{req.url}](
+            [asyncResp, cpuName, configName](
                 const boost::system::error_code& ec,
                 const dbus::utility::MapperGetSubTreeResponse& subtree) {
             if (ec)
@@ -1161,7 +1163,9 @@
 
                 nlohmann::json& json = asyncResp->res.jsonValue;
                 json["@odata.type"] = "#OperatingConfig.v1_0_0.OperatingConfig";
-                json["@odata.id"] = reqUrl;
+                json["@odata.id"] = crow::utility::urlFromPieces(
+                    "redfish", "v1", "Systems", "system", "Processors", cpuName,
+                    "OperatingConfigs", configName);
                 json["Name"] = "Processor Profile";
                 json["Id"] = configName;
 
diff --git a/redfish-core/lib/redfish_sessions.hpp b/redfish-core/lib/redfish_sessions.hpp
index 7293ed7..35d5d5c 100644
--- a/redfish-core/lib/redfish_sessions.hpp
+++ b/redfish-core/lib/redfish_sessions.hpp
@@ -212,7 +212,7 @@
     bool isConfigureSelfOnly = pamrc == PAM_NEW_AUTHTOK_REQD;
     if ((pamrc != PAM_SUCCESS) && !isConfigureSelfOnly)
     {
-        messages::resourceAtUriUnauthorized(asyncResp->res, req.urlView,
+        messages::resourceAtUriUnauthorized(asyncResp->res, req.url(),
                                             "Invalid username or password");
         return;
     }
diff --git a/redfish-core/lib/redfish_v1.hpp b/redfish-core/lib/redfish_v1.hpp
index d707d2d..8ea46d8 100644
--- a/redfish-core/lib/redfish_v1.hpp
+++ b/redfish-core/lib/redfish_v1.hpp
@@ -39,7 +39,7 @@
 
     BMCWEB_LOG_WARNING << "404 on path " << path;
 
-    std::string name = req.urlView.segments().back();
+    std::string name = req.url().segments().back();
     // Note, if we hit the wildcard route, we don't know the "type" the user was
     // actually requesting, but giving them a return with an empty string is
     // still better than nothing.
diff --git a/redfish-core/lib/task.hpp b/redfish-core/lib/task.hpp
index 2e7481a..4edfe18 100644
--- a/redfish-core/lib/task.hpp
+++ b/redfish-core/lib/task.hpp
@@ -47,7 +47,7 @@
 struct Payload
 {
     explicit Payload(const crow::Request& req) :
-        targetUri(req.url), httpOperation(req.methodString()),
+        targetUri(req.url().encoded_path()), httpOperation(req.methodString()),
         httpHeaders(nlohmann::json::array())
     {
         using field_ns = boost::beast::http::field;
