diff --git a/src/store/modules/Configuration/FirmwareStore.js b/src/store/modules/Configuration/FirmwareStore.js
index 5185a13..b76748f 100644
--- a/src/store/modules/Configuration/FirmwareStore.js
+++ b/src/store/modules/Configuration/FirmwareStore.js
@@ -3,52 +3,37 @@
 const FirmwareStore = {
   namespaced: true,
   state: {
-    firmwareInfo: null,
-    bmcActiveVersion: '--',
-    hostActiveVersion: '--'
+    bmcFirmwareVersion: '--',
+    hostFirmwareVersion: '--'
   },
   getters: {
-    firmwareInfo: state => state.firmwareInfo,
-    bmcActiveVersion: state => state.bmcActiveVersion,
-    hostActiveVersion: state => state.hostActiveVersion
+    bmcFirmwareVersion: state => state.bmcFirmwareVersion,
+    hostFirmwareVersion: state => state.hostFirmwareVersion
   },
   mutations: {
-    setFirmwareInfo: (state, firmwareInfo) =>
-      (state.firmwareInfo = firmwareInfo),
-    setBmcActiveVersion: (state, bmcActiveVersion) =>
-      (state.bmcActiveVersion = bmcActiveVersion),
-    setHostActiveVersion: (state, hostActiveVersion) =>
-      (state.hostActiveVersion = hostActiveVersion)
+    setBmcFirmwareVersion: (state, bmcFirmwareVersion) =>
+      (state.bmcFirmwareVersion = bmcFirmwareVersion),
+    setHostFirmwareVersion: (state, hostFirmwareVersion) =>
+      (state.hostFirmwareVersion = hostFirmwareVersion)
   },
   actions: {
-    getFirmwareInfo({ commit }) {
+    getBmcFirmware({ commit }) {
       api
-        .get('/xyz/openbmc_project/software/enumerate')
+        .get('/redfish/v1/Managers/bmc')
         .then(response => {
-          const firmwareInfo = response.data.data;
-          const functionalImages =
-            firmwareInfo['/xyz/openbmc_project/software/functional'].endpoints;
-          for (let key in firmwareInfo) {
-            /**
-             * If "Functional" activation status is
-             * functional, else it is "activation"
-             * github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/Software/Activation.interface.yaml
-             */
-            if (firmwareInfo[key].hasOwnProperty('Version')) {
-              let activationStatus = '';
-              const imageType = firmwareInfo[key].Purpose.split('.').pop();
-              if (functionalImages.includes(key)) {
-                activationStatus = 'Functional';
-              }
-              // Get BMC and Host active Versions
-              if (activationStatus == 'Functional' && imageType == 'BMC') {
-                commit('setBmcActiveVersion', firmwareInfo[key].Version);
-              }
-              if (activationStatus == 'Functional' && imageType == 'Host') {
-                commit('setHostActiveVersion', firmwareInfo[key].Version);
-              }
-            }
-          }
+          const bmcFirmwareVersion = response.data.FirmwareVersion;
+          commit('setBmcFirmwareVersion', bmcFirmwareVersion);
+        })
+        .catch(error => {
+          console.log(error);
+        });
+    },
+    getHostFirmware({ commit }) {
+      api
+        .get('/redfish/v1/Systems/system')
+        .then(response => {
+          const hostFirmwareVersion = response.data.BiosVersion;
+          commit('setHostFirmwareVersion', hostFirmwareVersion);
         })
         .catch(error => {
           console.log(error);
