diff --git a/src/store/modules/Settings/PowerPolicyStore.js b/src/store/modules/Settings/PowerPolicyStore.js
index 9ee1239..9cbf3c8 100644
--- a/src/store/modules/Settings/PowerPolicyStore.js
+++ b/src/store/modules/Settings/PowerPolicyStore.js
@@ -20,27 +20,36 @@
   actions: {
     async getPowerRestorePolicies({ commit }) {
       return await api
-        .get('/redfish/v1/JsonSchemas/ComputerSystem/ComputerSystem.json')
-        .then(
-          ({
-            data: {
-              definitions: { PowerRestorePolicyTypes = {} },
-            },
-          }) => {
-            let powerPoliciesData = PowerRestorePolicyTypes.enum.map(
-              (powerState) => {
-                let desc = `${i18n.global.t(
-                  `pagePowerRestorePolicy.policies.${powerState}`,
-                )} - ${PowerRestorePolicyTypes.enumDescriptions[powerState]}`;
-                return {
-                  state: powerState,
-                  desc,
-                };
+        .get('/redfish/v1/JsonSchemas/ComputerSystem')
+        .then(async (response) => {
+          if (
+            response.data?.Location.length > 0 &&
+            response.data?.Location[0].Uri
+          ) {
+            return await api.get(response.data?.Location[0].Uri).then(
+              ({
+                data: {
+                  definitions: { PowerRestorePolicyTypes = {} },
+                },
+              }) => {
+                let powerPoliciesData = PowerRestorePolicyTypes.enum.map(
+                  (powerState) => {
+                    let desc = `${i18n.global.t(
+                      `pagePowerRestorePolicy.policies.${powerState}`,
+                    )} - ${
+                      PowerRestorePolicyTypes.enumDescriptions[powerState]
+                    }`;
+                    return {
+                      state: powerState,
+                      desc,
+                    };
+                  },
+                );
+                commit('setPowerRestorePolicies', powerPoliciesData);
               },
             );
-            commit('setPowerRestorePolicies', powerPoliciesData);
-          },
-        );
+          }
+        });
     },
     async getPowerRestoreCurrentPolicy({ commit }) {
       return await api
