diff --git a/src/store/modules/Configuration/FirmwareStore.js b/src/store/modules/Configuration/FirmwareStore.js
new file mode 100644
index 0000000..5185a13
--- /dev/null
+++ b/src/store/modules/Configuration/FirmwareStore.js
@@ -0,0 +1,60 @@
+import api from '../../api';
+
+const FirmwareStore = {
+  namespaced: true,
+  state: {
+    firmwareInfo: null,
+    bmcActiveVersion: '--',
+    hostActiveVersion: '--'
+  },
+  getters: {
+    firmwareInfo: state => state.firmwareInfo,
+    bmcActiveVersion: state => state.bmcActiveVersion,
+    hostActiveVersion: state => state.hostActiveVersion
+  },
+  mutations: {
+    setFirmwareInfo: (state, firmwareInfo) =>
+      (state.firmwareInfo = firmwareInfo),
+    setBmcActiveVersion: (state, bmcActiveVersion) =>
+      (state.bmcActiveVersion = bmcActiveVersion),
+    setHostActiveVersion: (state, hostActiveVersion) =>
+      (state.hostActiveVersion = hostActiveVersion)
+  },
+  actions: {
+    getFirmwareInfo({ commit }) {
+      api
+        .get('/xyz/openbmc_project/software/enumerate')
+        .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);
+              }
+            }
+          }
+        })
+        .catch(error => {
+          console.log(error);
+        });
+    }
+  }
+};
+
+export default FirmwareStore;
diff --git a/src/store/modules/Configuration/NetworkSettingsStore.js b/src/store/modules/Configuration/NetworkSettingsStore.js
new file mode 100644
index 0000000..ee58a77
--- /dev/null
+++ b/src/store/modules/Configuration/NetworkSettingsStore.js
@@ -0,0 +1,48 @@
+import api from '../../api';
+
+const NetworkSettingsStore = {
+  namespaced: true,
+  state: {
+    networkData: null,
+    ipAddress: '--',
+    macAddress: '--'
+  },
+  getters: {
+    networkData: state => state.networkData,
+    ipAddress: state => state.ipAddress,
+    macAddress: state => state.macAddress
+  },
+  mutations: {
+    setNetworkData: (state, networkData) => (state.networkData = networkData),
+    setIpAddress: (state, ipAddress) => (state.ipAddress = ipAddress),
+    setMacAddress: (state, macAddress) => (state.macAddress = macAddress)
+  },
+  actions: {
+    getNetworkData({ commit }) {
+      api
+        .get('/xyz/openbmc_project/network/enumerate')
+        .then(response => {
+          const networkData = response.data.data;
+          const ipAddresses = [];
+          const interfaceId = /eth[0-9]/;
+          for (let key in networkData) {
+            if (key.includes('ipv4')) {
+              ipAddresses.push(networkData[key].Address);
+            }
+            if (
+              key.match(interfaceId) &&
+              networkData[key].MACAddress !== undefined
+            ) {
+              commit('setMacAddress', networkData[key].MACAddress);
+            }
+          }
+          commit('setIpAddress', ipAddresses);
+        })
+        .catch(error => {
+          console.log('Network Data:', error);
+        });
+    }
+  }
+};
+
+export default NetworkSettingsStore;
