diff --git a/src/views/Overview/Overview.vue b/src/views/Overview/Overview.vue
index 2436e39..9960f37 100644
--- a/src/views/Overview/Overview.vue
+++ b/src/views/Overview/Overview.vue
@@ -1,167 +1,100 @@
 <template>
   <b-container fluid="xl">
     <page-title />
-    <div class="quicklinks-section">
-      <overview-quick-links />
-    </div>
-    <b-row>
-      <b-col>
-        <page-section :section-title="$t('pageOverview.bmcInformation')">
-          <b-row>
-            <b-col>
-              <dl>
-                <dt>{{ $t('pageOverview.firmwareVersion') }}</dt>
-                <dd>{{ bmcFirmwareVersion }}</dd>
-              </dl>
-            </b-col>
-          </b-row>
-        </page-section>
-        <b-row>
-          <b-col>
-            <page-section
-              :section-title="$t('pageOverview.networkInformation')"
-            >
-              <overview-network />
-            </page-section>
-          </b-col>
-        </b-row>
-      </b-col>
-      <b-col>
-        <page-section :section-title="$t('pageOverview.serverInformation')">
-          <b-row>
-            <b-col lg="6">
-              <dl>
-                <dt>{{ $t('pageOverview.model') }}</dt>
-                <dd>{{ serverModel }}</dd>
-              </dl>
-            </b-col>
-            <b-col lg="6">
-              <dl>
-                <dt>{{ $t('pageOverview.manufacturer') }}</dt>
-                <dd>{{ serverManufacturer }}</dd>
-              </dl>
-            </b-col>
-            <b-col lg="6">
-              <dl>
-                <dt>{{ $t('pageOverview.serialNumber') }}</dt>
-                <dd>{{ serverSerialNumber }}</dd>
-              </dl>
-            </b-col>
-            <b-col lg="6">
-              <dl>
-                <dt>{{ $t('pageOverview.firmwareVersion') }}</dt>
-                <dd>{{ hostFirmwareVersion }}</dd>
-              </dl>
-            </b-col>
-          </b-row>
-        </page-section>
-        <page-section :section-title="$t('pageOverview.powerConsumption')">
-          <b-row>
-            <b-col sm="6">
-              <dl>
-                <dt>{{ $t('pageOverview.powerConsumption') }}</dt>
-                <dd v-if="powerConsumptionValue == null">
-                  {{ $t('global.status.notAvailable') }}
-                </dd>
-                <dd v-else>{{ powerConsumptionValue }} W</dd>
-              </dl>
-            </b-col>
-            <b-col sm="6">
-              <dl>
-                <dt>{{ $t('pageOverview.powerCap') }}</dt>
-                <dd v-if="powerCapValue == null">
-                  {{ $t('global.status.disabled') }}
-                </dd>
-                <dd v-else>{{ powerCapValue }} W</dd>
-              </dl>
-            </b-col>
-          </b-row>
-        </page-section>
-      </b-col>
-    </b-row>
-    <page-section :section-title="$t('pageOverview.highPriorityEvents')">
-      <overview-events />
+    <overview-quick-links class="mb-4" />
+    <page-section
+      :section-title="$t('pageOverview.systemInformation')"
+      class="mb-1"
+    >
+      <b-card-group deck>
+        <overview-server />
+        <overview-firmware />
+      </b-card-group>
+      <b-card-group deck>
+        <overview-network />
+        <overview-power />
+      </b-card-group>
+    </page-section>
+    <page-section :section-title="$t('pageOverview.statusInformation')">
+      <b-card-group deck>
+        <overview-events />
+        <overview-inventory />
+        <overview-dumps v-if="showDumps" />
+      </b-card-group>
     </page-section>
   </b-container>
 </template>
 
 <script>
-import OverviewQuickLinks from './OverviewQuickLinks';
-import OverviewEvents from './OverviewEvents';
-import OverviewNetwork from './OverviewNetwork';
-import PageTitle from '@/components/Global/PageTitle';
-import PageSection from '@/components/Global/PageSection';
-import { mapState } from 'vuex';
 import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
+import OverviewDumps from './OverviewDumps.vue';
+import OverviewEvents from './OverviewEvents.vue';
+import OverviewFirmware from './OverviewFirmware.vue';
+import OverviewInventory from './OverviewInventory.vue';
+import OverviewNetwork from './OverviewNetwork';
+import OverviewPower from './OverviewPower';
+import OverviewQuickLinks from './OverviewQuickLinks';
+import OverviewServer from './OverviewServer';
+import PageSection from '@/components/Global/PageSection';
+import PageTitle from '@/components/Global/PageTitle';
 
 export default {
   name: 'Overview',
   components: {
-    OverviewQuickLinks,
+    OverviewDumps,
     OverviewEvents,
+    OverviewFirmware,
+    OverviewInventory,
     OverviewNetwork,
-    PageTitle,
+    OverviewPower,
+    OverviewQuickLinks,
+    OverviewServer,
     PageSection,
+    PageTitle,
   },
   mixins: [LoadingBarMixin],
-  computed: {
-    ...mapState({
-      server: (state) => state.system.systems[0],
-      powerCapValue: (state) => state.powerControl.powerCapValue,
-      powerConsumptionValue: (state) =>
-        state.powerControl.powerConsumptionValue,
-      serverManufacturer() {
-        if (this.server) return this.server.manufacturer || '--';
-        return '--';
-      },
-      serverModel() {
-        if (this.server) return this.server.model || '--';
-        return '--';
-      },
-      serverSerialNumber() {
-        if (this.server) return this.server.serialNumber || '--';
-        return '--';
-      },
-    }),
-    activeHostFirmware() {
-      return this.$store.getters[`firmware/activeHostFirmware`];
-    },
-    hostFirmwareVersion() {
-      return this.activeHostFirmware?.version || '--';
-    },
-    activeBmcFirmware() {
-      return this.$store.getters[`firmware/activeBmcFirmware`];
-    },
-    bmcFirmwareVersion() {
-      return this.activeBmcFirmware?.version || '--';
-    },
+  data() {
+    return {
+      showDumps: process.env.VUE_APP_ENV_NAME === 'ibm',
+    };
   },
   created() {
     this.startLoader();
-    const quicklinksPromise = new Promise((resolve) => {
-      this.$root.$on('overview-quicklinks-complete', () => resolve());
-    });
-    const networkPromise = new Promise((resolve) => {
-      this.$root.$on('overview-network-complete', () => resolve());
+    const dumpsPromise = new Promise((resolve) => {
+      this.$root.$on('overview-dumps-complete', () => resolve());
     });
     const eventsPromise = new Promise((resolve) => {
       this.$root.$on('overview-events-complete', () => resolve());
     });
+    const firmwarePromise = new Promise((resolve) => {
+      this.$root.$on('overview-firmware-complete', () => resolve());
+    });
+    const inventoryPromise = new Promise((resolve) => {
+      this.$root.$on('overview-inventory-complete', () => resolve());
+    });
+    const networkPromise = new Promise((resolve) => {
+      this.$root.$on('overview-network-complete', () => resolve());
+    });
+    const powerPromise = new Promise((resolve) => {
+      this.$root.$on('overview-power-complete', () => resolve());
+    });
+    const quicklinksPromise = new Promise((resolve) => {
+      this.$root.$on('overview-quicklinks-complete', () => resolve());
+    });
+    const serverPromise = new Promise((resolve) => {
+      this.$root.$on('overview-server-complete', () => resolve());
+    });
+
     Promise.all([
-      this.$store.dispatch('system/getSystem'),
-      this.$store.dispatch(`firmware/getFirmwareInformation`),
-      this.$store.dispatch('powerControl/getPowerControl'),
-      quicklinksPromise,
-      networkPromise,
+      dumpsPromise,
       eventsPromise,
+      firmwarePromise,
+      inventoryPromise,
+      networkPromise,
+      powerPromise,
+      quicklinksPromise,
+      serverPromise,
     ]).finally(() => this.endLoader());
   },
 };
 </script>
-
-<style lang="scss" scoped>
-.quicklinks-section {
-  margin-bottom: $spacer * 2;
-  margin-left: $spacer * -1;
-}
-</style>
diff --git a/src/views/Overview/OverviewCard.vue b/src/views/Overview/OverviewCard.vue
new file mode 100644
index 0000000..4fc0a03
--- /dev/null
+++ b/src/views/Overview/OverviewCard.vue
@@ -0,0 +1,81 @@
+<template>
+  <b-card bg-variant="light" border-variant="light" class="mb-4">
+    <div class="justify-content-between align-items-center d-flex flex-wrap">
+      <h3 class="h5 mb-0">{{ title }}</h3>
+      <div class="card-buttons">
+        <b-button
+          v-if="exportButton || downloadButton"
+          :disabled="disabled"
+          :download="download"
+          :href="href"
+          class="p-0"
+          variant="link"
+        >
+          <span v-if="downloadButton">{{ $t('global.action.download') }}</span>
+          <span v-if="exportButton">{{ $t('global.action.exportAll') }}</span>
+        </b-button>
+        <span v-if="exportButton || downloadButton" class="pl-2 pr-2">|</span>
+        <b-link :to="to">{{ $t('pageOverview.viewMore') }}</b-link>
+      </div>
+    </div>
+    <slot></slot>
+  </b-card>
+</template>
+
+<script>
+export default {
+  name: 'OverviewCard',
+  props: {
+    data: {
+      type: Array,
+      default: () => [],
+    },
+    disabled: {
+      type: Boolean,
+      default: true,
+    },
+    downloadButton: {
+      type: Boolean,
+      default: false,
+    },
+    exportButton: {
+      type: Boolean,
+      default: false,
+    },
+
+    fileName: {
+      type: String,
+      default: 'data',
+    },
+    title: {
+      type: String,
+      default: '',
+    },
+    to: {
+      type: String,
+      default: '/',
+    },
+  },
+  computed: {
+    dataForExport() {
+      return JSON.stringify(this.data);
+    },
+    download() {
+      return `${this.fileName}.json`;
+    },
+    href() {
+      return `data:text/json;charset=utf-8,${this.dataForExport}`;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+a {
+  vertical-align: middle;
+  font-size: 14px;
+}
+.card {
+  min-width: 310px;
+}
+</style>
diff --git a/src/views/Overview/OverviewDumps.vue b/src/views/Overview/OverviewDumps.vue
new file mode 100644
index 0000000..6fe5996
--- /dev/null
+++ b/src/views/Overview/OverviewDumps.vue
@@ -0,0 +1,54 @@
+<template>
+  <overview-card
+    :data="dumps"
+    :disabled="dumps.length === 0"
+    :download-button="true"
+    :file-name="exportFileNameByDate()"
+    :title="$t('pageOverview.dumps')"
+    :to="`/logs/dumps`"
+  >
+    <b-row class="mt-3">
+      <b-col sm="6">
+        <dl>
+          <dt>{{ $t('pageOverview.total') }}</dt>
+          <dd class="h3">{{ tableFormatter(dumps.length) }}</dd>
+        </dl>
+      </b-col>
+    </b-row>
+  </overview-card>
+</template>
+
+<script>
+import OverviewCard from './OverviewCard';
+import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
+
+export default {
+  name: 'Dumps',
+  components: {
+    OverviewCard,
+  },
+  mixins: [TableDataFormatterMixin],
+  computed: {
+    dumps() {
+      return this.$store.getters['dumps/bmcDumps'];
+    },
+  },
+  created() {
+    this.$store.dispatch('dumps/getBmcDumps').finally(() => {
+      this.$root.$emit('overview-dumps-complete');
+    });
+  },
+  methods: {
+    exportFileNameByDate() {
+      // Create export file name based on date
+      let date = new Date();
+      date =
+        date.toISOString().slice(0, 10) +
+        '_' +
+        date.toString().split(':').join('-').split(' ')[4];
+      let fileName = 'all_dumps_';
+      return fileName + date;
+    },
+  },
+};
+</script>
diff --git a/src/views/Overview/OverviewEvents.vue b/src/views/Overview/OverviewEvents.vue
index b8f876a..84eadd1 100644
--- a/src/views/Overview/OverviewEvents.vue
+++ b/src/views/Overview/OverviewEvents.vue
@@ -1,72 +1,61 @@
 <template>
-  <div>
-    <b-button
-      variant="link"
-      to="/logs/event-logs"
-      data-test-id="overviewEvents-button-eventLogs"
-      class="float-md-right"
-    >
-      {{ $t('pageOverview.events.viewAllButton') }}
-    </b-button>
-    <b-table
-      per-page="5"
-      sort-by="id"
-      sort-desc
-      hover
-      responsive="md"
-      stacked="sm"
-      show-empty
-      :items="eventLogData"
-      :fields="fields"
-      :empty-text="$t('pageOverview.events.noHighEventsMsg')"
-    >
-      <template #cell(severity)="{ value }">
-        <status-icon status="danger" />
-        {{ value }}
-      </template>
-      <template #cell(date)="{ value }">
-        <p class="mb-0">{{ value | formatDate }}</p>
-        <p class="mb-0">{{ value | formatTime }}</p>
-      </template>
-    </b-table>
-  </div>
+  <overview-card
+    :data="eventLogData"
+    :disabled="eventLogData.length === 0"
+    :export-button="true"
+    :file-name="exportFileNameByDate()"
+    :title="$t('pageOverview.eventLogs')"
+    :to="`/logs/event-logs`"
+  >
+    <b-row class="mt-3">
+      <b-col sm="6">
+        <dl>
+          <dt>{{ $t('pageOverview.criticalEvents') }}</dt>
+          <dd class="h3">
+            {{ tableFormatter(criticalEvents.length) }}
+            <status-icon status="danger" />
+          </dd>
+        </dl>
+      </b-col>
+      <b-col sm="6">
+        <dl>
+          <dt>{{ $t('pageOverview.warningEvents') }}</dt>
+          <dd class="h3">
+            {{ tableFormatter(warningEvents.length) }}
+            <status-icon status="warning" />
+          </dd>
+        </dl>
+      </b-col>
+    </b-row>
+  </overview-card>
 </template>
 
 <script>
+import OverviewCard from './OverviewCard';
 import StatusIcon from '@/components/Global/StatusIcon';
+import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
 
 export default {
   name: 'Events',
-  components: { StatusIcon },
-  data() {
-    return {
-      fields: [
-        {
-          key: 'id',
-          label: this.$t('pageOverview.events.id'),
-        },
-        {
-          key: 'severity',
-          label: this.$t('pageOverview.events.severity'),
-        },
-        {
-          key: 'type',
-          label: this.$t('pageOverview.events.type'),
-        },
-        {
-          key: 'date',
-          label: this.$t('pageOverview.events.date'),
-        },
-        {
-          key: 'description',
-          label: this.$t('pageOverview.events.description'),
-        },
-      ],
-    };
-  },
+  components: { OverviewCard, StatusIcon },
+  mixins: [TableDataFormatterMixin],
   computed: {
     eventLogData() {
-      return this.$store.getters['eventLog/highPriorityEvents'];
+      return this.$store.getters['eventLog/allEvents'];
+    },
+    criticalEvents() {
+      return this.eventLogData
+        .filter((log) => log.severity === 'Critical')
+        .map((log) => {
+          return log;
+        });
+    },
+    warningEvents() {
+      return this.eventLogData
+        .filter((log) => log.severity === 'Warning')
+        .map((log) => {
+          return log;
+        });
     },
   },
   created() {
@@ -74,5 +63,23 @@
       this.$root.$emit('overview-events-complete');
     });
   },
+  methods: {
+    exportFileNameByDate() {
+      // Create export file name based on date
+      let date = new Date();
+      date =
+        date.toISOString().slice(0, 10) +
+        '_' +
+        date.toString().split(':').join('-').split(' ')[4];
+      let fileName = 'all_event_logs_';
+      return fileName + date;
+    },
+  },
 };
 </script>
+
+<style lang="scss" scoped>
+.status-icon {
+  vertical-align: text-top;
+}
+</style>
diff --git a/src/views/Overview/OverviewFirmware.vue b/src/views/Overview/OverviewFirmware.vue
new file mode 100644
index 0000000..ec9dfff
--- /dev/null
+++ b/src/views/Overview/OverviewFirmware.vue
@@ -0,0 +1,49 @@
+<template>
+  <overview-card
+    :title="$t('pageOverview.firmwareInformation')"
+    :to="`/operations/firmware`"
+  >
+    <b-row class="mt-3">
+      <b-col>
+        <dl>
+          <dt>{{ $t('pageOverview.runningVersion') }}</dt>
+          <dd>{{ tableFormatter(runningVersion) }}</dd>
+          <dt>{{ $t('pageOverview.backupVersion') }}</dt>
+          <dd>{{ tableFormatter(backupVersion) }}</dd>
+        </dl>
+      </b-col>
+    </b-row>
+  </overview-card>
+</template>
+
+<script>
+import OverviewCard from './OverviewCard';
+import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
+
+export default {
+  name: 'Firmware',
+  components: {
+    OverviewCard,
+  },
+  mixins: [TableDataFormatterMixin],
+  computed: {
+    backupBmcFirmware() {
+      return this.$store.getters['firmware/backupBmcFirmware'];
+    },
+    backupVersion() {
+      return this.backupBmcFirmware?.version;
+    },
+    activeBmcFirmware() {
+      return this.$store.getters[`firmware/activeBmcFirmware`];
+    },
+    runningVersion() {
+      return this.activeBmcFirmware?.version;
+    },
+  },
+  created() {
+    this.$store.dispatch('firmware/getFirmwareInformation').finally(() => {
+      this.$root.$emit('overview-firmware-complete');
+    });
+  },
+};
+</script>
diff --git a/src/views/Overview/OverviewInventory.vue b/src/views/Overview/OverviewInventory.vue
new file mode 100644
index 0000000..575cb7b
--- /dev/null
+++ b/src/views/Overview/OverviewInventory.vue
@@ -0,0 +1,57 @@
+<template>
+  <overview-card
+    :title="$t('pageOverview.inventory')"
+    :to="`/hardware-status/inventory`"
+  >
+    <b-row class="mt-3">
+      <b-col sm="6">
+        <dl sm="6">
+          <dt>{{ $t('pageOverview.systemIdentifyLed') }}</dt>
+          <dd>
+            <b-form-checkbox
+              id="identifyLedSwitch"
+              v-model="systems.locationIndicatorActive"
+              data-test-id="overviewInventory-checkbox-identifyLed"
+              switch
+              @change="toggleIdentifyLedSwitch"
+            >
+              <span v-if="systems.locationIndicatorActive">
+                {{ $t('global.status.on') }}
+              </span>
+              <span v-else>{{ $t('global.status.off') }}</span>
+            </b-form-checkbox>
+          </dd>
+        </dl>
+      </b-col>
+    </b-row>
+  </overview-card>
+</template>
+
+<script>
+import OverviewCard from './OverviewCard';
+
+export default {
+  name: 'Inventory',
+  components: {
+    OverviewCard,
+  },
+  computed: {
+    systems() {
+      let systemData = this.$store.getters['system/systems'][0];
+      return systemData ? systemData : {};
+    },
+  },
+  created() {
+    this.$store.dispatch('system/getSystem').finally(() => {
+      this.$root.$emit('overview-inventory-complete');
+    });
+  },
+  methods: {
+    toggleIdentifyLedSwitch(state) {
+      this.$store
+        .dispatch('system/changeIdentifyLedState', state)
+        .catch(({ message }) => this.errorToast(message));
+    },
+  },
+};
+</script>
diff --git a/src/views/Overview/OverviewNetwork.vue b/src/views/Overview/OverviewNetwork.vue
index bfb378a..fbb81c6 100644
--- a/src/views/Overview/OverviewNetwork.vue
+++ b/src/views/Overview/OverviewNetwork.vue
@@ -1,63 +1,88 @@
 <template>
-  <div>
-    <div v-if="ethernetData.length === 0">
-      {{ $t('global.status.notAvailable') }}
-    </div>
-    <div
-      v-for="ethernetInterface in ethernetData"
-      v-else
-      :key="ethernetInterface.id"
-    >
-      <h3 class="h5 font-weight-bold">
-        {{ ethernetInterface.Id }}
-      </h3>
-      <b-row>
-        <b-col lg="6" xl="4">
-          <dl>
-            <dt>{{ $t('pageOverview.network.hostname') }}</dt>
-            <dd>{{ ethernetInterface.HostName }}</dd>
-          </dl>
-        </b-col>
-        <b-col lg="6" xl="4">
-          <dl>
-            <dt>{{ $t('pageOverview.network.macAddress') }}</dt>
-            <dd>{{ ethernetInterface.MACAddress }}</dd>
-          </dl>
-        </b-col>
-        <b-col lg="6" xl="4">
-          <dl>
-            <dt>{{ $t('pageOverview.network.ipAddress') }}</dt>
-            <dd
-              v-for="(ip, $index) in ethernetInterface.IPv4Addresses"
-              :key="$index"
-            >
-              {{ ip.Address }}
-            </dd>
-          </dl>
-        </b-col>
-      </b-row>
-    </div>
-  </div>
+  <overview-card
+    :title="$t('pageOverview.networkInformation')"
+    :to="`/settings/network`"
+  >
+    <b-row class="mt-3">
+      <b-col sm="6">
+        <dl>
+          <dt>{{ $t('pageOverview.hostname') }}</dt>
+          <dd>{{ tableFormatter(hostname) }}</dd>
+        </dl>
+      </b-col>
+      <b-col sm="6">
+        <dl>
+          <dt>{{ $t('pageOverview.linkStatus') }}</dt>
+          <dd>
+            {{ tableFormatter(linkStatus) }}
+          </dd>
+        </dl>
+      </b-col>
+    </b-row>
+    <b-row>
+      <b-col>
+        <dl>
+          <dt>{{ $t('pageOverview.ipv4') }}</dt>
+          <dd>
+            {{ tableFormatter(ipStaticAddress) }}
+          </dd>
+        </dl>
+      </b-col>
+      <b-col>
+        <dl>
+          <dt>{{ $t('pageOverview.dhcp') }}</dt>
+          <dd>
+            {{ tableFormatter(ipDhcpAddress) }}
+          </dd>
+        </dl>
+      </b-col>
+    </b-row>
+  </overview-card>
 </template>
 
 <script>
+import OverviewCard from './OverviewCard';
+import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
+import { mapState } from 'vuex';
+
 export default {
   name: 'Network',
+  components: {
+    OverviewCard,
+  },
+  mixins: [TableDataFormatterMixin],
+  data() {
+    return {
+      ipDhcpAddress: '',
+    };
+  },
   computed: {
-    ethernetData() {
-      return this.$store.getters['network/ethernetData'];
-    },
+    ...mapState({
+      ethernetData: (state) => state.network.ethernetData[0],
+      hostname() {
+        return this.ethernetData?.HostName;
+      },
+      linkStatus() {
+        return this.ethernetData?.LinkStatus;
+      },
+      ipStaticAddress() {
+        return this.ethernetData?.IPv4StaticAddresses[0].Address;
+      },
+    }),
   },
   created() {
     this.$store.dispatch('network/getEthernetData').finally(() => {
       this.$root.$emit('overview-network-complete');
     });
+    this.getDhcpInfo();
+  },
+  methods: {
+    getDhcpInfo() {
+      const dhcp = this.ethernetData.IPv4Addresses.filter(
+        (ipv4) => ipv4.AddressOrigin === 'DHCP'
+      );
+      this.ipDhcpAddress = dhcp[0].Address;
+    },
   },
 };
 </script>
-
-<style lang="scss" scoped>
-dd {
-  margin-bottom: 0;
-}
-</style>
diff --git a/src/views/Overview/OverviewPower.vue b/src/views/Overview/OverviewPower.vue
new file mode 100644
index 0000000..a8a630a
--- /dev/null
+++ b/src/views/Overview/OverviewPower.vue
@@ -0,0 +1,56 @@
+<template>
+  <overview-card
+    :title="$t('pageOverview.powerInformation')"
+    :to="`/resource-management/power`"
+  >
+    <b-row class="mt-3">
+      <b-col sm="6">
+        <dl>
+          <dt>{{ $t('pageOverview.powerConsumption') }}</dt>
+          <dd v-if="powerConsumptionValue == null">
+            {{ $t('global.status.notAvailable') }}
+          </dd>
+          <dd v-else>{{ powerConsumptionValue }} W</dd>
+          <dt>{{ $t('pageOverview.powerCap') }}</dt>
+          <dd v-if="powerCapValue == null">
+            {{ $t('global.status.disabled') }}
+          </dd>
+          <dd v-else>{{ powerCapValue }} W</dd>
+        </dl>
+      </b-col>
+      <b-col>
+        <dl>
+          <dt>{{ $t('pageOverview.idlePower') }}</dt>
+          <dd>{{ tableFormatter(idlePower) }}</dd>
+          <dt>{{ $t('pageOverview.powerMode') }}</dt>
+          <dd>{{ tableFormatter(powerMode) }}</dd>
+        </dl>
+      </b-col>
+    </b-row>
+  </overview-card>
+</template>
+
+<script>
+import OverviewCard from './OverviewCard';
+import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
+import { mapGetters } from 'vuex';
+
+export default {
+  name: 'Power',
+  components: {
+    OverviewCard,
+  },
+  mixins: [TableDataFormatterMixin],
+  computed: {
+    ...mapGetters({
+      powerCapValue: 'powerControl/powerCapValue',
+      powerConsumptionValue: 'powerControl/powerConsumptionValue',
+    }),
+  },
+  created() {
+    this.$store.dispatch('powerControl/getPowerControl').finally(() => {
+      this.$root.$emit('overview-power-complete');
+    });
+  },
+};
+</script>
diff --git a/src/views/Overview/OverviewQuickLinks.vue b/src/views/Overview/OverviewQuickLinks.vue
index 1dc2c98..bc579b0 100644
--- a/src/views/Overview/OverviewQuickLinks.vue
+++ b/src/views/Overview/OverviewQuickLinks.vue
@@ -1,56 +1,28 @@
 <template>
-  <div class="quicklinks form-background">
-    <div>
-      <dl>
-        <dt>{{ $t('pageOverview.quicklinks.bmcTime') }}</dt>
-        <dd v-if="bmcTime" data-test-id="overviewQuickLinks-text-bmcTime">
-          {{ bmcTime | formatDate }} {{ bmcTime | formatTime }}
-        </dd>
-        <dd v-else>--</dd>
-      </dl>
-    </div>
-    <div>
-      <dl>
-        <dt>{{ $t('pageOverview.quicklinks.serverLed') }}</dt>
-        <dd>
-          <b-form-checkbox
-            v-model="indicatorLedActiveState"
-            data-test-id="overviewQuickLinks-checkbox-serverLed"
-            name="check-button"
-            switch
-            @change="onChangeServerLed"
-          >
-            <span v-if="indicatorLedActiveState">
-              {{ $t('global.status.on') }}
-            </span>
-            <span v-else>{{ $t('global.status.off') }}</span>
-          </b-form-checkbox>
-        </dd>
-      </dl>
-    </div>
-    <div>
-      <b-button
-        to="/settings/network"
-        variant="secondary"
-        data-test-id="overviewQuickLinks-button-networkSettings"
-        class="d-flex justify-content-between align-items-center"
-      >
-        {{ $t('pageOverview.quicklinks.editNetworkSettings') }}
-        <icon-arrow-right />
-      </b-button>
-    </div>
-    <div>
-      <b-button
-        to="/operations/serial-over-lan"
-        variant="secondary"
-        data-test-id="overviewQuickLinks-button-solConsole"
-        class="d-flex justify-content-between align-items-center"
-      >
-        {{ $t('pageOverview.quicklinks.solConsole') }}
-        <icon-arrow-right />
-      </b-button>
-    </div>
-  </div>
+  <b-card bg-variant="light" border-variant="light">
+    <b-row class="d-flex justify-content-between align-items-center">
+      <b-col sm="6" lg="9" class="mb-2 mt-2">
+        <dl>
+          <dt>{{ $t('pageOverview.bmcTime') }}</dt>
+          <dd v-if="bmcTime" data-test-id="overviewQuickLinks-text-bmcTime">
+            {{ bmcTime | formatDate }} {{ bmcTime | formatTime }}
+          </dd>
+          <dd v-else>--</dd>
+        </dl>
+      </b-col>
+      <b-col sm="6" lg="3" class="mb-2 mt-2">
+        <b-button
+          to="/operations/serial-over-lan"
+          variant="secondary"
+          data-test-id="overviewQuickLinks-button-solConsole"
+          class="d-flex justify-content-between align-items-center"
+        >
+          {{ $t('pageOverview.solConsole') }}
+          <icon-arrow-right />
+        </b-button>
+      </b-col>
+    </b-row>
+  </b-card>
 </template>
 
 <script>
@@ -67,33 +39,12 @@
     bmcTime() {
       return this.$store.getters['global/bmcTime'];
     },
-    indicatorLedActiveState: {
-      get() {
-        return this.$store.getters['serverLed/getIndicatorLedActiveState'];
-      },
-      set(value) {
-        return value;
-      },
-    },
   },
   created() {
-    Promise.all([
-      this.$store.dispatch('global/getBmcTime'),
-      this.$store.dispatch('serverLed/getIndicatorLedActiveState'),
-    ]).finally(() => {
+    Promise.all([this.$store.dispatch('global/getBmcTime')]).finally(() => {
       this.$root.$emit('overview-quicklinks-complete');
     });
   },
-  methods: {
-    onChangeServerLed(indicatorLedActiveState) {
-      this.$store
-        .dispatch(
-          'serverLed/saveIndicatorLedActiveState',
-          indicatorLedActiveState
-        )
-        .catch(({ message }) => this.errorToast(message));
-    },
-  },
 };
 </script>
 
@@ -102,24 +53,4 @@
 dl {
   margin: 0;
 }
-
-.quicklinks {
-  display: grid;
-  grid-gap: 1rem;
-  padding: 1rem;
-  white-space: nowrap;
-  align-items: center;
-}
-
-@include media-breakpoint-up(sm) {
-  .quicklinks {
-    grid-template-columns: repeat(2, 1fr);
-  }
-}
-
-@include media-breakpoint-up(xl) {
-  .quicklinks {
-    grid-template-columns: repeat(4, 1fr);
-  }
-}
 </style>
diff --git a/src/views/Overview/OverviewServer.vue b/src/views/Overview/OverviewServer.vue
new file mode 100644
index 0000000..6d1d430
--- /dev/null
+++ b/src/views/Overview/OverviewServer.vue
@@ -0,0 +1,47 @@
+<template>
+  <overview-card
+    :title="$t('pageOverview.serverInformation')"
+    :to="`/hardware-status/inventory`"
+  >
+    <b-row class="mt-3">
+      <b-col lg="6">
+        <dl>
+          <dt>{{ $t('pageOverview.model') }}</dt>
+          <dd>{{ tableFormatter(serverModel) }}</dd>
+          <dt>{{ $t('pageOverview.serialNumber') }}</dt>
+          <dd>{{ tableFormatter(serverSerialNumber) }}</dd>
+        </dl>
+      </b-col>
+    </b-row>
+  </overview-card>
+</template>
+
+<script>
+import OverviewCard from './OverviewCard';
+import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
+import { mapState } from 'vuex';
+
+export default {
+  name: 'Server',
+  components: {
+    OverviewCard,
+  },
+  mixins: [TableDataFormatterMixin],
+  computed: {
+    ...mapState({
+      server: (state) => state.system.systems[0],
+      serverModel() {
+        return this.server?.model;
+      },
+      serverSerialNumber() {
+        return this.server?.serialNumber;
+      },
+    }),
+  },
+  created() {
+    this.$store.dispatch('system/getSystem').finally(() => {
+      this.$root.$emit('overview-server-complete');
+    });
+  },
+};
+</script>
