diff --git a/src/components/AppHeader/AppHeader.vue b/src/components/AppHeader/AppHeader.vue
index a198495..859a47f 100644
--- a/src/components/AppHeader/AppHeader.vue
+++ b/src/components/AppHeader/AppHeader.vue
@@ -115,6 +115,7 @@
 import IconRenew from '@carbon/icons-vue/es/renew/20';
 import StatusIcon from '@/components/Global/StatusIcon';
 import LoadingBar from '@/components/Global/LoadingBar';
+import { mapState } from 'vuex';
 
 export default {
   name: 'AppHeader',
@@ -140,6 +141,7 @@
     };
   },
   computed: {
+    ...mapState('authentication', ['consoleWindow']),
     isNavTagPresent() {
       return this.assetTag || this.modelType || this.serialNumber;
     },
@@ -194,6 +196,9 @@
     },
   },
   watch: {
+    consoleWindow() {
+      if (this.consoleWindow === false) this.$eventBus.$consoleWindow.close();
+    },
     isAuthorized(value) {
       if (value === false) {
         this.errorToast(this.$t('global.toast.unAuthDescription'), {
diff --git a/src/eventBus.js b/src/eventBus.js
new file mode 100644
index 0000000..c31c98a
--- /dev/null
+++ b/src/eventBus.js
@@ -0,0 +1,5 @@
+import Vue from 'vue';
+
+const eventBus = new Vue();
+
+export default eventBus;
diff --git a/src/main.js b/src/main.js
index 0aae716..43d09b8 100644
--- a/src/main.js
+++ b/src/main.js
@@ -6,6 +6,7 @@
 //Exact match alias set to support
 //dotenv customizations.
 import store from './store';
+import eventBus from './eventBus';
 
 import {
   AlertPlugin,
@@ -135,3 +136,4 @@
   i18n,
   render: (h) => h(App),
 }).$mount('#app');
+Vue.prototype.$eventBus = eventBus;
diff --git a/src/views/Operations/Kvm/KvmConsole.vue b/src/views/Operations/Kvm/KvmConsole.vue
index 212514d..8483c4f 100644
--- a/src/views/Operations/Kvm/KvmConsole.vue
+++ b/src/views/Operations/Kvm/KvmConsole.vue
@@ -46,7 +46,6 @@
 import IconLaunch from '@carbon/icons-vue/es/launch/20';
 import IconArrowDown from '@carbon/icons-vue/es/arrow--down/16';
 import { throttle } from 'lodash';
-import { mapState } from 'vuex';
 
 const Connecting = 0;
 const Connected = 1;
@@ -63,7 +62,6 @@
   },
   data() {
     return {
-      isConsoleWindow: null,
       rfb: null,
       isConnected: false,
       terminalClass: this.isFullWindow ? 'full-window' : '',
@@ -74,7 +72,6 @@
     };
   },
   computed: {
-    ...mapState('authentication', ['consoleWindow']),
     serverStatusIcon() {
       if (this.status === Connected) {
         return 'success';
@@ -92,11 +89,6 @@
       return this.$t('pageKvm.connecting');
     },
   },
-  watch: {
-    consoleWindow() {
-      if (this.consoleWindow == false) this.isConsoleWindow.close();
-    },
-  },
   created() {
     this.$store.dispatch('global/getSystemInfo');
   },
@@ -154,24 +146,24 @@
       }
     },
     openConsoleWindow() {
-      // If isConsoleWindow is not null
+      // If consoleWindow is not null
       // Check the newly opened window is closed or not
-      if (this.isConsoleWindow) {
+      if (this.$eventBus.$consoleWindow) {
         // If window is not closed set focus to new window
         // If window is closed, do open new window
-        if (!this.isConsoleWindow.closed) {
-          this.isConsoleWindow.focus();
+        if (!this.$eventBus.$consoleWindow.closed) {
+          this.$eventBus.$consoleWindow.focus();
           return;
         } else {
           this.openNewWindow();
         }
       } else {
-        // If isConsoleWindow is null, open new window
+        // If consoleWindow is null, open new window
         this.openNewWindow();
       }
     },
     openNewWindow() {
-      this.isConsoleWindow = window.open(
+      this.$eventBus.$consoleWindow = window.open(
         '#/console/kvm',
         'kvmConsoleWindow',
         'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=700,height=550'
