diff --git a/src/locales/en-US.json b/src/locales/en-US.json
index e73adbc..eccd302 100644
--- a/src/locales/en-US.json
+++ b/src/locales/en-US.json
@@ -7,11 +7,13 @@
       "confirm": "Confirm",
       "copy": "Copy",
       "delete": "Delete",
+      "deleteAll": "Delete all",
       "disable": "Disable",
       "download": "Download",
       "edit": "Edit",
       "enable": "Enable",
       "export": "Export",
+      "exportAll": "Export all",
       "filter": "Filter",
       "refresh": "Refresh",
       "replace": "Replace",
@@ -246,12 +248,13 @@
   },
   "pageEventLogs": {
     "additionalDataUri": "Download additional data",
-    "exportFilePrefix": "event_logs_",
     "resolve": "Resolve",
     "resolved": "Resolved",
     "unresolve": "Unresolve",
     "unresolved": "Unresolved",
     "modal": {
+      "deleteAllTitle": "Delete all logs",
+      "deleteAllMessage": "Are you sure you want to delete all logs? This action cannot be undone.",
       "deleteTitle": "Delete log | Delete logs",
       "deleteMessage": "Are you sure you want to delete %{count} log? This action cannot be undone. | Are you sure you want to delete %{count} logs? This action cannot be undone."
     },
@@ -268,13 +271,11 @@
     },
     "toast": {
       "errorDelete": "Error deleting %{count} log. | Error deleting %{count} logs.",
-      "successDelete": "Successfully deleted %{count} log. | Successfully deleted %{count} logs.",
       "errorLogStatusUpdate": "Error updating log status.",
       "errorResolveLogs": "Error resolving %{count} log. | Error resolving %{count} logs.",
       "errorUnresolveLogs": "Error unresolving %{count} log. | Error unresolving %{count} logs.",
-      "successResolveLog": "Successfully resolved log.",
+      "successDelete": "Successfully deleted %{count} log. | Successfully deleted %{count} logs.",
       "successResolveLogs": "Successfully resolved %{count} log. | Successfully resolved %{count} logs.",
-      "successUnresolveLog": "Successfully unresolved log.",
       "successUnresolveLogs": "Successfully unresolved %{count} log. | Successfully unresolved %{count} logs."
     }
   },
diff --git a/src/store/modules/Health/EventLogStore.js b/src/store/modules/Health/EventLogStore.js
index 5664e99..c9bd82f 100644
--- a/src/store/modules/Health/EventLogStore.js
+++ b/src/store/modules/Health/EventLogStore.js
@@ -80,10 +80,12 @@
           '/redfish/v1/Systems/system/LogServices/EventLog/Actions/LogService.ClearLog'
         )
         .then(() => dispatch('getEventLogData'))
-        .then(() => i18n.tc('pageEventLogs.toast.successDelete', data))
+        .then(() => i18n.tc('pageEventLogs.toast.successDelete', data.length))
         .catch((error) => {
           console.log(error);
-          throw new Error(i18n.tc('pageEventLogs.toast.errorDelete', data));
+          throw new Error(
+            i18n.tc('pageEventLogs.toast.errorDelete', data.length)
+          );
         });
     },
     async deleteEventLogs({ dispatch }, uris = []) {
@@ -194,6 +196,7 @@
           })
         );
     },
+    // Single log entry
     async updateEventLogStatus({ dispatch }, log) {
       const updatedEventLogStatus = log.status;
       return await api
@@ -203,9 +206,9 @@
         })
         .then(() => {
           if (log.status) {
-            return i18n.t('pageEventLogs.toast.successResolveLog');
+            return i18n.tc('pageEventLogs.toast.successResolveLogs', 1);
           } else {
-            return i18n.t('pageEventLogs.toast.successUnresolveLog');
+            return i18n.tc('pageEventLogs.toast.successUnresolveLogs', 1);
           }
         })
         .catch((error) => {
diff --git a/src/views/Health/EventLogs/EventLogs.vue b/src/views/Health/EventLogs/EventLogs.vue
index 9bc88c1..fa3f43c 100644
--- a/src/views/Health/EventLogs/EventLogs.vue
+++ b/src/views/Health/EventLogs/EventLogs.vue
@@ -2,7 +2,7 @@
   <b-container fluid="xl">
     <page-title />
     <b-row class="align-items-start">
-      <b-col sm="8" xl="6" class="d-sm-flex align-items-end">
+      <b-col sm="8" xl="6" class="d-sm-flex align-items-end mb-4">
         <search
           :placeholder="$t('pageEventLogs.table.searchLogs')"
           data-test-id="eventLogs-input-searchLogs"
@@ -23,6 +23,21 @@
     <b-row>
       <b-col class="text-right">
         <table-filter :filters="tableFilters" @filter-change="onFilterChange" />
+        <b-button
+          variant="link"
+          :disabled="allLogs.length === 0"
+          @click="deleteAllLogs"
+        >
+          <icon-delete /> {{ $t('global.action.deleteAll') }}
+        </b-button>
+        <b-button
+          variant="primary"
+          :class="{ disabled: allLogs.length === 0 }"
+          :download="exportFileNameByDate()"
+          :href="href"
+        >
+          <icon-export /> {{ $t('global.action.exportAll') }}
+        </b-button>
       </b-col>
     </b-row>
     <b-row>
@@ -180,7 +195,7 @@
               :value="action.value"
               :title="action.title"
               :row-data="row.item"
-              :export-name="exportFileNameByDate()"
+              :export-name="exportFileNameByDate('export')"
               :data-test-id="`eventLogs-button-deleteRow-${row.index}`"
               @click-table-action="onTableRowAction($event, row.item)"
             >
@@ -224,6 +239,7 @@
 </template>
 
 <script>
+import IconDelete from '@carbon/icons-vue/es/trash-can/20';
 import IconTrashcan from '@carbon/icons-vue/es/trash-can/20';
 import IconExport from '@carbon/icons-vue/es/document--export/20';
 import IconChevron from '@carbon/icons-vue/es/chevron--down/20';
@@ -264,6 +280,7 @@
 
 export default {
   components: {
+    IconDelete,
     IconExport,
     IconTrashcan,
     IconChevron,
@@ -373,6 +390,9 @@
     };
   },
   computed: {
+    href() {
+      return `data:text/json;charset=utf-8,${this.exportAllLogs()}`;
+    },
     filteredRows() {
       return this.searchFilter
         ? this.searchTotalFilteredRows
@@ -430,6 +450,23 @@
         })
         .catch(({ message }) => this.errorToast(message));
     },
+    deleteAllLogs() {
+      this.$bvModal
+        .msgBoxConfirm(this.$t('pageEventLogs.modal.deleteAllMessage'), {
+          title: this.$t('pageEventLogs.modal.deleteAllTitle'),
+          okTitle: this.$t('global.action.delete'),
+          okVariant: 'danger',
+          cancelTitle: this.$t('global.action.cancel'),
+        })
+        .then((deleteConfirmed) => {
+          if (deleteConfirmed) {
+            this.$store
+              .dispatch('eventLog/deleteAllEventLogs', this.allLogs)
+              .then((message) => this.successToast(message))
+              .catch(({ message }) => this.errorToast(message));
+          }
+        });
+    },
     deleteLogs(uris) {
       this.$store
         .dispatch('eventLog/deleteEventLogs', uris)
@@ -443,6 +480,14 @@
           });
         });
     },
+    exportAllLogs() {
+      {
+        return this.$store.getters['eventLog/allEvents'].map((eventLogs) => {
+          const allEventLogsString = JSON.stringify(eventLogs);
+          return allEventLogsString;
+        });
+      }
+    },
     onFilterChange({ activeFilters }) {
       this.activeFilters = activeFilters;
     },
@@ -507,13 +552,19 @@
       this.searchTotalFilteredRows = filteredItems.length;
     },
     // Create export file name based on date
-    exportFileNameByDate() {
+    exportFileNameByDate(value) {
       let date = new Date();
       date =
         date.toISOString().slice(0, 10) +
         '_' +
         date.toString().split(':').join('-').split(' ')[4];
-      return this.$t('pageEventLogs.exportFilePrefix') + date;
+      let fileName;
+      if (value === 'export') {
+        fileName = 'event_log_';
+      } else {
+        fileName = 'all_event_logs_';
+      }
+      return fileName + date;
     },
     resolveLogs() {
       this.$store
