diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java
index 1c7b174..1d7643f 100644
--- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java
+++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java
@@ -46,9 +46,8 @@
     private static final String URL = "%s://%s%s%s";
     private static final String ONBOARDING_CONTEXT = "/onboarding-api";
     private static final String DCAED_CONTEXT = "/dcae-api";
-    private static final String WORKFLOW_CONTEXT = "/wf";
     private static final String SDC1_FE_PROXY = "/sdc1/feProxy";
-    private static final String PLUGIN_ID_WORKFLOW = "WORKFLOW";
+    private static final String SDC1_PLUGIN_REDIRECT = SDC1_FE_PROXY + "/plugin";
 
     private static final Logger LOGGER = Logger.getLogger(FeProxyServlet.class);
     private static final int EXPIRE_DURATION = 10;
@@ -154,6 +153,24 @@
     }
 
 
+    /****
+     * scan all the plugins from the configuration against the URL and the redicert path
+     * @param request
+     * @return
+     */
+    private Plugin getPluginProxyForRequest(HttpServletRequest request) {
+        return getPluginConfiguration(request).getPluginsList()
+                .stream()
+                .filter(plugin -> {
+                    if (plugin.getPluginProxyRedirectPath() != null && !plugin.getPluginProxyRedirectPath().isEmpty()) {
+                        return request.getRequestURI().contains(SDC1_PLUGIN_REDIRECT + plugin.getPluginProxyRedirectPath());
+                    } else {
+                        return false;
+                    }
+                })
+                .findFirst().orElse(null);
+    }
+
     private String getModifiedUrl(HttpServletRequest request) throws MalformedURLException {
         Configuration config = getConfiguration(request);
         if (config == null) {
@@ -161,50 +178,77 @@
             throw new RuntimeException("failed to read FE configuration");
         }
         String uri = request.getRequestURI();
-        String protocol;
-        String host;
-        String port;
+
+        // the modify logic is as follows:
+        // - proxy ONBOARDING to the onboarding context. this is not a plugin and hardcoded
+        // - proxy DCAE to the correct context. also - not a plugin but hardcoded
+        // - proxy to the plugin according to configuration if the path is found in the plugin patterns
+        // - proxy to the catalog backend if no other proxy was found
+
         if (uri.contains(ONBOARDING_CONTEXT)) {
             uri = uri.replace(SDC1_FE_PROXY + ONBOARDING_CONTEXT, ONBOARDING_CONTEXT);
-            protocol = config.getOnboarding().getProtocolBe();
-            host = config.getOnboarding().getHostBe();
-            port = config.getOnboarding().getPortBe().toString();
-        } else if (uri.contains(DCAED_CONTEXT)) {
+            return getModifiedUrlString(
+                    request,
+                    uri,
+                    config.getOnboarding().getHostBe(),
+                    config.getOnboarding().getPortBe().toString(),
+                    config.getOnboarding().getProtocolBe());
+        }
+        if (uri.contains(DCAED_CONTEXT)) {
             uri = uri.replace(SDC1_FE_PROXY + DCAED_CONTEXT, DCAED_CONTEXT);
-            protocol = config.getBeProtocol();
-            host = config.getBeHost();
-            if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) {
-                port = config.getBeHttpPort().toString();
-            } else {
-                port = config.getBeSslPort().toString();
-            }
-        } else if (uri.contains(WORKFLOW_CONTEXT)) {
-            String workflowPluginURL = getPluginConfiguration(request).getPluginsList()
-                    .stream()
-                    .filter(plugin -> plugin.getPluginId().equalsIgnoreCase(PLUGIN_ID_WORKFLOW))
-                    .map(Plugin::getPluginDiscoveryUrl)
-                    .findFirst().orElse(null);
+            return getModifiedUrlString(
+                    request,
+                    uri,
+                    config.getBeHost(),
+                    getCatalogBePort(config),
+                    config.getBeProtocol());
+        }
 
-            java.net.URL workflowURL = new URL(workflowPluginURL);
-            protocol = workflowURL.getProtocol();
-            host = workflowURL.getHost();
-            port = String.valueOf(workflowURL.getPort());
-            uri = uri.replace(SDC1_FE_PROXY + WORKFLOW_CONTEXT, workflowURL.getPath() + WORKFLOW_CONTEXT);
-        } else {
-            uri = uri.replace(SDC1_FE_PROXY, "/sdc2");
-            protocol = config.getBeProtocol();
-            host = config.getBeHost();
-            if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) {
-                port = config.getBeHttpPort().toString();
-            } else {
-                port = config.getBeSslPort().toString();
+        if (uri.contains(SDC1_PLUGIN_REDIRECT)) {
+            Plugin proxyPlugin = getPluginProxyForRequest(request);
+            if (proxyPlugin != null) {
+                String proxyUrlStr = (proxyPlugin.getPluginFeProxyUrl() != null) ? proxyPlugin.getPluginFeProxyUrl() : proxyPlugin.getPluginSourceUrl();
+                URL proxyUrl = new URL(proxyUrlStr);
+                uri = uri.replace(SDC1_PLUGIN_REDIRECT + proxyPlugin.getPluginProxyRedirectPath(), proxyUrl.getPath());
+                return getModifiedUrlString(request, uri, proxyUrl);
             }
         }
 
+        Plugin proxyPlugin = getPluginProxyForRequest(request);
+        if (proxyPlugin != null) {
+            String proxyUrlStr = (proxyPlugin.getPluginFeProxyUrl() != null) ? proxyPlugin.getPluginFeProxyUrl() : proxyPlugin.getPluginSourceUrl();
+            URL proxyUrl = new URL(proxyUrlStr);
+            uri = uri.replace(SDC1_FE_PROXY + proxyPlugin.getPluginProxyRedirectPath(), proxyUrl.getPath());
+            return getModifiedUrlString(request, uri, proxyUrl);
+        }
+
+        uri = uri.replace(SDC1_FE_PROXY, "/sdc2");
+        return getModifiedUrlString(
+                request,
+                uri,
+                config.getBeHost(),
+                getCatalogBePort(config),
+                config.getBeProtocol());
+    }
+
+
+    private String getCatalogBePort(Configuration config) {
+        if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) {
+            return config.getBeHttpPort().toString();
+        } else {
+            return config.getBeSslPort().toString();
+        }
+    }
+
+    private String getModifiedUrlString(HttpServletRequest request, String uri, URL url) {
+        String queryString = getQueryString(request);
+        return String.format(URL, url.getProtocol(), url.getAuthority(), uri, queryString);
+    }
+
+    private String getModifiedUrlString(HttpServletRequest request, String uri, String host, String port, String protocol) {
         String authority = getAuthority(host, port);
         String queryString = getQueryString(request);
         return String.format(URL, protocol, authority, uri, queryString);
-
     }
 
     private PluginsConfiguration getPluginConfiguration(HttpServletRequest request) {
diff --git a/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java b/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java
index 4915936..81e939b 100644
--- a/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java
+++ b/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java
@@ -113,7 +113,12 @@
 		when(plugin.getPluginId()).thenReturn("WORKFLOW");
 		when(plugin.getPluginSourceUrl()).thenReturn(WF_PROTOCOL + "://" + WF_HOST + ":" + WF_PORT);
 		when(plugin.getPluginDiscoveryUrl()).thenReturn(WF_PROTOCOL + "://" + WF_HOST + ":" + WF_PORT + "/workflows");
+		when(plugin.getPluginFeProxyUrl()).thenReturn(WF_PROTOCOL + "://" + WF_HOST + ":" + WF_PORT + "/workflows/wf/");
+		when(plugin.getPluginProxyRedirectPath()).thenReturn("/wf/");
 		pluginList.add(plugin);
+		PluginsConfiguration.Plugin noConfigPlugin = new PluginsConfiguration.Plugin();
+		noConfigPlugin.setPluginId("NO_CONFIG");
+		pluginList.add(noConfigPlugin);
 		when(configurationManager.getPluginsConfiguration()).thenReturn(pluginsConfiguration);
 		when(pluginsConfiguration.getPluginsList()).thenReturn(pluginList);
 
@@ -182,17 +187,31 @@
 
 	@Test
 	public void testRewriteURIWithWFAPIRequest() {
-		when(servletRequest.getRequestURI()).thenReturn("/sdc1/feProxy/wf/workflows");
-		String requestResourceUrl = "http://localhost:8080/sdc1/feProxy/wf/workflows";
+		when(servletRequest.getRequestURI()).thenReturn("/sdc1/feProxy/plugin/wf/workflows");
+		String requestResourceUrl = "http://localhost:8080/sdc1/feProxy/plugin/wf/workflows";
 		String expectedChangedUrl = WF_PROTOCOL + "://" + WF_HOST + ":" + WF_PORT + "/workflows/wf/workflows";
 		when(servletRequest.getRequestURL()).thenReturn(new StringBuffer(requestResourceUrl));
 
 		when(servletRequest.getContextPath()).thenReturn("/sdc1");
+		when(servletRequest.getServletPath()).thenReturn("/feProxy/plugin/wf/workflows");
+
+		String rewriteURI = feProxy.rewriteTarget(servletRequest);
+
+		assertEquals(expectedChangedUrl, rewriteURI);
+
+		// now test in case it did not go through the plugin
+		when(servletRequest.getRequestURI()).thenReturn("/sdc1/feProxy/wf/workflows");
+		requestResourceUrl = "http://localhost:8080/sdc1/feProxy/wf/workflows";
+		expectedChangedUrl = BE_PROTOCOL + "://" + BE_HOST + ":" + BE_PORT + "/sdc2/wf/workflows";
+		when(servletRequest.getRequestURL()).thenReturn(new StringBuffer(requestResourceUrl));
+
+		when(servletRequest.getContextPath()).thenReturn("/sdc1");
 		when(servletRequest.getServletPath()).thenReturn("/feProxy/wf/workflows");
 
-		String rewriteURI = feProxy.rewriteTarget(servletRequest);
+		rewriteURI = feProxy.rewriteTarget(servletRequest);
 
 		assertEquals(expectedChangedUrl, rewriteURI);
+
 	}
 
 	/**
diff --git a/catalog-ui/configurations/dev.js b/catalog-ui/configurations/dev.js
index bca5912..be1f52a 100644
--- a/catalog-ui/configurations/dev.js
+++ b/catalog-ui/configurations/dev.js
@@ -49,7 +49,7 @@
 		"GET_lifecycle_state_UNDOCHECKOUT":"lifecycleState/UNDOCHECKOUT",
 		"root": "/sdc1/feProxy/rest",
         "no_proxy_root": "/sdc1/rest",
-		"workflow_root": "/sdc1/feProxy/wf",
+		"workflow_root": "/sdc1/feProxy/plugin/wf",
 		"POST_workflow_artifact": "sdc/v1/catalog",
 		"PUT_service": "/v1/catalog/services/:id/metadata",
 		"GET_download_artifact": "/v1/catalog/",
diff --git a/catalog-ui/configurations/prod.js b/catalog-ui/configurations/prod.js
index 496c576..32c9ae2 100644
--- a/catalog-ui/configurations/prod.js
+++ b/catalog-ui/configurations/prod.js
@@ -49,7 +49,7 @@
 		"GET_lifecycle_state_UNDOCHECKOUT":"lifecycleState/UNDOCHECKOUT",
 		"root": "/sdc1/feProxy/rest",
         "no_proxy_root": "/sdc1/rest",
-		"workflow_root": "/sdc1/feProxy/wf",
+		"workflow_root": "/sdc1/feProxy/plugin/wf",
 		"POST_workflow_artifact": "sdc/v1/catalog",
 		"PUT_service": "/v1/catalog/services/:id/metadata",
 		"GET_download_artifact": "/v1/catalog/",
diff --git a/common-app-api/src/main/java/org/openecomp/sdc/fe/config/PluginsConfiguration.java b/common-app-api/src/main/java/org/openecomp/sdc/fe/config/PluginsConfiguration.java
index 449c9ea..55b0ea0 100644
--- a/common-app-api/src/main/java/org/openecomp/sdc/fe/config/PluginsConfiguration.java
+++ b/common-app-api/src/main/java/org/openecomp/sdc/fe/config/PluginsConfiguration.java
@@ -20,132 +20,50 @@
 
 package org.openecomp.sdc.fe.config;
 
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
 import org.openecomp.sdc.common.api.BasicConfiguration;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+@Getter
+@Setter
+@ToString
 public class PluginsConfiguration extends BasicConfiguration {
 
     private List<Plugin> pluginsList;
     private Integer connectionTimeout;
 
-    public List<Plugin> getPluginsList() {
-        return pluginsList;
-    }
-
-    public void setPluginsList(List<Plugin> pluginsList) {
-        this.pluginsList = pluginsList;
-    }
-
-    public Integer getConnectionTimeout() {
-        return connectionTimeout;
-    }
-
-    public void setConnectionTimeout(Integer connectionTimeout) {
-        this.connectionTimeout = connectionTimeout;
-    }
-
     public PluginsConfiguration() {
         this.pluginsList = new ArrayList<>();
     }
 
+    @Getter
+    @Setter
     public static class Plugin {
-
         private String pluginId;
         private String pluginDiscoveryUrl;
         private String pluginSourceUrl;
         private String pluginStateUrl;
+        private String pluginFeProxyUrl; // this is optional in case it is different from the source url.
+        private String pluginProxyRedirectPath;
         private Map<String, PluginDisplayOptions> pluginDisplayOptions;
         private boolean isOnline;
 
-        public String getPluginId() {
-            return pluginId;
-        }
-
-        public void setPluginId(String pluginId) {
-            this.pluginId = pluginId;
-        }
-
-        public String getPluginDiscoveryUrl() {
-            return pluginDiscoveryUrl;
-        }
-
-        public void setPluginDiscoveryUrl(String pluginDiscoveryUrl) {
-            this.pluginDiscoveryUrl = pluginDiscoveryUrl;
-        }
-
-        public String getPluginSourceUrl() {
-            return pluginSourceUrl;
-        }
-
-        public void setPluginSourceUrl(String pluginSourceUrl) {
-            this.pluginSourceUrl = pluginSourceUrl;
-        }
-
-        public String getPluginStateUrl() {
-            return pluginStateUrl;
-        }
-
-        public void setPluginStateUrl(String pluginStateUrl) {
-            this.pluginStateUrl = pluginStateUrl;
-        }
-
-        public Map<String, PluginDisplayOptions> getPluginDisplayOptions() {
-            return pluginDisplayOptions;
-        }
-
-        public void setPluginDisplayOptions(Map<String, PluginDisplayOptions> pluginDisplayOptions) {
-            this.pluginDisplayOptions = pluginDisplayOptions;
-        }
-
     }
 
+    @Getter
+    @Setter
+    @ToString
     public static class PluginDisplayOptions {
-
         private String displayName;
         private List<String> displayContext;
         private List<String> displayRoles;
-
-        public String getDisplayName() {
-            return displayName;
-        }
-
-        public void setDisplayName(String displayName) {
-            this.displayName = displayName;
-        }
-
-        public List<String> getDisplayContext() {
-            return displayContext;
-        }
-
-        public void setDisplayContext(List<String> displayContext) {
-            this.displayContext = displayContext;
-        }
-
-        public List<String> getDisplayRoles() {
-            return displayRoles;
-        }
-
-        public void setDisplayRoles(List<String> displayRoles) {
-            this.displayRoles = displayRoles;
-        }
-
-        @Override
-        public String toString() {
-            return "PluginDisplayOptions["
-                    + "displayName='" + displayName
-                    + ", displayContext=" + displayContext
-                    + ", displayRoles=" + displayRoles
-                    + ']';
-        }
     }
 
-    @Override
-    public String toString() {
-        return "PluginsConfiguration[" + "pluginsList=" + pluginsList + ", connectionTimeout=" + connectionTimeout + ']';
-    }
 }
 
 
diff --git a/docs/configuration.rst b/docs/configuration.rst
index 59f571d..5156f6e 100644
--- a/docs/configuration.rst
+++ b/docs/configuration.rst
@@ -1382,6 +1382,10 @@
    # definition of the plugins that exist in sdc
    # we have a pre-defined list of plugins that are connected to the system.
    # the plugins define where they are shown, to whom and on what elements
+   # in addition, the catalog can proxy to the plugin as well if the following 2 keys are set:
+   #     pluginFeProxyUrl - the pattern of the url that should be proxied after the sdc1/feProxy/plugin prefix
+   #     pluginProxyRedirectPath - the redirect path to the plugin (full url including protool/host and port)
+
    pluginsList:
         # the DCAE-DS is the SDC monitoring design studio this entry defines there use as part of the service level context
       - pluginId: DCAED
@@ -1414,6 +1418,8 @@
       - pluginId: WORKFLOW
         pluginDiscoveryUrl: <%= @workflow_discovery_url %>
         pluginSourceUrl: <%= @workflow_source_url %>
+        pluginFeProxyUrl: <%= @workflow_fe_proxy_url %>
+        pluginProxyRedirectPath: <%= @workflow_redirect_path %>
         pluginStateUrl: "workflowDesigner"
         pluginDisplayOptions:
            tab:
diff --git a/sdc-os-chef/environments/plugins-configuration.yaml b/sdc-os-chef/environments/plugins-configuration.yaml
index 21de746..1135cbb 100644
--- a/sdc-os-chef/environments/plugins-configuration.yaml
+++ b/sdc-os-chef/environments/plugins-configuration.yaml
@@ -19,6 +19,8 @@
    - pluginId: WORKFLOW
      pluginDiscoveryUrl: <%= @workflow_discovery_url %>
      pluginSourceUrl: <%= @workflow_source_url %>
+     pluginFeProxyUrl: <%= @workflow_fe_proxy_url %>
+     pluginProxyRedirectPath: <%= @workflow_redirect_path %>
      pluginStateUrl: "workflowDesigner"
      pluginDisplayOptions:
         tab:
diff --git a/sdc-os-chef/kubernetes/sdc/templates/configmaps/sdc-environment-configmap.yaml b/sdc-os-chef/kubernetes/sdc/templates/configmaps/sdc-environment-configmap.yaml
index 0eb5289..e332729 100644
--- a/sdc-os-chef/kubernetes/sdc/templates/configmaps/sdc-environment-configmap.yaml
+++ b/sdc-os-chef/kubernetes/sdc/templates/configmaps/sdc-environment-configmap.yaml
@@ -57,7 +57,9 @@
                 },
                 "WORKFLOW": {
                     "workflow_discovery_url": "10.0.2.15",
-                    "workflow_source_url": "10.0.2.15"
+                    "workflow_source_url": "10.0.2.15",
+                    "workflow_fe_proxy_url": "10.0.2.15",
+                    "workflow_redirect_path": "/wf"
                 }
             },
                "VnfRepo": {
