diff --git a/catalog-ui/src/app/models/app-config.ts b/catalog-ui/src/app/models/app-config.ts
index a0ebb54..0e6284c 100644
--- a/catalog-ui/src/app/models/app-config.ts
+++ b/catalog-ui/src/app/models/app-config.ts
@@ -54,6 +54,7 @@
     GET_activity_log:string;
     GET_configuration_ui:string;
     GET_plugins_configuration:string;
+    GET_plugin_online_state:string;
     GET_service:string;
     GET_ecomp_menu_items:string;
     GET_service_validate_name:string;
diff --git a/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.html b/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.html
index 54a5c26..cce1c40 100644
--- a/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.html
+++ b/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.html
@@ -13,10 +13,10 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-  
+
 <div class="plugin-frame">
     <div class="w-sdc-main-container">
         <iframe *ngIf="plugin.isOnline" class="plugin-iframe" [src]="pluginUrl | safeUrlSanitizer"></iframe>
-        <plugin-not-connected [pluginName]="plugin.pluginId" *ngIf="!plugin.isOnline"></plugin-not-connected>
+        <plugin-not-connected [pluginName]="plugin.pluginId" *ngIf="!plugin.isOnline && isPluginCheckDone"></plugin-not-connected>
     </div>
 </div>
diff --git a/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts b/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts
index cd92cca..067bb96 100644
--- a/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts
+++ b/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts
@@ -2,6 +2,7 @@
 import {URLSearchParams} from '@angular/http';
 import {Plugin} from "app/models";
 import {EventBusService} from "../../../services/event-bus.service";
+import {PluginsService} from "../../../services/plugins.service";
 
 @Component({
     selector: 'plugin-frame',
@@ -17,17 +18,26 @@
     pluginUrl: string;
     private urlSearchParams: URLSearchParams;
     private isClosed: boolean;
+    private isPluginCheckDone: boolean;
 
     constructor(private eventBusService: EventBusService,
+                private pluginsService: PluginsService,
                 @Inject('$scope') private $scope: ng.IScope,
                 @Inject('$state') private $state: ng.ui.IStateService) {
         this.urlSearchParams = new URLSearchParams();
+        this.isPluginCheckDone = false;
     }
 
     ngOnInit(): void {
-        if (this.plugin.isOnline) {
-            this.initPlugin();
-        }
+        this.pluginsService.isPluginOnline(this.plugin.pluginId).subscribe(isPluginOnline => {
+            this.plugin.isOnline = isPluginOnline;
+            this.isPluginCheckDone = true;
+
+            if (this.plugin.isOnline) {
+                this.initPlugin();
+            }
+        })
+
     }
 
     private initPlugin() {
diff --git a/catalog-ui/src/app/ng2/services/plugins.service.ts b/catalog-ui/src/app/ng2/services/plugins.service.ts
index 7a85b6e..2a3b68f 100644
--- a/catalog-ui/src/app/ng2/services/plugins.service.ts
+++ b/catalog-ui/src/app/ng2/services/plugins.service.ts
@@ -1,10 +1,19 @@
-import { Injectable } from '@angular/core';
-import {Plugin, PluginsConfiguration} from "app/models";
+import { Injectable, Inject } from '@angular/core';
+import {Observable} from 'rxjs/Observable';
+import {Http, Response} from '@angular/http';
+import {IApi, IAppConfigurtaion, Plugin, Plugins, PluginsConfiguration} from "app/models";
+import {ISdcConfig, SdcConfigToken} from "../config/sdc-config.config";
 
 @Injectable()
 export class PluginsService {
 
-    constructor() {
+    private baseUrl;
+    public configuration: IAppConfigurtaion;
+    public api: IApi;
+
+    constructor(private http: Http, @Inject(SdcConfigToken) private sdcConfig:ISdcConfig) {
+        this.api = this.sdcConfig.api;
+        this.baseUrl = this.api.root + this.sdcConfig.api.component_api_root;
     }
 
     public getPluginByStateUrl = (stateUrl: string) => {
@@ -20,4 +29,12 @@
                plugin.pluginDisplayOptions["context"].displayRoles.includes(userRole) &&
                plugin.pluginDisplayOptions["context"].displayContext.indexOf(contextType) !== -1
     };
+
+    public isPluginOnline = (pluginId: string): Observable<boolean> => {
+        let url:string = this.api.no_proxy_root + this.api.GET_plugin_online_state.replace(':pluginId', pluginId);
+        return this.http.get(url).map((res: Response) => {
+            return res.json()
+        })
+        .catch(error => Observable.of(false));
+    }
 }
