diff --git a/redfish-core/include/redfish.hpp b/redfish-core/include/redfish.hpp
index f6628eb..c2e336e 100644
--- a/redfish-core/include/redfish.hpp
+++ b/redfish-core/include/redfish.hpp
@@ -52,6 +52,10 @@
         const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) const
     {
         auto subReq = std::make_shared<SubRequest>(req);
+        if (!subReq->needHandling())
+        {
+            return;
+        }
         oemRouter.handle(subReq, asyncResp);
     }
 
diff --git a/redfish-core/include/sub_request.hpp b/redfish-core/include/sub_request.hpp
index 8c846ae..df8cf70 100644
--- a/redfish-core/include/sub_request.hpp
+++ b/redfish-core/include/sub_request.hpp
@@ -3,8 +3,10 @@
 #pragma once
 
 #include "http_request.hpp"
+#include "parsing.hpp"
 
 #include <boost/beast/http/verb.hpp>
+#include <nlohmann/json.hpp>
 
 #include <string>
 #include <string_view>
@@ -17,7 +19,29 @@
   public:
     explicit SubRequest(const crow::Request& req) :
         url_(req.url().encoded_path()), method_(req.method())
-    {}
+    {
+        // Extract OEM payload if present
+        if (req.method() == boost::beast::http::verb::patch ||
+            req.method() == boost::beast::http::verb::post)
+        {
+            nlohmann::json reqJson;
+            if (parseRequestAsJson(req, reqJson) != JsonParseResult::Success)
+            {
+                return;
+            }
+
+            auto oemIt = reqJson.find("Oem");
+            if (oemIt != reqJson.end() && oemIt->is_object())
+            {
+                const nlohmann::json::object_t* oemObj =
+                    oemIt->get_ptr<const nlohmann::json::object_t*>();
+                if (oemObj != nullptr && !oemObj->empty())
+                {
+                    payload_ = *oemObj;
+                }
+            }
+        }
+    }
 
     std::string_view url() const
     {
@@ -29,9 +53,32 @@
         return method_;
     }
 
+    const nlohmann::json::object_t& payload() const
+    {
+        return payload_;
+    }
+
+    bool needHandling() const
+    {
+        if (method_ == boost::beast::http::verb::get)
+        {
+            return true;
+        }
+
+        if ((method_ == boost::beast::http::verb::patch ||
+             method_ == boost::beast::http::verb::post) &&
+            !payload_.empty())
+        {
+            return true;
+        }
+
+        return false;
+    }
+
   private:
     std::string url_;
     boost::beast::http::verb method_;
+    nlohmann::json::object_t payload_;
 };
 
 } // namespace redfish
