diff --git a/src/store/index.js b/src/store/index.js
index 029df7a..d477fb7 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -1,5 +1,4 @@
-import Vue from 'vue';
-import Vuex from 'vuex';
+import { createStore } from 'vuex';
 
 import GlobalStore from './modules/GlobalStore';
 import AuthenticationStore from './modules/Authentication/AuthenticanStore';
@@ -34,9 +33,7 @@
 import DateTimeStore from './modules/Settings/DateTimeStore';
 import VirtualMediaStore from './modules/Operations/VirtualMediaStore';
 
-Vue.use(Vuex);
-
-const store = new Vuex.Store({
+const store = createStore({
   state: {},
   mutations: {},
   actions: {},
diff --git a/src/store/modules/GlobalStore.js b/src/store/modules/GlobalStore.js
index e42367b..c64fbaf 100644
--- a/src/store/modules/GlobalStore.js
+++ b/src/store/modules/GlobalStore.js
@@ -92,7 +92,7 @@
         const managers = await api
           .get('/redfish/v1/Managers')
           .catch((error) => console.log(error));
-        bmcPath = managers.data?.Members?.[0]?.['@odata.id'];
+        bmcPath = managers?.data?.Members?.[0]?.['@odata.id'];
       }
       return bmcPath;
     },
diff --git a/src/store/modules/Operations/BootSettingsStore.js b/src/store/modules/Operations/BootSettingsStore.js
index 9740da7..c860c7b 100644
--- a/src/store/modules/Operations/BootSettingsStore.js
+++ b/src/store/modules/Operations/BootSettingsStore.js
@@ -114,7 +114,10 @@
 
       if (bootSource !== null || overrideEnabled !== null) {
         promises.push(
-          dispatch('saveBootSettings', { bootSource, overrideEnabled }),
+          dispatch('saveBootSettings', {
+            bootSource,
+            overrideEnabled,
+          }),
         );
       }
       if (tpmEnabled !== null) {
diff --git a/src/store/modules/ResourceManagement/PowerControlStore.js b/src/store/modules/ResourceManagement/PowerControlStore.js
index 7fd8a59..5163c81 100644
--- a/src/store/modules/ResourceManagement/PowerControlStore.js
+++ b/src/store/modules/ResourceManagement/PowerControlStore.js
@@ -38,9 +38,13 @@
       if (!collection || collection.length === 0) return;
       return await api
         .get(`${collection[0]}`)
-        .then((response) => api.get(response.data.Power['@odata.id']))
         .then((response) => {
-          const powerControl = response.data.PowerControl;
+          const powerUri = response?.data?.Power?.['@odata.id'];
+          if (!powerUri) return;
+          return api.get(powerUri);
+        })
+        .then((response) => {
+          const powerControl = response?.data?.PowerControl;
           if (!powerControl || powerControl.length === 0) return;
           const powerCapUri = response.data['@odata.id'];
           const powerCap = powerControl[0].PowerLimit.LimitInWatts;
diff --git a/src/store/modules/SecurityAndAccess/LdapStore.js b/src/store/modules/SecurityAndAccess/LdapStore.js
index a8114f7..54113ae 100644
--- a/src/store/modules/SecurityAndAccess/LdapStore.js
+++ b/src/store/modules/SecurityAndAccess/LdapStore.js
@@ -237,7 +237,9 @@
         .patch('/redfish/v1/AccountService', data)
         .then(() => dispatch('getAccountSettings'))
         .then(() =>
-          i18n.global.t('pageLdap.toast.successSaveRoleGroup', { groupName }),
+          i18n.global.t('pageLdap.toast.successSaveRoleGroup', {
+            groupName,
+          }),
         )
         .catch((error) => {
           console.log(error);
diff --git a/src/store/modules/Settings/NetworkStore.js b/src/store/modules/Settings/NetworkStore.js
index d4174e3..323c672 100644
--- a/src/store/modules/Settings/NetworkStore.js
+++ b/src/store/modules/Settings/NetworkStore.js
@@ -300,7 +300,9 @@
       return api
         .patch(
           `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
-          { IPv4StaticAddresses: originalAddresses.concat(newAddress) },
+          {
+            IPv4StaticAddresses: originalAddresses.concat(newAddress),
+          },
         )
         .then(dispatch('getEthernetData'))
         .then(() => {
@@ -331,7 +333,9 @@
       return api
         .patch(
           `${await this.dispatch('global/getBmcPath')}/EthernetInterfaces/${state.selectedInterfaceId}`,
-          { IPv6StaticAddresses: originalAddresses.concat(newAddress) },
+          {
+            IPv6StaticAddresses: originalAddresses.concat(newAddress),
+          },
         )
         .then(dispatch('getEthernetData'))
         .then(() => {
