diff --git a/src/env/store/Dumps/DumpsStore.js b/src/env/store/Dumps/DumpsStore.js
index 45f446c..3b91354 100644
--- a/src/env/store/Dumps/DumpsStore.js
+++ b/src/env/store/Dumps/DumpsStore.js
@@ -1,4 +1,5 @@
-import api from '@/store/api';
+import api, { getResponseCount } from '@/store/api';
+import i18n from '@/i18n';
 
 const DumpsStore = {
   namespaced: true,
@@ -6,16 +7,17 @@
     bmcDumps: [],
   },
   getters: {
-    allDumps: (state) => state.bmcDumps,
+    bmcDumps: (state) => state.bmcDumps,
   },
   mutations: {
     setBmcDumps: (state, dumps) => {
       state.bmcDumps = dumps.map((dump) => ({
+        data: dump.AdditionalDataURI,
         dateTime: new Date(dump.Created),
         dumpType: dump.Name,
         id: dump.Id,
+        location: dump['@odata.id'],
         size: dump.AdditionalDataSizeBytes,
-        data: dump.AdditionalDataURI,
       }));
     },
   },
@@ -26,6 +28,89 @@
         .then(({ data = {} }) => commit('setBmcDumps', data.Members || []))
         .catch((error) => console.log(error));
     },
+    async createBmcDump() {
+      return await api
+        .post(
+          '/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData',
+          {
+            DiagnosticDataType: 'Manager',
+            OEMDiagnosticDataType: '',
+          }
+        )
+        .catch((error) => {
+          console.log(error);
+          throw new Error(i18n.t('pageDumps.toast.errorStartBmcDump'));
+        });
+    },
+    async createSystemDump() {
+      return await api
+        .post(
+          '/redfish/v1/Systems/system/LogServices/Dump/Actions/LogService.CollectDiagnosticData',
+          {
+            DiagnosticDataType: 'OEM',
+            OEMDiagnosticDataType: 'System',
+          }
+        )
+        .catch((error) => {
+          console.log(error);
+          throw new Error(i18n.t('pageDumps.toast.errorStartSystemDump'));
+        });
+    },
+    async deleteDumps({ dispatch }, dumps) {
+      const promises = dumps.map(({ location }) =>
+        api.delete(location).catch((error) => {
+          console.log(error);
+          return error;
+        })
+      );
+      return await api
+        .all(promises)
+        .then((response) => {
+          dispatch('getBmcDumps');
+          return response;
+        })
+        .then(
+          api.spread((...responses) => {
+            const { successCount, errorCount } = getResponseCount(responses);
+            const toastMessages = [];
+
+            if (successCount) {
+              const message = i18n.tc(
+                'pageDumps.toast.successDeleteDump',
+                successCount
+              );
+              toastMessages.push({ type: 'success', message });
+            }
+
+            if (errorCount) {
+              const message = i18n.tc(
+                'pageDumps.toast.errorDeleteDump',
+                errorCount
+              );
+              toastMessages.push({ type: 'error', message });
+            }
+
+            return toastMessages;
+          })
+        );
+    },
+    async deleteAllDumps({ commit, state }) {
+      const totalDumpCount = state.bmcDumps.length;
+      return await api
+        .post(
+          '/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.ClearLog'
+        )
+        .then(() => {
+          commit('setBmcDumps', []);
+          return i18n.tc('pageDumps.toast.successDeleteDump', totalDumpCount);
+        })
+        .catch((error) => {
+          console.log(error);
+          throw new Error(
+            i18n.tc('pageDumps.toast.errorDeleteDump', totalDumpCount)
+          );
+        });
+    },
   },
 };
 
