diff --git a/catalog-ui/src/app/models/plugins-config.ts b/catalog-ui/src/app/models/plugins-config.ts
index 18782ec..3f687a3 100644
--- a/catalog-ui/src/app/models/plugins-config.ts
+++ b/catalog-ui/src/app/models/plugins-config.ts
@@ -1,17 +1,16 @@
 
 export class Plugin {
     pluginId: string;
-    pluginHost: string;
-    pluginPort: string;
-    pluginPath: string;
+    pluginDiscoveryUrl: string;
+    pluginSourceUrl: string;
     pluginStateUrl: string;
-    pluginProtocol: string;
     pluginDisplayOptions: Map<string, PluginDisplayOptions>;
 }
 
 export class PluginDisplayOptions {
     displayName: string;
     displayContext: Array<string>;
+    displayRoles: Array<string>;
 }
 
 export type Plugins = Array<Plugin>;
diff --git a/catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.ts b/catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.ts
index 5e43fec..b8b0e80 100644
--- a/catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.ts
+++ b/catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.ts
@@ -120,14 +120,15 @@
                         tmpArray.push(new MenuItem(hostedApp.navTitle, null, hostedApp.defaultState, "goToState", null, null));
                     }
                 });
-
-                _.each(PluginsConfiguration.plugins, (plugin: Plugin) => {
-                    if (plugin.pluginDisplayOptions["top"]) {
-                        tmpArray.push(new MenuItem(plugin.pluginDisplayOptions["top"].displayName, null, "plugins", "goToState", {path: plugin.pluginStateUrl}, null));
-                    }
-                })
             }
 
+            // Adding plugins to top-nav only if they can be displayed for the current connected user role
+            _.each(PluginsConfiguration.plugins, (plugin: Plugin) => {
+                if (plugin.pluginDisplayOptions["tab"] && (this.user && plugin.pluginDisplayOptions["tab"].displayRoles.includes(this.user.role))) {
+                    tmpArray.push(new MenuItem(plugin.pluginDisplayOptions["tab"].displayName, null, "plugins", "goToState", {path: plugin.pluginStateUrl}, null));
+                }
+            });
+
             this.topLvlMenu = new MenuItemGroup(0, tmpArray, true);
             this.topLvlMenu.selectedIndex = isNaN(this.topLvlSelectedIndex) ? this._getTopLvlSelectedIndexByState() : this.topLvlSelectedIndex;
 
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 169cad0..801dfa9 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
@@ -21,10 +21,7 @@
 
     ngOnInit(): void {
 
-        this.pluginUrl = this.plugin.pluginProtocol + "://" +
-            this.plugin.pluginHost + ":" +
-            this.plugin.pluginPort +
-            this.plugin.pluginPath;
+        this.pluginUrl = this.plugin.pluginSourceUrl;
 
         if (this.queryParams && !_.isEmpty(this.queryParams)) {
             _.forOwn(this.queryParams, (value, key) => {
diff --git a/catalog-ui/src/app/view-models/plugins/plugins-tab-view-model.ts b/catalog-ui/src/app/view-models/plugins/plugins-tab-view-model.ts
index ce09800..d9dc40b 100644
--- a/catalog-ui/src/app/view-models/plugins/plugins-tab-view-model.ts
+++ b/catalog-ui/src/app/view-models/plugins/plugins-tab-view-model.ts
@@ -34,7 +34,9 @@
         this.$scope.user = this.cacheService.get('user');
 
         this.$scope.queryParams = {
-            userId: this.$scope.user.userId
+            userId: this.$scope.user.userId,
+            userRole: this.$scope.user.role,
+            displayType: "tab"
         };
     }
 }
diff --git a/catalog-ui/src/app/view-models/workspace/tabs/plugins/plugins-context-view-model.ts b/catalog-ui/src/app/view-models/workspace/tabs/plugins/plugins-context-view-model.ts
index 76010b5..ca8c269 100644
--- a/catalog-ui/src/app/view-models/workspace/tabs/plugins/plugins-context-view-model.ts
+++ b/catalog-ui/src/app/view-models/workspace/tabs/plugins/plugins-context-view-model.ts
@@ -33,6 +33,8 @@
 
         this.$scope.queryParams = {
             userId: this.$scope.user.userId,
+            userRole: this.$scope.user.role,
+            displayType: "context",
             contextType: this.$scope.component.componentType,
             uuid: this.$scope.component.uuid,
             lifecycleState: this.$scope.component.lifecycleState,
diff --git a/catalog-ui/src/app/view-models/workspace/workspace-view-model.ts b/catalog-ui/src/app/view-models/workspace/workspace-view-model.ts
index 59dd2d8..0f9d759 100644
--- a/catalog-ui/src/app/view-models/workspace/workspace-view-model.ts
+++ b/catalog-ui/src/app/view-models/workspace/workspace-view-model.ts
@@ -719,23 +719,21 @@
         this.$scope.leftBarTabs = new MenuItemGroup();
         const menuItemsObjects:Array<any> = this.updateMenuItemByRole(this.sdcMenu.component_workspace_menu_option[this.$scope.component.getComponentSubType()], this.role);
 
-        // Only need to add plugins to the menu if the current role is Designer
-        if (this.role === "DESIGNER") {
-            _.each(PluginsConfiguration.plugins, (plugin: Plugin) => {
-                if (plugin.pluginDisplayOptions["context"]) {
-                    let displayOptions : PluginDisplayOptions = plugin.pluginDisplayOptions["context"];
+        // Only adding plugins to the workspace if they can be displayed for the current user role
+        _.each(PluginsConfiguration.plugins, (plugin: Plugin) => {
+            if (plugin.pluginDisplayOptions["context"] && plugin.pluginDisplayOptions["context"].displayRoles.includes(this.role)) {
+                let displayOptions : PluginDisplayOptions = plugin.pluginDisplayOptions["context"];
 
-                    if (displayOptions.displayContext.indexOf(this.$scope.component.componentType) !== -1) {
-                        menuItemsObjects.push({
-                            text: displayOptions.displayName,
-                            action: 'onMenuItemPressed',
-                            state: 'workspace.plugins',
-                            params: {path: plugin.pluginStateUrl}
-                        });
-                    }
+                if (displayOptions.displayContext.indexOf(this.$scope.component.getComponentSubType()) !== -1) {
+                    menuItemsObjects.push({
+                        text: displayOptions.displayName,
+                        action: 'onMenuItemPressed',
+                        state: 'workspace.plugins',
+                        params: {path: plugin.pluginStateUrl}
+                    });
                 }
-            });
-        }
+            }
+        });
 
         this.$scope.leftBarTabs.menuItems = menuItemsObjects.map((item:MenuItem) => {
             if (item.params) {
