diff --git a/src/views/Control/ServerPowerOperations/BootSettings.vue b/src/views/Control/ServerPowerOperations/BootSettings.vue
index eda4eda..efd8d34 100644
--- a/src/views/Control/ServerPowerOperations/BootSettings.vue
+++ b/src/views/Control/ServerPowerOperations/BootSettings.vue
@@ -60,14 +60,14 @@
   data() {
     return {
       form: {
-        bootOption: this.$store.getters['hostBootSettings/bootSource'],
-        oneTimeBoot: this.$store.getters['hostBootSettings/overrideEnabled'],
-        tpmPolicyOn: this.$store.getters['hostBootSettings/tpmEnabled'],
+        bootOption: this.$store.getters['serverBootSettings/bootSource'],
+        oneTimeBoot: this.$store.getters['serverBootSettings/overrideEnabled'],
+        tpmPolicyOn: this.$store.getters['serverBootSettings/tpmEnabled'],
       },
     };
   },
   computed: {
-    ...mapState('hostBootSettings', [
+    ...mapState('serverBootSettings', [
       'bootSourceOptions',
       'bootSource',
       'overrideEnabled',
@@ -96,7 +96,7 @@
   },
   created() {
     this.$store
-      .dispatch('hostBootSettings/getTpmPolicy')
+      .dispatch('serverBootSettings/getTpmPolicy')
       .finally(() =>
         this.$root.$emit('server-power-operations-boot-settings-complete')
       );
@@ -122,7 +122,7 @@
       settings = { bootSource, overrideEnabled, tpmEnabled };
 
       this.$store
-        .dispatch('hostBootSettings/saveSettings', settings)
+        .dispatch('serverBootSettings/saveSettings', settings)
         .then((message) => this.successToast(message))
         .catch(({ message }) => this.errorToast(message))
         .finally(() => {
diff --git a/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue b/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue
index 4ea7765..9e03083 100644
--- a/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue
+++ b/src/views/Control/ServerPowerOperations/ServerPowerOperations.vue
@@ -9,15 +9,15 @@
           <b-row>
             <b-col>
               <dl>
-                <dt>{{ $t('pageServerPowerOperations.hostStatus') }}</dt>
+                <dt>{{ $t('pageServerPowerOperations.serverStatus') }}</dt>
                 <dd
-                  v-if="hostStatus === 'on'"
+                  v-if="serverStatus === 'on'"
                   data-test-id="powerServerOps-text-hostStatus"
                 >
                   {{ $t('global.status.on') }}
                 </dd>
                 <dd
-                  v-else-if="hostStatus === 'off'"
+                  v-else-if="serverStatus === 'off'"
                   data-test-id="powerServerOps-text-hostStatus"
                 >
                   {{ $t('global.status.off') }}
@@ -51,7 +51,7 @@
     <b-row>
       <b-col v-if="hasBootSourceOptions" sm="8" md="6" xl="4">
         <page-section
-          :section-title="$t('pageServerPowerOperations.hostOsBootSettings')"
+          :section-title="$t('pageServerPowerOperations.serverBootSettings')"
         >
           <boot-settings />
         </page-section>
@@ -68,7 +68,7 @@
               {{ $t('pageServerPowerOperations.operationInProgress') }}
             </alert>
           </template>
-          <template v-else-if="hostStatus === 'off'">
+          <template v-else-if="serverStatus === 'off'">
             <b-button
               variant="primary"
               data-test-id="serverPowerOperations-button-powerOn"
@@ -170,8 +170,8 @@
     };
   },
   computed: {
-    hostStatus() {
-      return this.$store.getters['global/hostStatus'];
+    serverStatus() {
+      return this.$store.getters['global/serverStatus'];
     },
     isOperationInProgress() {
       return this.$store.getters['controls/isOperationInProgress'];
@@ -180,11 +180,11 @@
       return this.$store.getters['controls/lastPowerOperationTime'];
     },
     oneTimeBootEnabled() {
-      return this.$store.getters['hostBootSettings/overrideEnabled'];
+      return this.$store.getters['serverBootSettings/overrideEnabled'];
     },
     hasBootSourceOptions() {
       let bootOptions = this.$store.getters[
-        'hostBootSettings/bootSourceOptions'
+        'serverBootSettings/bootSourceOptions'
       ];
       return bootOptions.length !== 0;
     },
@@ -197,14 +197,14 @@
       );
     });
     Promise.all([
-      this.$store.dispatch('hostBootSettings/getBootSettings'),
+      this.$store.dispatch('serverBootSettings/getBootSettings'),
       this.$store.dispatch('controls/getLastPowerOperationTime'),
       bootSettingsPromise,
     ]).finally(() => this.endLoader());
   },
   methods: {
     powerOn() {
-      this.$store.dispatch('controls/hostPowerOn');
+      this.$store.dispatch('controls/serverPowerOn');
     },
     rebootServer() {
       const modalMessage = this.$t(
@@ -220,13 +220,13 @@
         this.$bvModal
           .msgBoxConfirm(modalMessage, modalOptions)
           .then((confirmed) => {
-            if (confirmed) this.$store.dispatch('controls/hostSoftReboot');
+            if (confirmed) this.$store.dispatch('controls/serverSoftReboot');
           });
       } else if (this.form.rebootOption === 'immediate') {
         this.$bvModal
           .msgBoxConfirm(modalMessage, modalOptions)
           .then((confirmed) => {
-            if (confirmed) this.$store.dispatch('controls/hostHardReboot');
+            if (confirmed) this.$store.dispatch('controls/serverHardReboot');
           });
       }
     },
@@ -244,14 +244,14 @@
         this.$bvModal
           .msgBoxConfirm(modalMessage, modalOptions)
           .then((confirmed) => {
-            if (confirmed) this.$store.dispatch('controls/hostSoftPowerOff');
+            if (confirmed) this.$store.dispatch('controls/serverSoftPowerOff');
           });
       }
       if (this.form.shutdownOption === 'immediate') {
         this.$bvModal
           .msgBoxConfirm(modalMessage, modalOptions)
           .then((confirmed) => {
-            if (confirmed) this.$store.dispatch('controls/hostHardPowerOff');
+            if (confirmed) this.$store.dispatch('controls/serverHardPowerOff');
           });
       }
     },
