diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index ceb5135..5cbc034 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -19,11 +19,19 @@
 
 namespace redfish {
 
+static OperationMap accountServiceOpMap = {
+    {crow::HTTPMethod::GET, {{"ConfigureUsers"}, {"ConfigureManager"}}},
+    {crow::HTTPMethod::HEAD, {{"Login"}}},
+    {crow::HTTPMethod::PATCH, {{"ConfigureUsers"}}},
+    {crow::HTTPMethod::PUT, {{"ConfigureUsers"}}},
+    {crow::HTTPMethod::DELETE, {{"ConfigureUsers"}}},
+    {crow::HTTPMethod::POST, {{"ConfigureUsers"}}}};
+
 class AccountService : public Node {
  public:
-  template <typename CrowApp, typename PrivilegeProvider>
-  AccountService(CrowApp& app, PrivilegeProvider& provider)
-      : Node(app, provider, "#AccountService.v1_1_0.AccountService",
+  template <typename CrowApp>
+  AccountService(CrowApp& app)
+      : Node(app, EntityPrivileges(std::move(accountServiceOpMap)),
              "/redfish/v1/AccountService/") {
     nodeJson["@odata.id"] = "/redfish/v1/AccountService";
     nodeJson["@odata.type"] = "#AccountService.v1_1_0.AccountService";
diff --git a/redfish-core/lib/redfish_sessions.hpp b/redfish-core/lib/redfish_sessions.hpp
index 11cde72..58d5b94 100644
--- a/redfish-core/lib/redfish_sessions.hpp
+++ b/redfish-core/lib/redfish_sessions.hpp
@@ -14,19 +14,35 @@
 // limitations under the License.
 */
 #pragma once
-#include <tuple>
+
 #include "node.hpp"
 #include "session_storage_singleton.hpp"
 
 namespace redfish {
 
+static OperationMap sessionOpMap = {
+    {crow::HTTPMethod::GET, {{"Login"}}},
+    {crow::HTTPMethod::HEAD, {{"Login"}}},
+    {crow::HTTPMethod::PATCH, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::PUT, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::DELETE, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::POST, {{"ConfigureManager"}}}};
+
+static OperationMap sessionCollectionOpMap = {
+    {crow::HTTPMethod::GET, {{"Login"}}},
+    {crow::HTTPMethod::HEAD, {{"Login"}}},
+    {crow::HTTPMethod::PATCH, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::PUT, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::DELETE, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::POST, {{}}}};
+
 class SessionCollection;
 
 class Sessions : public Node {
  public:
-  template <typename CrowApp, typename PrivilegeProvider>
-  Sessions(CrowApp& app, PrivilegeProvider& provider)
-      : Node(app, provider, "#Session.v1_0_2.Session",
+  template <typename CrowApp>
+  Sessions(CrowApp& app)
+      : Node(app, EntityPrivileges(std::move(sessionOpMap)),
              "/redfish/v1/SessionService/Sessions/<str>", std::string()) {
     nodeJson["@odata.type"] = "#Session.v1_0_2.Session";
     nodeJson["@odata.context"] = "/redfish/v1/$metadata#Session.Session";
@@ -90,11 +106,11 @@
 
 class SessionCollection : public Node {
  public:
-  template <typename CrowApp, typename PrivilegeProvider>
-  SessionCollection(CrowApp& app, PrivilegeProvider& provider)
-      : Node(app, provider, "#SessionCollection.SessionCollection",
+  template <typename CrowApp>
+  SessionCollection(CrowApp& app)
+      : Node(app, EntityPrivileges(std::move(sessionCollectionOpMap)),
              "/redfish/v1/SessionService/Sessions/"),
-        memberSession(app, provider) {
+        memberSession(app) {
     nodeJson["@odata.type"] = "#SessionCollection.SessionCollection";
     nodeJson["@odata.id"] = "/redfish/v1/SessionService/Sessions/";
     nodeJson["@odata.context"] =
@@ -127,7 +143,6 @@
               const std::vector<std::string>& params) override {
     std::string username;
     bool userAuthSuccessful = authenticateUser(req, &res.code, &username);
-
     if (!userAuthSuccessful) {
       res.end();
       return;
diff --git a/redfish-core/lib/roles.hpp b/redfish-core/lib/roles.hpp
index d912e88..6a3c0d7 100644
--- a/redfish-core/lib/roles.hpp
+++ b/redfish-core/lib/roles.hpp
@@ -15,16 +15,31 @@
 */
 #pragma once
 
-#include <vector>
 #include "node.hpp"
 
 namespace redfish {
 
+static OperationMap roleOpMap = {
+    {crow::HTTPMethod::GET, {{"Login"}}},
+    {crow::HTTPMethod::HEAD, {{"Login"}}},
+    {crow::HTTPMethod::PATCH, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::PUT, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::DELETE, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::POST, {{"ConfigureManager"}}}};
+
+static OperationMap roleCollectionOpMap = {
+    {crow::HTTPMethod::GET, {{"Login"}}},
+    {crow::HTTPMethod::HEAD, {{"Login"}}},
+    {crow::HTTPMethod::PATCH, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::PUT, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::DELETE, {{"ConfigureManager"}}},
+    {crow::HTTPMethod::POST, {{"ConfigureManager"}}}};
+
 class Roles : public Node {
  public:
-  template <typename CrowApp, typename PrivilegeProvider>
-  Roles(CrowApp& app, PrivilegeProvider& provider)
-      : Node(app, provider, "#Role.v1_0_2.Role",
+  template <typename CrowApp>
+  Roles(CrowApp& app)
+      : Node(app, EntityPrivileges(std::move(roleOpMap)),
              "/redfish/v1/AccountService/Roles/Administrator/") {
     nodeJson["@odata.id"] = "/redfish/v1/AccountService/Roles/Administrator";
     nodeJson["@odata.type"] = "#Role.v1_0_2.Role";
@@ -51,9 +66,9 @@
 
 class RoleCollection : public Node {
  public:
-  template <typename CrowApp, typename PrivilegeProvider>
-  RoleCollection(CrowApp& app, PrivilegeProvider& provider)
-      : Node(app, provider, "#RoleCollection.RoleCollection",
+  template <typename CrowApp>
+  RoleCollection(CrowApp& app)
+      : Node(app, EntityPrivileges(std::move(roleCollectionOpMap)),
              "/redfish/v1/AccountService/Roles/") {
     nodeJson["@odata.id"] = "/redfish/v1/AccountService/Roles";
     nodeJson["@odata.type"] = "#RoleCollection.RoleCollection";
diff --git a/redfish-core/lib/service_root.hpp b/redfish-core/lib/service_root.hpp
index cdb0000..24ad79d 100644
--- a/redfish-core/lib/service_root.hpp
+++ b/redfish-core/lib/service_root.hpp
@@ -19,11 +19,20 @@
 
 namespace redfish {
 
+static OperationMap serviceRootOpMap = {
+    {crow::HTTPMethod::GET, {{}}},
+    {crow::HTTPMethod::HEAD, {{}}},
+    {crow::HTTPMethod::PATCH, {{"ConfigureComponents"}}},
+    {crow::HTTPMethod::PUT, {{"ConfigureComponents"}}},
+    {crow::HTTPMethod::DELETE, {{"ConfigureComponents"}}},
+    {crow::HTTPMethod::POST, {{"ConfigureComponents"}}}};
+
 class ServiceRoot : public Node {
  public:
-  template <typename CrowApp, typename PrivilegeProvider>
-  ServiceRoot(CrowApp& app, PrivilegeProvider& provider)
-      : Node(app, provider, "#ServiceRoot.v1_1_1.ServiceRoot", "/redfish/v1/") {
+  template <typename CrowApp>
+  ServiceRoot(CrowApp& app)
+      : Node(app, EntityPrivileges(std::move(serviceRootOpMap)),
+             "/redfish/v1/") {
     nodeJson["@odata.type"] = "#ServiceRoot.v1_1_1.ServiceRoot";
     nodeJson["@odata.id"] = "/redfish/v1";
     nodeJson["@odata.context"] =
