diff --git a/src/store/modules/Control/ServerLedStore.js b/src/store/modules/Control/ServerLedStore.js
index 26a32cc..d7c1234 100644
--- a/src/store/modules/Control/ServerLedStore.js
+++ b/src/store/modules/Control/ServerLedStore.js
@@ -4,32 +4,35 @@
 const ServerLedStore = {
   namespaced: true,
   state: {
-    indicatorValue: false,
+    indicatorLedActiveState: false,
   },
   getters: {
-    getIndicatorValue: (state) => state.indicatorValue,
+    getIndicatorLedActiveState: (state) => state.indicatorLedActiveState,
   },
   mutations: {
-    setIndicatorValue(state, indicatorValue) {
-      state.indicatorValue = indicatorValue;
+    setIndicatorLedActiveState(state, indicatorLedActiveState) {
+      state.indicatorLedActiveState = indicatorLedActiveState;
     },
   },
   actions: {
-    async getIndicatorValue({ commit }) {
+    async getIndicatorLedActiveState({ commit }) {
       return await api
         .get('/redfish/v1/Systems/system')
         .then((response) => {
-          commit('setIndicatorValue', response.data.LocationIndicatorActive);
+          commit(
+            'setIndicatorLedActiveState',
+            response.data.LocationIndicatorActive
+          );
         })
         .catch((error) => console.log(error));
     },
-    async saveIndicatorLedValue({ commit }, payload) {
+    async saveIndicatorLedActiveState({ commit }, payload) {
       return await api
         .patch('/redfish/v1/Systems/system', {
           LocationIndicatorActive: payload,
         })
         .then(() => {
-          commit('setIndicatorValue', payload);
+          commit('setIndicatorLedActiveState', payload);
           if (payload) {
             return i18n.t('pageServerLed.toast.successServerLedOn');
           } else {
diff --git a/src/views/Control/ServerLed/ServerLed.vue b/src/views/Control/ServerLed/ServerLed.vue
index 6ec6230..e5c6dac 100644
--- a/src/views/Control/ServerLed/ServerLed.vue
+++ b/src/views/Control/ServerLed/ServerLed.vue
@@ -6,13 +6,13 @@
         <page-section :section-title="$t('pageServerLed.serverLedTitle')">
           <b-form-group :label="$t('pageServerLed.serverLedSubTitle')">
             <b-form-checkbox
-              v-model="indicatorLed"
+              v-model="indicatorLedActiveState"
               data-test-id="serverLed-checkbox-switchIndicatorLed"
               name="check-button"
               switch
               @change="changeLedValue"
             >
-              <span v-if="indicatorLed">
+              <span v-if="indicatorLedActiveState">
                 {{ $t('global.status.on') }}
               </span>
               <span v-else>
@@ -41,9 +41,9 @@
     next();
   },
   computed: {
-    indicatorLed: {
+    indicatorLedActiveState: {
       get() {
-        return this.$store.getters['serverLed/getIndicatorValue'];
+        return this.$store.getters['serverLed/getIndicatorLedActiveState'];
       },
       set(newValue) {
         return newValue;
@@ -53,21 +53,19 @@
   created() {
     this.startLoader();
     this.$store
-      .dispatch('serverLed/getIndicatorValue')
+      .dispatch('serverLed/getIndicatorLedActiveState')
       .finally(() => this.endLoader());
   },
   methods: {
-    changeLedValue(indicatorLed) {
+    changeLedValue(indicatorLedActiveState) {
       this.$store
-        .dispatch('serverLed/saveIndicatorLedValue', indicatorLed)
+        .dispatch(
+          'serverLed/saveIndicatorLedActiveState',
+          indicatorLedActiveState
+        )
         .then((message) => this.successToast(message))
         .catch(({ message }) => {
           this.errorToast(message);
-          if (!indicatorLed) {
-            this.indicatorLed === true;
-          } else {
-            this.indicatorLed === false;
-          }
         });
     },
   },
diff --git a/src/views/Overview/OverviewQuickLinks.vue b/src/views/Overview/OverviewQuickLinks.vue
index 207478a..82975f5 100644
--- a/src/views/Overview/OverviewQuickLinks.vue
+++ b/src/views/Overview/OverviewQuickLinks.vue
@@ -14,13 +14,13 @@
         <dt>{{ $t('pageOverview.quicklinks.serverLed') }}</dt>
         <dd>
           <b-form-checkbox
-            v-model="serverLedChecked"
+            v-model="indicatorLedActiveState"
             data-test-id="overviewQuickLinks-checkbox-serverLed"
             name="check-button"
             switch
             @change="onChangeServerLed"
           >
-            <span v-if="serverLedChecked">
+            <span v-if="indicatorLedActiveState">
               {{ $t('global.status.on') }}
             </span>
             <span v-else>{{ $t('global.status.off') }}</span>
@@ -67,9 +67,9 @@
     bmcTime() {
       return this.$store.getters['global/bmcTime'];
     },
-    serverLedChecked: {
+    indicatorLedActiveState: {
       get() {
-        return this.$store.getters['serverLed/getIndicatorValue'];
+        return this.$store.getters['serverLed/getIndicatorLedActiveState'];
       },
       set(value) {
         return value;
@@ -79,17 +79,22 @@
   created() {
     Promise.all([
       this.$store.dispatch('global/getBmcTime'),
-      this.$store.dispatch('serverLed/getIndicatorValue'),
+      this.$store.dispatch('serverLed/getIndicatorLedActiveState'),
     ]).finally(() => {
       this.$root.$emit('overview-quicklinks-complete');
     });
   },
   methods: {
-    onChangeServerLed(value) {
+    onChangeServerLed(indicatorLedActiveState) {
       this.$store
-        .dispatch('serverLed/saveIndicatorLedValue', value)
+        .dispatch(
+          'serverLed/saveIndicatorLedActiveState',
+          indicatorLedActiveState
+        )
         .then((message) => this.successToast(message))
-        .catch(({ message }) => this.errorToast(message));
+        .catch(({ message }) => {
+          this.errorToast(message);
+        });
     },
   },
 };
