Merge "LanguageController tests up"
diff --git a/deliveries/Dockerfile.be b/deliveries/Dockerfile.be
new file mode 100644
index 0000000..afc3981
--- /dev/null
+++ b/deliveries/Dockerfile.be
@@ -0,0 +1,54 @@
+# Dockerfile for image with ONAP Portal
+ARG BE_BASE_IMAGE=tomcat:8.5.35-jre8-alpine
+FROM ${BE_BASE_IMAGE}
+
+RUN apk add sudo && echo "portal ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
+# Arguments are supplied by build.sh script
+# the defaults below only support testing
+ARG PORTAL_WAR=build/ecompportal-be-os.war
+ARG HTTP_PROXY
+ARG HTTPS_PROXY
+# ARG PORTAL_CERT=truststoreONAPall.jks
+
+# Just variables, never passed in
+ARG PORTALCONTEXT=ONAPPORTAL
+
+ARG TOMCAT=/usr/local/tomcat
+ARG TOMCATHOME=${TOMCAT}
+ARG SERVERXML=${SERVERXML}
+
+ENV http_proxy $HTTP_PROXY
+ENV https_proxy $HTTPS_PROXY
+
+RUN if [ -d /etc/apt ] && [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
+    if [ -d /etc/apt ] && [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi
+
+# Remove manager and sample apps
+RUN rm -rf ${TOMCAT}/webapps/[a-z]*
+RUN mkdir -p /opt
+COPY ${SERVERXML} ${TOMCAT}/conf
+# TODO: ????
+#RUN mv ${TOMCAT} /opt
+
+WORKDIR ${TOMCATHOME}/webapps
+RUN mkdir ${PORTALCONTEXT}
+
+# Portal has many parts
+COPY $PORTAL_WAR ${PORTALCONTEXT}
+RUN cd ${PORTALCONTEXT} && unzip -q *.war && rm *.war
+
+VOLUME ${TOMCATHOME}/logs
+
+RUN addgroup -g 1000 -S portal && adduser -u 1000 -S portal -G portal && chown -R portal:portal . && chmod -R 777 /etc/ssl/certs/java /var/
+
+# Switch back to root
+WORKDIR /
+
+# Define commonly used ENV variables
+ENV PATH $PATH:$JAVA_HOME/bin:${TOMCATHOME}/bin
+# Install the launch script
+COPY start-apache-tomcat.sh /
+
+# Define default command
+ENV TOMCATHOME=$TOMCATHOME
+CMD /start-apache-tomcat.sh -b $TOMCATHOME
diff --git a/deliveries/Dockerfile.fe b/deliveries/Dockerfile.fe
new file mode 100644
index 0000000..9af10cc
--- /dev/null
+++ b/deliveries/Dockerfile.fe
@@ -0,0 +1,20 @@
+ARG FE_BASE_IMAGE=httpd:2.4.34-alpine
+FROM ${FE_BASE_IMAGE}
+
+ARG FE_DIR=build/public
+ARG HTTP_PROXY
+ARG HTTPS_PROXY
+# ARG PORTAL_CERT=truststoreONAPall.jks
+
+ARG FECONTEXT=ONAPPORTAL
+
+ENV http_proxy $HTTP_PROXY
+ENV https_proxy $HTTPS_PROXY
+RUN if [ -d /etc/apt ] && [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
+    if [ -d /etc/apt ] && [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi
+
+RUN addgroup -g 1000 -S portal && adduser -u 1000 -S portal -G portal && chown -R portal:portal . && rm /usr/local/apache2/htdocs/index.html
+
+USER portal:portal
+
+COPY ${FE_DIR} /usr/local/apache2/htdocs/${FECONTEXT}
diff --git a/ecomp-portal-BE-common/.gitignore b/ecomp-portal-BE-common/.gitignore
index e92d1a0..297f310 100644
--- a/ecomp-portal-BE-common/.gitignore
+++ b/ecomp-portal-BE-common/.gitignore
@@ -6,3 +6,5 @@
 /debug-logs/
 /logs/
 /bin/
+/.apt_generated/
+/.apt_generated_tests/
diff --git a/ecomp-portal-BE-common/pom.xml b/ecomp-portal-BE-common/pom.xml
index 58ae584..66adc61 100644
--- a/ecomp-portal-BE-common/pom.xml
+++ b/ecomp-portal-BE-common/pom.xml
@@ -657,17 +657,17 @@
         <dependency>
 		    <groupId>org.springframework.security</groupId>
 		    <artifactId>spring-security-core</artifactId>
-		    <version>${springframework.version}</version>
+		    <version>${springframework.security.version}</version>
 	    </dependency>
 	    <dependency>
 	        <groupId>org.springframework.security</groupId>
 	        <artifactId>spring-security-web</artifactId>
-	        <version>${springframework.version}</version>
+	        <version>${springframework.security.version}</version>
         </dependency>
 	    <dependency>
 		    <groupId>org.springframework.security</groupId>
 		    <artifactId>spring-security-config</artifactId>
-		    <version>${springframework.version}</version>
+		    <version>${springframework.security.version}</version>
 	    </dependency>
 		<dependency>
     		<groupId>com.thoughtworks.xstream</groupId>
@@ -698,7 +698,7 @@
 	    <dependency>
 		    <groupId>org.onap.music</groupId>
 		    <artifactId>MUSIC</artifactId>
-		    <version>2.5.8</version>
+		    <version>2.5.10-SNAPSHOT</version>
 		    <exclusions> 
 				<exclusion> 
 					  <groupId>com.sun.jersey</groupId> 
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/ConsulClientController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/ConsulClientController.java
deleted file mode 100644
index 264c95c..0000000
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/ConsulClientController.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*-
- * ============LICENSE_START==========================================
- * ONAP Portal
- * ===================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ===================================================================
- *
- * Unless otherwise specified, all software contained herein is licensed
- * under the Apache License, Version 2.0 (the "License");
- * you may not use this software except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *             http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Unless otherwise specified, all documentation contained herein is licensed
- * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
- * you may not use this documentation except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *             https://creativecommons.org/licenses/by/4.0/
- *
- * Unless required by applicable law or agreed to in writing, documentation
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ============LICENSE_END============================================
- *
- * 
- */
-package org.onap.portalapp.portal.controller;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.onap.portalapp.controller.EPRestrictedBaseController;
-import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
-import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
-import org.onap.portalapp.portal.service.ConsulHealthService;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.orbitz.consul.ConsulException;
-import com.orbitz.consul.model.health.ServiceHealth;
-
-import io.searchbox.client.config.exception.NoServerConfiguredException;
-
-@RestController
-@RequestMapping("/portalApi/consul")
-public class ConsulClientController extends EPRestrictedBaseController {
-	private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ConsulClientController.class);
-
-	@Autowired
-	private ConsulHealthService consulHealthService;
-
-	// Get location of a healthy node running our service
-	@RequestMapping(value = { "/service/{service}" }, method = RequestMethod.GET, produces = "application/json")
-	public PortalRestResponse<String> getServiceLocation(HttpServletRequest request, HttpServletResponse response,
-			@PathVariable("service") String service) {
-
-		try {
-			return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Success!",
-					consulHealthService.getServiceLocation(service, null));
-		} catch (NoServerConfiguredException e) {
-			logger.error(logger.errorLogger, "No healthy service exception!");
-			return new PortalRestResponse<String>(PortalRestStatusEnum.WARN, "Warning!",
-					"No healthy service exception!");
-		} catch (ConsulException e) {
-			logger.error(logger.errorLogger, "Couldn't connect ot consul - Is consul running?");
-			return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Error!",
-					"Couldn't connect ot consul - Is consul running?");
-		}
-	}
-
-	@RequestMapping(value = { "/service/healthy/{service}" }, method = RequestMethod.GET, produces = "application/json")
-	public PortalRestResponse<List<ServiceHealth>> getAllHealthyNodes(HttpServletRequest request,
-			HttpServletResponse response, @PathVariable("service") String service) {
-		try {
-			return new PortalRestResponse<List<ServiceHealth>>(PortalRestStatusEnum.OK, "Success!",
-					consulHealthService.getAllHealthyNodes(service));
-		} catch (ConsulException e) {
-			logger.error(logger.errorLogger, "Couldn't connect to consul - shouldn't break anything.");
-			return new PortalRestResponse<List<ServiceHealth>>(PortalRestStatusEnum.ERROR, "Error!", new ArrayList<>());
-		}
-	}
-
-	@RequestMapping(value = { "/service/all/{service}" }, method = RequestMethod.GET, produces = "application/json")
-	public PortalRestResponse<List<ServiceHealth>> getAllNodes(HttpServletRequest request, HttpServletResponse response,
-			@PathVariable("service") String service) {
-		try {
-			return new PortalRestResponse<List<ServiceHealth>>(PortalRestStatusEnum.OK, "Success!",
-					consulHealthService.getAllNodes(service));
-		} catch (ConsulException e) {
-			logger.error(logger.errorLogger, "Couldn't connect to consul - shouldn't break anything.");
-			return new PortalRestResponse<List<ServiceHealth>>(PortalRestStatusEnum.ERROR, "Error!", new ArrayList<>());
-		}
-	}
-
-}
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/ExternalAccessRolesController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/ExternalAccessRolesController.java
index 46493d8..7d9f297 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/ExternalAccessRolesController.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/ExternalAccessRolesController.java
@@ -61,6 +61,7 @@
 import org.onap.portalapp.portal.logging.aop.EPEELFLoggerAdvice;
 import org.onap.portalapp.portal.logging.logic.EPLogUtil;
 import org.onap.portalapp.portal.service.ExternalAccessRolesService;
+import org.onap.portalsdk.core.service.UserService;
 import org.onap.portalapp.portal.transport.CentralRole;
 import org.onap.portalapp.portal.transport.CentralRoleFunction;
 import org.onap.portalapp.portal.transport.CentralUser;
@@ -113,19 +114,14 @@
 	private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ExternalAccessRolesController.class);
 	private static final DataValidator DATA_VALIDATOR = new DataValidator();
 
+	@Autowired
 	private AuditService auditService;
-	private ExternalAccessRolesService externalAccessRolesService;
-	private UserServiceCentalizedImpl userservice;
 
 	@Autowired
-	public ExternalAccessRolesController(AuditService auditService,
-		ExternalAccessRolesService externalAccessRolesService,
-		UserServiceCentalizedImpl userservice) {
-		this.auditService = auditService;
-		this.externalAccessRolesService = externalAccessRolesService;
-		this.userservice = userservice;
-	}
+	private ExternalAccessRolesService externalAccessRolesService;
 
+	@Autowired
+	private UserService userservice =  new UserServiceCentalizedImpl();
 
 	@ApiOperation(value = "Gets user role for an application.", response = CentralUser.class, responseContainer="List")
 	@RequestMapping(value = {
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/MicroserviceController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/MicroserviceController.java
index 2f956cc..3f50772 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/MicroserviceController.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/MicroserviceController.java
@@ -55,7 +55,7 @@
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 import org.onap.portalapp.portal.logging.aop.EPAuditLog;
-import org.onap.portalapp.portal.service.ConsulHealthService;
+import org.onap.portalapp.portal.service.WidgetMService;
 import org.onap.portalapp.portal.service.MicroserviceService;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
 import org.onap.portalsdk.core.util.SystemProperties;
@@ -84,7 +84,7 @@
 	RestTemplate template = new RestTemplate();
 
 	@Autowired
-	private ConsulHealthService consulHealthService;
+	private WidgetMService widgetMService;
 
 	@Autowired
 	private MicroserviceService microserviceService;
@@ -153,7 +153,7 @@
 			};
 			// If this service is assoicated with widgets, cannnot be deleted
 			ResponseEntity<List<WidgetCatalog>> ans = template.exchange(
-					EcompPortalUtils.widgetMsProtocol() + "://" + consulHealthService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
+					EcompPortalUtils.widgetMsProtocol() + "://" + widgetMService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
 							+ "/widget/microservices/widgetCatalog/service/" + serviceId,
 					HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), typeRef);
 			List<WidgetCatalog> widgets = ans.getBody();
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/RoleManageController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/RoleManageController.java
index 9a525b5..ad16472 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/RoleManageController.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/RoleManageController.java
@@ -517,6 +517,7 @@
 				return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "Data is not valid", "ERROR");
 			}
 		}
+
 		EPUser user = EPUserUtils.getUserSession(request);
 		boolean saveOrUpdateResponse = false;
 		try {
@@ -691,6 +692,7 @@
 				return null;
 			}
 		}
+
 		EPUser user = EPUserUtils.getUserSession(request);
 		List<CentralizedApp> applicationsList = null;
 		if (adminRolesService.isAccountAdmin(user) || adminRolesService.isSuperAdmin(user)
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WebAnalyticsExtAppController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WebAnalyticsExtAppController.java
index f1192f9..a3f4d30 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WebAnalyticsExtAppController.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WebAnalyticsExtAppController.java
@@ -55,7 +55,7 @@
 import org.onap.portalapp.portal.logging.aop.EPEELFLoggerAdvice;
 import org.onap.portalapp.portal.logging.logic.EPLogUtil;
 import org.onap.portalapp.portal.service.AppsCacheService;
-import org.onap.portalapp.portal.service.ConsulHealthService;
+import org.onap.portalapp.portal.service.WidgetMService;
 import org.onap.portalapp.portal.transport.Analytics;
 import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
@@ -89,7 +89,7 @@
 @EPAuditLog
 @NoArgsConstructor
 public class WebAnalyticsExtAppController extends EPRestrictedRESTfulBaseController {
-	private ConsulHealthService consulHealthService;
+	private WidgetMService widgetMService;
 	private	AppsCacheService appCacheService;
 
 	private static final String MACHINE_LEARNING_SERVICE_CTX = "/ml_api";
@@ -102,9 +102,9 @@
 	private final FailureCallback failureCallback = arg -> logger.error(EELFLoggerDelegate.errorLogger, "storeAuxAnalytics failed", arg);
 
 	@Autowired
-	public WebAnalyticsExtAppController(AppsCacheService appCacheService, ConsulHealthService consulHealthService) {
+	public WebAnalyticsExtAppController(AppsCacheService appCacheService, WidgetMService consulHealthService) {
 		this.appCacheService = appCacheService;
-		this.consulHealthService = consulHealthService;
+		this.widgetMService = consulHealthService;
 	}
 
 	/**
@@ -129,8 +129,8 @@
 		}
 		if (app != null) {
 			String restEndPoint = app.getAppRestEndpoint();
-			if(restEndPoint.contains("/api")) {
-				version = restEndPoint.substring(restEndPoint.indexOf("/api")+4);
+			if(restEndPoint.indexOf("/api")!=-1) {
+				version = restEndPoint.substring(restEndPoint.indexOf("api"));
 			}
 		}
 		String endPoint = "/storeAnalytics";
@@ -242,7 +242,7 @@
 		// send it!
 		ListenableFuture<ResponseEntity<String>> out = restTemplate.exchange(
 				EcompPortalUtils.widgetMsProtocol() + "://"
-						+ consulHealthService.getServiceLocation(CONSUL_ML_SERVICE_ID,
+						+ widgetMService.getServiceLocation(CONSUL_ML_SERVICE_ID,
 								SystemProperties.getProperty("microservices.m-learn.local.port"))
 						+ REGISTER_ACTION,
 				HttpMethod.POST, entity, String.class);
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetMSController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetMSController.java
new file mode 100644
index 0000000..eab811a
--- /dev/null
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetMSController.java
@@ -0,0 +1,79 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ * 
+ */
+package org.onap.portalapp.portal.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.onap.portalapp.controller.EPRestrictedBaseController;
+import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
+import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
+import org.onap.portalapp.portal.service.WidgetMService;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/portalApi/consul")
+public class WidgetMSController extends EPRestrictedBaseController {
+	private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetMSController.class);
+
+	@Autowired
+	private WidgetMService widgetMService;
+
+	// Get location of a healthy node running our service
+	@RequestMapping(value = { "/service/{service}" }, method = RequestMethod.GET, produces = "application/json")
+	public PortalRestResponse<String> getServiceLocation(HttpServletRequest request, HttpServletResponse response,
+			@PathVariable("service") String service) {
+
+		try {
+			return new PortalRestResponse<String>(PortalRestStatusEnum.OK, "Success!",
+					widgetMService.getServiceLocation(service, null));
+		}
+		 catch (Exception e) {
+			logger.error(logger.errorLogger, "Couldn't get the service location");
+			return new PortalRestResponse<String>(PortalRestStatusEnum.ERROR, "Error!",
+					"Couldn't get the service location");
+		
+	    }
+	}
+
+}
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogController.java
index a7ce355..57c73a8 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogController.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogController.java
@@ -60,7 +60,7 @@
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 import org.onap.portalapp.portal.logging.aop.EPAuditLog;
-import org.onap.portalapp.portal.service.ConsulHealthService;
+import org.onap.portalapp.portal.service.WidgetMService;
 import org.onap.portalapp.portal.service.MicroserviceService;
 import org.onap.portalapp.portal.service.WidgetParameterService;
 import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
@@ -108,7 +108,7 @@
 	private String whatService = "widgets-service";
 
 	@Autowired
-	private ConsulHealthService consulHealthService;
+	private WidgetMService widgetMService;
 
 	@Autowired
 	private MicroserviceService microserviceService;
@@ -138,7 +138,7 @@
 		try {
 			ResponseEntity<List> ans = template.exchange(
 					EcompPortalUtils.widgetMsProtocol() + "://"
-							+ consulHealthService.getServiceLocation(whatService,
+							+ widgetMService.getServiceLocation(whatService,
 									SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
 							+ "/widget/microservices/widgetCatalog/" + loginName,
 					HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), List.class);
@@ -158,7 +158,7 @@
 		try {
 			ResponseEntity<List> ans = template.exchange(
 					EcompPortalUtils.widgetMsProtocol() + "://"
-							+ consulHealthService.getServiceLocation(whatService,
+							+ widgetMService.getServiceLocation(whatService,
 									SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
 							+ "/widget/microservices/widgetCatalog",
 					HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), List.class);
@@ -177,7 +177,7 @@
 	public void updateWidgetCatalog(@RequestBody WidgetCatalog newWidgetCatalog, @PathVariable("widgetId") long widgetId) throws Exception {
 		template.exchange(
 				EcompPortalUtils.widgetMsProtocol() + "://"
-						+ consulHealthService.getServiceLocation(whatService,
+						+ widgetMService.getServiceLocation(whatService,
 								SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
 						+ "/widget/microservices/widgetCatalog/" + widgetId,
 				HttpMethod.PUT, new HttpEntity<>(newWidgetCatalog, WidgetServiceHeaders.getInstance()), String.class);
@@ -187,7 +187,7 @@
 	public void deleteOnboardingWidget(@PathVariable("widgetId") long widgetId) throws Exception {
 		template.exchange(
 				EcompPortalUtils.widgetMsProtocol() + "://"
-						+ consulHealthService.getServiceLocation(whatService,
+						+ widgetMService.getServiceLocation(whatService,
 								SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
 						+ "/widget/microservices/widgetCatalog/" + widgetId,
 				HttpMethod.DELETE, new HttpEntity<>(WidgetServiceHeaders.getInstance()), String.class);
@@ -218,7 +218,7 @@
 			multipartRequest.add("widget", request.getParameter("newWidget"));
 			respond = template.postForObject(
 					EcompPortalUtils.widgetMsProtocol() + "://"
-							+ consulHealthService.getServiceLocation(whatService,
+							+ widgetMService.getServiceLocation(whatService,
 									SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
 							+ "/widget/microservices/widgetCatalog/" + widgetId,
 					new HttpEntity<>(multipartRequest, WidgetServiceHeaders.getInstance()), String.class);
@@ -269,7 +269,7 @@
 
 			respond = template.postForObject(
 					EcompPortalUtils.widgetMsProtocol() + "://"
-							+ consulHealthService.getServiceLocation(whatService,
+							+ widgetMService.getServiceLocation(whatService,
 									SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
 							+ "/widget/microservices/widgetCatalog",
 					new HttpEntity<>(multipartRequest, WidgetServiceHeaders.getInstance()), String.class);
@@ -291,7 +291,7 @@
 	@RequestMapping(value = "/portalApi/microservices/{widgetId}/framework.js", method = RequestMethod.GET)
 	public String getWidgetFramework(@PathVariable("widgetId") long widgetId) throws Exception {
 		return template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://"
-				+ consulHealthService.getServiceLocation(whatService,
+				+ widgetMService.getServiceLocation(whatService,
 						SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
 				+ "/widget/microservices/" + widgetId + "/framework.js", String.class,
 				WidgetServiceHeaders.getInstance());
@@ -300,7 +300,7 @@
 	@RequestMapping(value = "/portalApi/microservices/{widgetId}/controller.js", method = RequestMethod.GET)
 	public String getWidgetController(@PathVariable("widgetId") long widgetId) throws Exception {
 		return template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://"
-				+ consulHealthService.getServiceLocation(whatService,
+				+ widgetMService.getServiceLocation(whatService,
 						SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
 				+ "/widget/microservices/" + widgetId + "/controller.js", String.class,
 				WidgetServiceHeaders.getInstance());
@@ -309,7 +309,7 @@
 	@RequestMapping(value = "/portalApi/microservices/{widgetId}/style.css", method = RequestMethod.GET)
 	public String getWidgetCSS(@PathVariable("widgetId") long widgetId) throws Exception {
 		return template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://"
-				+ consulHealthService.getServiceLocation(whatService,
+				+ widgetMService.getServiceLocation(whatService,
 						SystemProperties.getProperty(MS_WIDGET_LOCAL_PORT))
 				+ "/widget/microservices/" + widgetId + "/styles.css", String.class,
 				WidgetServiceHeaders.getInstance());
@@ -323,7 +323,7 @@
 		List<WidgetParameterResult> list = new ArrayList<>();
 		Long serviceId = template.exchange(
 				EcompPortalUtils.widgetMsProtocol() + "://"
-						+ consulHealthService.getServiceLocation(whatService,
+						+ widgetMService.getServiceLocation(whatService,
 								SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
 						+ "/widget/microservices/widgetCatalog/parameters/" + widgetId,
 				HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), Long.class).getBody();
@@ -370,7 +370,7 @@
 		byte[] byteFile = template
 				.exchange(
 						EcompPortalUtils.widgetMsProtocol() + "://"
-								+ consulHealthService.getServiceLocation(whatService,
+								+ widgetMService.getServiceLocation(whatService,
 										SystemProperties.getProperty(EPCommonSystemProperties.MS_WIDGET_LOCAL_PORT))
 								+ "/widget/microservices/download/" + widgetId,
 						HttpMethod.GET, new HttpEntity<>(WidgetServiceHeaders.getInstance()), byte[].class)
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogMarkupController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogMarkupController.java
index e01c8ee..0c464fb 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogMarkupController.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/WidgetsCatalogMarkupController.java
@@ -43,7 +43,7 @@
 import org.onap.portalapp.controller.EPUnRestrictedBaseController;
 import org.onap.portalapp.portal.domain.WidgetServiceHeaders;
 import org.onap.portalapp.portal.logging.aop.EPAuditLog;
-import org.onap.portalapp.portal.service.ConsulHealthService;
+import org.onap.portalapp.portal.service.WidgetMService;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalsdk.core.util.SystemProperties;
@@ -69,7 +69,7 @@
 	private final String whatService = "widgets-service";
 
 	@Autowired
-	private ConsulHealthService consulHealthService;
+	private WidgetMService widgetMService;
 
 	@Bean
 	public CommonsMultipartResolver multipartResolver() {
@@ -95,7 +95,7 @@
 		return template
 				.getForObject(
 						EcompPortalUtils.widgetMsProtocol() + "://"
-								+ consulHealthService.getServiceLocation(whatService,
+								+ widgetMService.getServiceLocation(whatService,
 										SystemProperties.getProperty("microservices.widget.local.port"))
 								+ "/widget/microservices/markup/" + widgetId,
 						String.class, WidgetServiceHeaders.getInstance());
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/AppsCacheService.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/AppsCacheService.java
index b684d3f..2a93556 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/AppsCacheService.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/AppsCacheService.java
@@ -38,7 +38,10 @@
 
 package org.onap.portalapp.portal.service;
 
+import java.util.List;
+
 import org.onap.portalapp.portal.domain.EPApp;
+import org.onap.portalapp.portal.transport.OnboardingApp;
 
 public interface AppsCacheService {
 	
@@ -59,4 +62,6 @@
 	EPApp getAppFromUeb(String appKey);
 
 	EPApp getAppFromUeb(String appKey, Integer quickCacheRefresh);
+
+	List<OnboardingApp> getAppsFullList();
 }
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/AppsCacheServiceImple.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/AppsCacheServiceImple.java
index 0fb9290..3a70da8 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/AppsCacheServiceImple.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/AppsCacheServiceImple.java
@@ -37,9 +37,11 @@
  */
 package org.onap.portalapp.portal.service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.annotation.PostConstruct;
 
@@ -51,6 +53,8 @@
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.portalapp.portal.service.AppsCacheService;
 import org.onap.portalapp.portal.service.AppsCacheServiceImple;
+import org.onap.portalapp.portal.transport.OnboardingApp;
+import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
 
 @Service("appsCacheService")
 @org.springframework.context.annotation.Configuration
@@ -133,6 +137,24 @@
 		return null;
 	}
 	
+	@SuppressWarnings("unchecked")
+	@Override
+	public List<OnboardingApp> getAppsFullList() {
+		refreshAppsMap(quickRefreshCacheConf);
+		List<EPApp> appList = new ArrayList<EPApp> (appsMap.values());
+		appList.removeIf(app -> app.getId() == 1);
+		List<EPApp> appsFinalList = appList.stream()
+		.filter(app -> app.getEnabled() == true && app.getOpen() == false).collect(Collectors.toList());
+		
+		List<OnboardingApp> onboardingAppsList = new ArrayList<OnboardingApp>();
+		for (EPApp app : appsFinalList) {
+			OnboardingApp onboardingApp = new OnboardingApp();
+			appsService.createOnboardingFromApp(app, onboardingApp);
+			onboardingAppsList.add(onboardingApp);
+		}
+		return onboardingAppsList;	
+	}
+	
 	@Override
 	public EPApp getApp(Long appId) {
 		refreshAppsMap(quickRefreshCacheConf);
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthServiceImpl.java
deleted file mode 100644
index a0f0841..0000000
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthServiceImpl.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*-
- * ============LICENSE_START==========================================
- * ONAP Portal
- * ===================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ===================================================================
- *
- * Unless otherwise specified, all software contained herein is licensed
- * under the Apache License, Version 2.0 (the "License");
- * you may not use this software except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *             http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Unless otherwise specified, all documentation contained herein is licensed
- * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
- * you may not use this documentation except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *             https://creativecommons.org/licenses/by/4.0/
- *
- * Unless required by applicable law or agreed to in writing, documentation
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ============LICENSE_END============================================
- *
- * 
- */
-package org.onap.portalapp.portal.service;
-
-import java.util.List;
-
-import org.onap.portalapp.portal.utils.EcompPortalUtils;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.springframework.stereotype.Component;
-
-import com.ecwid.consul.ConsulException;
-import com.orbitz.consul.Consul;
-import com.orbitz.consul.HealthClient;
-import com.orbitz.consul.model.health.ServiceHealth;
-
-@Component
-public class ConsulHealthServiceImpl implements ConsulHealthService {
-
-	private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ConsulHealthServiceImpl.class);
-
-	@Override
-	public String getServiceLocation(String service, String fallbackPortOnLocalHost) {
-
-		List<ServiceHealth> nodes = null;
-
-		try {
-			Consul consul = Consul.builder().build();
-			HealthClient healthClient = consul.healthClient();
-			nodes = healthClient.getHealthyServiceInstances(service).getResponse();
-		} catch (Exception e) {
-			String localFallbackServiceLocation = EcompPortalUtils.localOrDockerHost() + ":" + fallbackPortOnLocalHost;
-			logger.debug(EELFLoggerDelegate.debugLogger,
-					" problem getting nodes for service {1}. Defaulting to {2}. Exception: {3}", service,
-					localFallbackServiceLocation, e.getMessage());
-			logger.error(EELFLoggerDelegate.errorLogger,
-					" problem getting nodes for service {1}. Defaulting to {2}. Exception: {3}", service,
-					localFallbackServiceLocation, e);
-			return localFallbackServiceLocation;
-		}
-
-		if (nodes == null || nodes.size() == 0) {
-			logger.debug(EELFLoggerDelegate.debugLogger, "No healthy node found in the consul cluster running service " + service
-					+ ". Defaulting to localhost");
-			return EcompPortalUtils.localOrDockerHost() + ":" + fallbackPortOnLocalHost;
-		} else {
-			String locationFromConsul;
-			ServiceHealth node = nodes.get(0);
-			locationFromConsul = node.getNode().getNode() + ":" + node.getService().getPort();
-			logger.debug(EELFLoggerDelegate.debugLogger,
-					"Found healthy service location using consul - returning location " + locationFromConsul);
-
-			// if locationFromConsul is null for some reason (very unlikely at
-			// this point), default to localhost
-			if (null == locationFromConsul || "".equals(locationFromConsul)) {
-				logger.debug(EELFLoggerDelegate.debugLogger,
-						"Couldn't get location from consul for service " + service + ". Defaulting to localhost");
-				return "localhost:" + fallbackPortOnLocalHost;
-			} else {
-				logger.debug(EELFLoggerDelegate.debugLogger, "Found service location from consul for service " + service
-						+ ". Location is " + locationFromConsul);
-				return locationFromConsul;
-			}
-		}
-	}
-
-	@Override
-	public List<ServiceHealth> getAllHealthyNodes(String service) throws ConsulException {
-		Consul consul = Consul.builder().build();
-		HealthClient healthClient = consul.healthClient();
-		return healthClient.getHealthyServiceInstances(service).getResponse();
-	}
-
-	@Override
-	public List<ServiceHealth> getAllNodes(String service) {
-		Consul consul = Consul.builder().build();
-		HealthClient healthClient = consul.healthClient();
-		return healthClient.getAllServiceInstances(service).getResponse();
-	}
-}
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPAppCommonServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPAppCommonServiceImpl.java
index c3cc286..126d627 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPAppCommonServiceImpl.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPAppCommonServiceImpl.java
@@ -859,7 +859,6 @@
 		List<OnboardingApp> onboardingAppsList = new ArrayList<OnboardingApp>();
 		for (EPApp app : apps) {
 			OnboardingApp onboardingApp = new OnboardingApp();
-			app.setAppPassword(EPCommonSystemProperties.APP_DISPLAY_PASSWORD); //to hide password from get request
 			createOnboardingFromApp(app, onboardingApp);
 			onboardingAppsList.add(onboardingApp);
 		}
@@ -1975,3 +1974,4 @@
 
 	}
 }
+
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPRoleServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPRoleServiceImpl.java
index 1821421..92cbe90 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPRoleServiceImpl.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPRoleServiceImpl.java
@@ -65,6 +65,9 @@
 
 	@Autowired
 	private DataAccessService dataAccessService;
+	
+	@Autowired
+	ExternalAccessRolesService externalAccessRolesService;
 
 	@SuppressWarnings("unchecked")
 	public List<RoleFunction> getRoleFunctions() {
@@ -157,9 +160,16 @@
 		params.put("appId", appId.toString());
 		params.put("roleName", roleName);
 		portalParams.put("appRoleName", roleName);
-		if (appId == 1 || roleName.equals(PortalConstants.ADMIN_ROLE)) {
+		
+		List<EPRole> roleList = externalAccessRolesService.getPortalAppRoleInfo(PortalConstants.ACCOUNT_ADMIN_ROLE_ID);
+		EPRole role = new EPRole();
+		if(roleList.size()>0){
+		 role = roleList.get(0);}
+		 logger.debug(EELFLoggerDelegate.debugLogger, "Requested RoleName is  "+role.getName());
+		 
+		if (appId == 1 || roleName.equals(role.getName())) {
 			roles = (List<EPRole>) dataAccessService.executeNamedQuery("getPortalAppRoles", portalParams, null);
-		} else if (appId != 1 && !roleName.equals(PortalConstants.ADMIN_ROLE)) {
+		} else if (appId != 1 && !roleName.equals(role.getName())) {
 			roles = (List<EPRole>) dataAccessService.executeNamedQuery("getAppRoles", params, null);
 		}
 		int resultsCount = (roles == null ? 0 : roles.size());
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ExternalAccessRolesService.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ExternalAccessRolesService.java
index d064545..53a7a5f 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ExternalAccessRolesService.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ExternalAccessRolesService.java
@@ -509,4 +509,6 @@
 	 */
 	public List<EcompRole> missingUserApplicationRoles(String uebkey, String loginId, Set<EcompRole> CurrentUserRoles) throws Exception;
 
+	List<EPRole> getPortalAppRoleInfo(Long roleId);
+
 }
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ExternalAccessRolesServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ExternalAccessRolesServiceImpl.java
index d5a873a..09afcf7 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ExternalAccessRolesServiceImpl.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ExternalAccessRolesServiceImpl.java
@@ -1158,7 +1158,7 @@
 	@SuppressWarnings("unchecked")
 	private CentralV2User createEPUser(EPUser userInfo, Set<EPUserApp> userAppSet, EPApp app) throws Exception {
 		final Map<String, Long> params = new HashMap<>();
-		CentralV2User userAppList = new CentralV2User();
+        CentralV2User userAppList = new CentralV2User.CentralV2UserBuilder().createCentralV2User();
 		CentralV2User user1 = null;
 		final Map<String, Long> params1 = new HashMap<>();
 		List<EPRole> globalRoleList = new ArrayList<>();
@@ -1234,21 +1234,32 @@
 					}
 				}
 			}
-			user1 = new CentralV2User(null, userInfo.getCreated(), userInfo.getModified(), userInfo.getCreatedId(),
-					userInfo.getModifiedId(), userInfo.getRowNum(), userInfo.getOrgId(), userInfo.getManagerId(),
-					userInfo.getFirstName(), userInfo.getMiddleInitial(), userInfo.getLastName(), userInfo.getPhone(),
-					userInfo.getFax(), userInfo.getCellular(), userInfo.getEmail(), userInfo.getAddressId(),
-					userInfo.getAlertMethodCd(), userInfo.getHrid(), userInfo.getOrgUserId(), userInfo.getOrgCode(),
-					userInfo.getAddress1(), userInfo.getAddress2(), userInfo.getCity(), userInfo.getState(),
-					userInfo.getZipCode(), userInfo.getCountry(), userInfo.getOrgManagerUserId(),
-					userInfo.getLocationClli(), userInfo.getBusinessCountryCode(), userInfo.getBusinessCountryName(),
-					userInfo.getBusinessUnit(), userInfo.getBusinessUnitName(), userInfo.getDepartment(),
-					userInfo.getDepartmentName(), userInfo.getCompanyCode(), userInfo.getCompany(),
-					userInfo.getZipCodeSuffix(), userInfo.getJobTitle(), userInfo.getCommandChain(),
-					userInfo.getSiloStatus(), userInfo.getCostCenter(), userInfo.getFinancialLocCode(),
-					userInfo.getLoginId(), userInfo.getLoginPwd(), userInfo.getLastLoginDate(), userInfo.getActive(),
-					userInfo.getInternal(), userInfo.getSelectedProfileId(), userInfo.getTimeZoneId(),
-					userInfo.isOnline(), userInfo.getChatId(), userAppList.getUserApps(), null);
+            user1 = new CentralV2User.CentralV2UserBuilder().setId(null).setCreated(userInfo.getCreated())
+                    .setModified(userInfo.getModified()).setCreatedId(userInfo.getCreatedId())
+                    .setModifiedId(userInfo.getModifiedId()).setRowNum(userInfo.getRowNum())
+                    .setOrgId(userInfo.getOrgId()).setManagerId(userInfo.getManagerId())
+                    .setFirstName(userInfo.getFirstName()).setMiddleInitial(userInfo.getMiddleInitial())
+                    .setLastName(userInfo.getLastName()).setPhone(userInfo.getPhone()).setFax(userInfo.getFax())
+                    .setCellular(userInfo.getCellular()).setEmail(userInfo.getEmail())
+                    .setAddressId(userInfo.getAddressId()).setAlertMethodCd(userInfo.getAlertMethodCd())
+                    .setHrid(userInfo.getHrid()).setOrgUserId(userInfo.getOrgUserId()).setOrgCode(userInfo.getOrgCode())
+                    .setAddress1(userInfo.getAddress1()).setAddress2(userInfo.getAddress2()).setCity(userInfo.getCity())
+                    .setState(userInfo.getState()).setZipCode(userInfo.getZipCode()).setCountry(userInfo.getCountry())
+                    .setOrgManagerUserId(userInfo.getOrgManagerUserId()).setLocationClli(userInfo.getLocationClli())
+                    .setBusinessCountryCode(userInfo.getBusinessCountryCode())
+                    .setBusinessCountryName(userInfo.getBusinessCountryName())
+                    .setBusinessUnit(userInfo.getBusinessUnit()).setBusinessUnitName(userInfo.getBusinessUnitName())
+                    .setDepartment(userInfo.getDepartment()).setDepartmentName(userInfo.getDepartmentName())
+                    .setCompanyCode(userInfo.getCompanyCode()).setCompany(userInfo.getCompany())
+                    .setZipCodeSuffix(userInfo.getZipCodeSuffix()).setJobTitle(userInfo.getJobTitle())
+                    .setCommandChain(userInfo.getCommandChain()).setSiloStatus(userInfo.getSiloStatus())
+                    .setCostCenter(userInfo.getCostCenter()).setFinancialLocCode(userInfo.getFinancialLocCode())
+                    .setLoginId(userInfo.getLoginId()).setLoginPwd(userInfo.getLoginPwd())
+                    .setLastLoginDate(userInfo.getLastLoginDate()).setActive(userInfo.getActive())
+                    .setInternal(userInfo.getInternal()).setSelectedProfileId(userInfo.getSelectedProfileId())
+                    .setTimeZoneId(userInfo.getTimeZoneId()).setOnline(userInfo.isOnline())
+                    .setChatId(userInfo.getChatId()).setUserApps(userAppList.getUserApps()).setPseudoRoles(null)
+                    .createCentralV2User();
 		} catch (Exception e) {
 			logger.error(EELFLoggerDelegate.errorLogger, "createEPUser: createEPUser failed", e);
 			throw e;
@@ -1308,8 +1319,9 @@
 		return roleInfo;
 	}
 
+	@Override
 	@SuppressWarnings("unchecked")
-	private List<EPRole> getPortalAppRoleInfo(Long roleId) {
+	public List<EPRole> getPortalAppRoleInfo(Long roleId) {
 		List<EPRole> roleInfo;
 		final Map<String, Long> getPortalAppRoleParams = new HashMap<>();
 		getPortalAppRoleParams.put("roleId", roleId);
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/MicroserviceProxyServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/MicroserviceProxyServiceImpl.java
index 72f6a8d..31cb8a4 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/MicroserviceProxyServiceImpl.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/MicroserviceProxyServiceImpl.java
@@ -76,7 +76,7 @@
 	private static final String ADD_MARK = "&";
 
 	@Autowired
-	private ConsulHealthService consulHealthService;
+	private WidgetMService widgetMService;
 	@Autowired
 	MicroserviceService microserviceService;
 	@Autowired
@@ -104,7 +104,7 @@
 		@SuppressWarnings({ "rawtypes", "unchecked" })
 		ResponseEntity<Long> ans = (ResponseEntity<Long>) template.exchange(
 				EcompPortalUtils.widgetMsProtocol() + "://"
-						+ consulHealthService.getServiceLocation(whatService,
+						+ widgetMService.getServiceLocation(whatService,
 								SystemProperties.getProperty("microservices.widget.local.port"))
 						+ "/widget/microservices/widgetCatalog/parameters/" + widgetId,
 				HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), Long.class);
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/PortalAdminServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/PortalAdminServiceImpl.java
index 2aba0a4..a6aaea3 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/PortalAdminServiceImpl.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/PortalAdminServiceImpl.java
@@ -52,6 +52,7 @@
 import org.hibernate.criterion.Restrictions;
 import org.onap.portalapp.portal.service.SearchService;
 import org.onap.portalapp.portal.domain.EPApp;
+import org.onap.portalapp.portal.domain.EPRole;
 import org.onap.portalapp.portal.domain.EPUser;
 import org.onap.portalapp.portal.logging.aop.EPMetricsLog;
 import org.onap.portalapp.portal.transport.ExternalAccessUser;
@@ -96,6 +97,9 @@
 	
 	RestTemplate template = new RestTemplate();
 	
+	@Autowired
+	ExternalAccessRolesService externalAccessRolesService;
+	
 	@PostConstruct
 	private void init() {
 		SYS_ADMIN_ROLE_ID = SystemProperties.getProperty(SystemProperties.SYS_ADMIN_ROLE_ID);
@@ -162,7 +166,13 @@
 				transaction.commit();
 				// Add role in the external central auth system
 				if(user != null && EcompPortalUtils.checkIfRemoteCentralAccessAllowed()) {
-					 addPortalAdminInExternalCentralAuth(user.getOrgUserId(), PortalConstants.PORTAL_ADMIN_ROLE);
+					List<EPRole> roleList = externalAccessRolesService.getPortalAppRoleInfo(PortalConstants.SYS_ADMIN_ROLE_ID);
+					EPRole role = new EPRole();
+					if(roleList.size()>0){
+					 role = roleList.get(0);}
+					 logger.debug(EELFLoggerDelegate.debugLogger, "Requested RoleName is  "+role.getName());
+					
+					 addPortalAdminInExternalCentralAuth(user.getOrgUserId(), role.getName());
 				}
 			} catch (Exception e) {
 				logger.error(EELFLoggerDelegate.errorLogger, "createPortalAdmin failed", e);
@@ -228,7 +238,13 @@
 					"user_id='" + userId + "' AND role_id='" + SYS_ADMIN_ROLE_ID + "'", null);
 			transaction.commit();
 			if(EcompPortalUtils.checkIfRemoteCentralAccessAllowed()){
-				deletePortalAdminInExternalCentralAuth(userId, PortalConstants.PORTAL_ADMIN_ROLE);
+				
+				List<EPRole> roleList = externalAccessRolesService.getPortalAppRoleInfo(PortalConstants.SYS_ADMIN_ROLE_ID);
+				EPRole role = new EPRole();
+				if(roleList.size()>0){
+				 role = roleList.get(0);}
+				 logger.debug(EELFLoggerDelegate.debugLogger, "Requested RoleName is  "+role.getName());
+				deletePortalAdminInExternalCentralAuth(userId, role.getName());
 			}
 		} catch (Exception e) {
 			logger.error(EELFLoggerDelegate.errorLogger, "deletePortalAdmin failed", e);
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImpl.java
index 522579d..bfc232a 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImpl.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImpl.java
@@ -189,8 +189,7 @@
 			transaction = localSession.beginTransaction();
 			@SuppressWarnings("unchecked")
 			List<EPUser> userList = localSession
-					.createQuery("from :name where orgUserId=:userId")
-					.setParameter("name",EPUser.class.getName())
+					.createQuery("from EPUser where orgUserId=:userId")
 					.setParameter("userId",userId)
 					.list();
 			if (userList.size() == 0) {
@@ -269,32 +268,37 @@
 	 * 			set to false if request is from users page otherwise true
 	 * @throws Exception
 	 */
+	@SuppressWarnings("unchecked")
 	protected void syncUserRoles(SessionFactory sessionFactory, String userId, Long appId,
-			EcompRole[] userAppRoles, Boolean extRequestValue, String reqType) throws Exception {
+			EcompRole[] userAppRoles, Boolean extRequestValue, String reqType,boolean checkIfUserisRoleAdmin,EcompRole[] appRoles) throws Exception {
 		Session localSession = null;
 		Transaction transaction = null;
 		String roleActive = null;
 		final Map<String, String> userAppParams = new HashMap<>();
 		final Map<String, String> appParams = new HashMap<>();
 		HashMap<Long, EcompRole> newUserAppRolesMap = hashMapFromEcompRoles(userAppRoles);
-
+		List<EPRole> roleInfo = externalAccessRolesService.getPortalAppRoleInfo(PortalConstants.ACCOUNT_ADMIN_ROLE_ID);
+		
+		EPRole adminRole = new EPRole();
+		if(roleInfo.size()>0)
+		{
+			adminRole = roleInfo.get(0);
+			logger.debug(EELFLoggerDelegate.debugLogger, "Admin RoleName form DB: " + adminRole.getName());
+		}
 		try {
 			localSession = sessionFactory.openSession();
 			transaction = localSession.beginTransaction();
 			@SuppressWarnings("unchecked")
 			List<EPUser> userList = localSession
-					.createQuery("from :name where orgUserId=:userId")
-					.setParameter("name",EPUser.class.getName())
+					.createQuery("from EPUser where orgUserId=:userId")
 					.setParameter("userId",userId)
 					.list();
 			if (userList.size() > 0) {
 				EPUser client = userList.get(0);
 				roleActive = ("DELETE".equals(reqType)) ? "" : " and role.active = 'Y'";
 				@SuppressWarnings("unchecked")
-				List<EPUserApp> userRoles = localSession.createQuery("from :name where app.id=:appId :roleActive and userId=:userId")
-						.setParameter("name",EPUserApp.class.getName())
+				List<EPUserApp> userRoles = localSession.createQuery("from EPUserApp where app.id=:appId and userId=:userId" + roleActive)
 						.setParameter("appId",appId)
-						.setParameter("roleActive",roleActive)
 						.setParameter("userId",client.getId())
 						.list();
 				
@@ -304,13 +308,32 @@
 						userAppParams.put("appId",  String.valueOf(appId));
 						appParams.put("appRoleName", userAppRoleList.getRole().getName());
 						@SuppressWarnings("unchecked")
-						List<EPRole>  rolesList = (!userAppRoleList.getRole().getName().equals(PortalConstants.ADMIN_ROLE)) ? (List<EPRole>) dataAccessService.executeNamedQuery("getAppRoles", userAppParams, null) : (List<EPRole>) dataAccessService.executeNamedQuery("getPortalAppRoles", appParams, null);	
+						List<EPRole>  rolesList = (!userAppRoleList.getRole().getName().equals(adminRole.getName())) ? (List<EPRole>) dataAccessService.executeNamedQuery("getAppRoles", userAppParams, null) : (List<EPRole>) dataAccessService.executeNamedQuery("getPortalAppRoles", appParams, null);	
 						if(rolesList.size() > 0 || !rolesList.isEmpty()){
 						checkIfRoleInactive(rolesList.get(0));
 						}
 					}
 				}
+				
+				if (appRoles != null) {
+					List<EcompRole> appRolesList = Arrays.stream(appRoles).collect(Collectors.toList());
+					List<EPUserApp> finalUserRolesList = new ArrayList<>();
+					if (checkIfUserisRoleAdmin) {
+						for (EcompRole role : appRolesList) {
+							for (EPUserApp userAppRoleList : userRoles) {
+								if (userAppRoleList.getRole().getName().equals(role.getName()))
 
+								{
+									finalUserRolesList.add(userAppRoleList);
+								}
+
+							}
+						}
+						userRoles = new ArrayList<>();
+						userRoles.addAll(finalUserRolesList);
+					}
+				}
+								
 				for (EPUserApp userRole : userRoles) {
 					if (!userRole.getRoleId().equals(PortalConstants.ACCOUNT_ADMIN_ROLE_ID) && userRole.getRoleId() != PortalConstants.SYS_ADMIN_ROLE_ID && !extRequestValue){
 						syncUserRolesExtension(userRole, appId, localSession, userAppRoles, newUserAppRolesMap);
@@ -322,6 +345,8 @@
 						syncUserRolesExtension(userRole, appId, localSession, userAppRoles, newUserAppRolesMap);
 					}
 				}
+				
+               
 				Collection<EcompRole> newRolesToAdd = newUserAppRolesMap.values();
 				if (newRolesToAdd.size() > 0) {
 					EPApp app = (EPApp) localSession.get(EPApp.class, appId);
@@ -342,8 +367,7 @@
 					} else { // remote app
 						@SuppressWarnings("unchecked")
 						List<EPRole> roles = localSession
-								.createQuery("from :name where appId=:appId")
-								.setParameter("name",EPRole.class.getName())
+								.createQuery("from EPRole where appId=:appId")
 								.setParameter("appId",appId)
 								.list();
 						for (EPRole role : roles) {
@@ -358,7 +382,7 @@
 					EPRole role = null;
 					for (EcompRole userRole : newRolesToAdd) {
 						EPUserApp userApp = new EPUserApp();
-						if (("PUT".equals(reqType) || "POST".equals(reqType)) && userRole.getName().equals(PortalConstants.ADMIN_ROLE)) {
+						if (("PUT".equals(reqType) || "POST".equals(reqType)) && userRole.getName().equals(adminRole.getName())) {
 							role = (EPRole) localSession.get(EPRole.class, new Long(PortalConstants.ACCOUNT_ADMIN_ROLE_ID));
 							userApp.setRole(role);
 						} else if ((userRole.getId().equals(PortalConstants.ACCOUNT_ADMIN_ROLE_ID)) && !extRequestValue){
@@ -507,8 +531,7 @@
 			// active!
 
 			@SuppressWarnings("unchecked")
-			List<EPRole> currentAppRoles = localSession.createQuery("from :name where appId = :appId")
-					.setParameter("name",EPRole.class.getName())
+			List<EPRole> currentAppRoles = localSession.createQuery("from EPRole where appId = :appId")
 					.setParameter("appId",appId)
 					.list();
 
@@ -549,8 +572,7 @@
 					// Delete from fn_user_role
 					@SuppressWarnings("unchecked")
 					List<EPUserApp> userRoles = localSession.createQuery(
-							"from :name where app.id=:appId and role_id=:roleId")
-							.setParameter("name",EPUserApp.class.getName())
+							"from EPUserApp where app.id=:appId and role_id=:roleId")
 							.setParameter("appId",appId)
 							.setParameter("roleId",roleId)
 							.list();
@@ -567,8 +589,7 @@
 					// Delete from fn_menu_functional_roles
 					@SuppressWarnings("unchecked")
 					List<FunctionalMenuRole> funcMenuRoles = localSession
-							.createQuery("from :name where roleId=:roleId")
-							.setParameter("name",FunctionalMenuRole.class.getName())
+							.createQuery("from FunctionalMenuRole where roleId=:roleId")
 							.setParameter("roleId",roleId)
 							.list();
 					int numMenuRoles = funcMenuRoles.size();
@@ -581,8 +602,7 @@
 						// so must null out the url too, to be consistent
 						@SuppressWarnings("unchecked")
 						List<FunctionalMenuRole> funcMenuRoles2 = localSession
-								.createQuery("from :name where menuId=:menuId")
-								.setParameter("name",FunctionalMenuRole.class.getName())
+								.createQuery("from FunctionalMenuRole where menuId=:menuId")
 								.setParameter("menuId",menuId)
 								.list();
 						int numMenuRoles2 = funcMenuRoles2.size();
@@ -597,8 +617,8 @@
 									"syncAppRoles: There is exactly 1 menu item for this role, so emptying the url");
 							@SuppressWarnings("unchecked")
 							List<FunctionalMenuItem> funcMenuItems = localSession
-									.createQuery(
-											"from " + FunctionalMenuItem.class.getName() + " where menuId=" + menuId)
+									.createQuery("from FunctionalMenuItem where menuId=:menuId")
+									.setParameter("menuId",menuId)
 									.list();
 							if (funcMenuItems.size() > 0) {
 								logger.debug(EELFLoggerDelegate.debugLogger, "got the menu item");
@@ -773,7 +793,7 @@
 	 * 			set to false if requests from Users page otherwise true
 	 * @return true on success, false otherwise
 	 */
-	protected boolean applyChangesInUserRolesForAppToEcompDB(RolesInAppForUser rolesInAppForUser, boolean externalSystemRequest, String reqType,boolean isSystemUser) throws Exception {
+	protected boolean applyChangesInUserRolesForAppToEcompDB(RolesInAppForUser rolesInAppForUser, boolean externalSystemRequest, String reqType,boolean isSystemUser,Set<EcompRole> rolesDeletedByApprover ,boolean isLoggedInUserRoleAdminOfApp ) throws Exception {
 		boolean result = false;
 		String userId = rolesInAppForUser.orgUserId;
 		Long appId = rolesInAppForUser.appId;
@@ -792,7 +812,16 @@
 					userAppRoles[i] = role;
 				}
 				try {
-					syncUserRoles(sessionFactory, userId, appId, userAppRoles, externalSystemRequest, reqType);
+					EcompRole[] applicationRoles = null;
+					
+					if(isLoggedInUserRoleAdminOfApp){
+				    List<EcompRole> roles = Arrays.stream(userAppRoles).collect(Collectors.toList());
+				    List<EcompRole> roles1 = rolesDeletedByApprover.stream().collect(Collectors.toList());
+				    roles.addAll(roles1);
+					 applicationRoles = roles.stream().toArray(n -> new EcompRole[n]);
+					}
+					
+					syncUserRoles(sessionFactory, userId, appId, userAppRoles, externalSystemRequest, reqType,isLoggedInUserRoleAdminOfApp,applicationRoles);
 					result = true;
 				} catch (Exception e) {
 					logger.error(EELFLoggerDelegate.errorLogger,
@@ -1027,15 +1056,36 @@
 		}
 		Long appId = newAppRolesForUser.getAppId();
 		List<RoleInAppForUser> roleInAppForUserList = newAppRolesForUser.getAppRoles();
+		
+		
+
 		if (userId.length() > 0 ) {
 			ObjectMapper mapper = new ObjectMapper();
 			mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 
 			try {
 				EPApp app = appsService.getApp(appId);
+				
+				boolean checkIfUserisApplicationAccAdmin = adminRolesService.isAccountAdminOfApplication(user,
+						app);
+				Set<EcompRole> rolesGotDeletedFromApprover = new TreeSet<EcompRole>();
+
+				boolean checkIfUserisOnlyRoleAdmin = adminRolesService.isRoleAdmin(user) && !checkIfUserisApplicationAccAdmin;
+				if (checkIfUserisOnlyRoleAdmin) {
+					for (RoleInAppForUser roleInAppForUser : roleInAppForUserList) {
+						if (!roleInAppForUser.isApplied) {
+							EcompRole ecompRole = new EcompRole();
+							ecompRole.setId(roleInAppForUser.roleId);
+							ecompRole.setName(roleInAppForUser.roleName);
+							rolesGotDeletedFromApprover.add(ecompRole);
+						}
+					}
+				}
+					
 				applyChangesToUserAppRolesForMyLoginsRequest(user, appId);
 
 				boolean systemUser = newAppRolesForUser.isSystemUser();
+
 				if ((app.getCentralAuth() || app.getId().equals(PortalConstants.PORTAL_APP_ID)) && systemUser) {
 
 					Set<EcompRole> userRolesInLocalApp = postUsersRolesToLocalApp(roleInAppForUserList, mapper,
@@ -1043,13 +1093,15 @@
 					RolesInAppForUser rolesInAppForUser = constructRolesInAppForUserUpdate(userId, appId,
 							userRolesInLocalApp);
 					List<RoleInAppForUser> roleAppUserList = rolesInAppForUser.roles;
+					Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
 					if (EcompPortalUtils.checkIfRemoteCentralAccessAllowed()) {
 						// Apply changes in external Access system
+						
 						updateUserRolesInExternalSystem(app, rolesInAppForUser.orgUserId, roleAppUserList,
-								epRequestValue, systemUser);
+								epRequestValue, systemUser,rolesGotDeletedByApprover,false);
 					}
 					result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, "Portal",
-							systemUser);
+							systemUser,rolesGotDeletedByApprover,false);
 
 				}else if (!app.getCentralAuth() && systemUser)
 				{
@@ -1068,11 +1120,12 @@
 							userRolesInLocalApp);
 					List<RoleInAppForUser> roleAppUserList = rolesInAppForUser.roles;
 					if (EcompPortalUtils.checkIfRemoteCentralAccessAllowed()) {
+						
 						// Apply changes in external Access system
 						updateUserRolesInExternalSystem(app, rolesInAppForUser.orgUserId, roleAppUserList,
-								epRequestValue,false);
+								epRequestValue,false,rolesGotDeletedFromApprover,checkIfUserisOnlyRoleAdmin);
 					}
-					result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, "Portal", systemUser);
+					result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, "Portal", systemUser,rolesGotDeletedFromApprover,checkIfUserisOnlyRoleAdmin);
 				} 
 				// In case if portal is not centralized then follow existing approach
 				else if(!app.getCentralAuth() && app.getId().equals(PortalConstants.PORTAL_APP_ID)){
@@ -1080,7 +1133,8 @@
 							applicationsRestClientService, appId, userId);	
 					RolesInAppForUser rolesInAppForUser = constructRolesInAppForUserUpdate(userId, appId,
 							userRolesInLocalApp);
-					result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, "Portal",false);
+					Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+					result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, "Portal",false,rolesGotDeletedByApprover,false);
 				} else{// remote app
 					EPUser remoteAppUser = null;
 					if(!app.getCentralAuth() && !app.getId().equals(PortalConstants.PORTAL_APP_ID)){
@@ -1094,7 +1148,8 @@
 									applicationsRestClientService, appId, userId,systemUser);
 							RolesInAppForUser rolesInAppForUser = constructRolesInAppForUserUpdate(userId, appId,
 									userRolesInRemoteApp);
-							result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, null,false);
+							Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+							result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, epRequestValue, null,false,rolesGotDeletedByApprover,false);
 
 							// If no roles remain, request app to set user inactive.
 							if (userRolesInRemoteApp.size() == 0) {
@@ -1137,7 +1192,7 @@
 	 * @param roleInAppUser Contains list of active roles 
 	 */
 	@SuppressWarnings("unchecked")
-	private void updateUserRolesInExternalSystem(EPApp app, String orgUserId, List<RoleInAppForUser> roleInAppUser, boolean isPortalRequest,boolean isSystemUser) throws Exception
+	private void updateUserRolesInExternalSystem(EPApp app, String orgUserId, List<RoleInAppForUser> roleInAppUser, boolean isPortalRequest,boolean isSystemUser,Set<EcompRole> deletedRolesByApprover,boolean isLoggedInUserRoleAdminofApp) throws Exception
 	{
 		try {
 			// check if user exists
@@ -1159,6 +1214,8 @@
 			HttpHeaders headers = EcompPortalUtils.base64encodeKeyForAAFBasicAuth();
 			HttpEntity<String> getUserRolesEntity = new HttpEntity<>(headers);
 			ResponseEntity<String> getResponse = externalAccessRolesService.getUserRolesFromExtAuthSystem(name, getUserRolesEntity);
+
+			
 			List<ExternalAccessUserRoleDetail> userRoleDetailList = new ArrayList<>();
 			String res = getResponse.getBody();
 			JSONObject jsonObj = null;
@@ -1190,6 +1247,7 @@
 			
 			List<ExternalAccessUserRoleDetail>  userRoleListMatchingInExtAuthAndLocal = CheckIfRoleAreMatchingInUserRoleDetailList(userRoleDetailList,app);
 			
+			List<EcompUserAppRoles> userAppList = new ArrayList<>();
 			// If request coming from portal not from external role approval system then we have to check if user already 
 			// have account admin or system admin as GUI will not send these roles 
 			if (!isPortalRequest) {
@@ -1199,7 +1257,7 @@
 				final Map<String, Long> params = new HashMap<>();
 				params.put("appId", app.getId());
 				params.put("userId", user.getId());
-				List<EcompUserAppRoles> userAppList = dataAccessService.executeNamedQuery("getUserAppExistingRoles",
+				 userAppList = dataAccessService.executeNamedQuery("getUserAppExistingRoles",
 						params, null);
 				if (!roleInAppUser.isEmpty()) {
 					for (EcompUserAppRoles userApp : userAppList) {
@@ -1216,7 +1274,7 @@
 			}
 			List<RoleInAppForUser> roleInAppUserNonDupls = roleInAppUser.stream().distinct()
 					.collect(Collectors.toList());
-			final Map<String, RoleInAppForUser> currentUserRolesToUpdate = new HashMap<>();
+			 Map<String, RoleInAppForUser> currentUserRolesToUpdate = new HashMap<>();
 			for (RoleInAppForUser roleInAppUserNew : roleInAppUserNonDupls) {
 				currentUserRolesToUpdate.put(roleInAppUserNew.getRoleName().replaceAll(EcompPortalUtils.EXTERNAL_CENTRAL_AUTH_ROLE_HANDLE_SPECIAL_CHARACTERS, "_"), roleInAppUserNew);
 			}
@@ -1224,6 +1282,35 @@
 			for (ExternalAccessUserRoleDetail extAccessUserRole : userRoleListMatchingInExtAuthAndLocal) {
 				currentUserRolesInExternalSystem.put(extAccessUserRole.getName(), extAccessUserRole);
 			}
+
+			if (isLoggedInUserRoleAdminofApp) {
+				if (deletedRolesByApprover.size() > 0) {
+					List<ExternalAccessUserRoleDetail> newUpdatedRoles = new ArrayList<>();
+					Set<EcompRole> roles = new HashSet<>();
+					for (ExternalAccessUserRoleDetail userRole : userRoleListMatchingInExtAuthAndLocal) {
+						for (EcompRole role : deletedRolesByApprover) {
+							if ((userRole.getName().substring(app.getNameSpace().length() + 1)).equals(role.getName())) {
+								roles.add(role);
+								newUpdatedRoles.add(userRole);
+							}
+						}
+					}
+					if (newUpdatedRoles.size() > 0) {
+						userRoleListMatchingInExtAuthAndLocal = new ArrayList<>();
+						userRoleListMatchingInExtAuthAndLocal.addAll(newUpdatedRoles);
+					} else {
+						userRoleListMatchingInExtAuthAndLocal = new ArrayList<>();
+						currentUserRolesToUpdate = new HashMap<>();
+
+					}
+
+				} else {
+					userRoleListMatchingInExtAuthAndLocal = new ArrayList<>();
+					currentUserRolesToUpdate = new HashMap<>();
+
+				}
+			}
+
 			// Check if user roles does not exists in local but still there in External Central Auth System delete them all
 			for (ExternalAccessUserRoleDetail userRole : userRoleListMatchingInExtAuthAndLocal) {
 				if (!(currentUserRolesToUpdate
@@ -1575,13 +1662,15 @@
 					RolesInAppForUser rolesInAppForUser = constructRolesInAppForUserUpdate(orgUserId, app.getId(),
 							userRolesInLocalApp);
 					List<RoleInAppForUser> roleAppUserList = rolesInAppForUser.roles;
+					Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+
 					if(EcompPortalUtils.checkIfRemoteCentralAccessAllowed()) {
 					// Apply changes in external Access system
-					updateUserRolesInExternalSystem(app, rolesInAppForUser.orgUserId, roleAppUserList, externalSystemRequest,false);
+					updateUserRolesInExternalSystem(app, rolesInAppForUser.orgUserId, roleAppUserList, externalSystemRequest,false,rolesGotDeletedByApprover,false);
 					}
 					logger.info(EELFLoggerDelegate.debugLogger, "setExternalRequestUserAppRole: {} user app roles: for app {}, user {}", logMessage,
 							newAppRolesForUser.getApplicationName(), newAppRolesForUser.getLoginId());
-					result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest, reqType,false);
+					result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest, reqType,false,rolesGotDeletedByApprover,false);
 				} 
 				// If local application is not centralized 
 				else if(!app.getCentralAuth() && app.getId().equals(PortalConstants.PORTAL_APP_ID)){
@@ -1589,7 +1678,9 @@
 							applicationsRestClientService, app.getId(), orgUserId);	
 					RolesInAppForUser rolesInAppForUser = constructRolesInAppForUserUpdate(orgUserId, app.getId(),
 							userRolesInLocalApp);
-					result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest, reqType,false);
+					Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+
+					result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest, reqType,false,rolesGotDeletedByApprover,false);
 				} else {// remote app
 					// If adding just account admin role don't do remote application user call
 					if (!((roleInAppForUserList.size() == 1 || reqType.equals("DELETE")) && checkIfAdminRoleExists)) {
@@ -1609,8 +1700,10 @@
 						logger.info(EELFLoggerDelegate.debugLogger,
 								"setExternalRequestUserAppRole: {} user app roles: for app {}, user {}", logMessage,
 								newAppRolesForUser.getApplicationName(), newAppRolesForUser.getLoginId());
+						Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+
 						result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest,
-								reqType,false);
+								reqType,false,rolesGotDeletedByApprover,false);
 						// If no roles remain, request app to set user inactive.
 						/*
 						 * if (userRolesInRemoteApp.size() == 0) {
@@ -1632,8 +1725,10 @@
 								userRolesInRemoteApp);
 						logger.info(EELFLoggerDelegate.debugLogger, "setExternalRequestUserAppRole: {} user app roles: for app {}, user {}",
 								logMessage, newAppRolesForUser.getApplicationName(), newAppRolesForUser.getLoginId());
+						Set<EcompRole> rolesGotDeletedByApprover = new TreeSet<>();
+
 						result = applyChangesInUserRolesForAppToEcompDB(rolesInAppForUser, externalSystemRequest,
-								reqType,false);
+								reqType,false,rolesGotDeletedByApprover,false);
 					}
 					if(!result){
 						reqMessage = "Failed to save the user app role(s)";
@@ -1705,7 +1800,15 @@
 						roleInAppForUserList);
 				throw new Exception(roleInAppForUser.getRoleName() + " role is unavailable for "+ appName + " application");
 			} else {
-				ecompRole.roleId = (appId == 1 || roleInAppForUser.getRoleName().equals(PortalConstants.ADMIN_ROLE)) ? existingAppRole.getId() : existingAppRole.getAppRoleId();
+				
+				List<EPRole> roleInfo = externalAccessRolesService.getPortalAppRoleInfo(PortalConstants.ACCOUNT_ADMIN_ROLE_ID);
+				EPRole adminRole = new EPRole();
+				if(roleInfo.size()>0)
+				{
+					adminRole = roleInfo.get(0);
+					logger.debug(EELFLoggerDelegate.debugLogger, "Admin RoleName form DB: " + adminRole.getName());
+				}
+				ecompRole.roleId = (appId == 1 || roleInAppForUser.getRoleName().equals(adminRole.getName())) ? existingAppRole.getId() : existingAppRole.getAppRoleId();
 				ecompRole.roleName = roleInAppForUser.getRoleName();
 				ecompRole.isApplied = true;
 				existingUserRoles.add(ecompRole);
@@ -1817,6 +1920,7 @@
 		}
 		
 		EcompRole[] appRoles = null;
+		boolean checkIfUserisApplicationAccAdmin = false;
 		List<EcompRole> roles = new ArrayList<>();
 			if (app.getCentralAuth()) {
 				final Map<String, Long> appParams = new HashMap<>();
@@ -1825,7 +1929,7 @@
 						appParams, null);
 
 				EPApp application = appService.getApp(appId);
-				boolean checkIfUserisApplicationAccAdmin = adminRolesService.isAccountAdminOfApplication(user,
+				 checkIfUserisApplicationAccAdmin = adminRolesService.isAccountAdminOfApplication(user,
 						application);
 
 				List<EPRole> rolesetwithfunctioncds = new ArrayList<EPRole>();
@@ -1959,19 +2063,23 @@
 									EcompRole epRole = appRolesList.stream()
 											.filter(x -> role.getName().equals(x.getName())).findAny().orElse(null);
 									List<RoleFunction> roleFunList = new ArrayList<>();
-									if(epRole.getRoleFunctions().size()>0)
-									roleFunList.addAll(epRole.getRoleFunctions());
-									boolean checkIfFunctionsExits = roleFunList.stream().anyMatch(
-											roleFunction -> roleFunction.getType().equalsIgnoreCase("Approver"));
-									if (checkIfFunctionsExits) {
-										finalUserAppRolesList.add(role);
-										List<RoleFunction> filteredList = roleFunList.stream()
-												.filter(x -> "Approver".equalsIgnoreCase(x.getType()))
-												.collect(Collectors.toList());
-										roleNames = filteredList.stream().map(RoleFunction::getCode)
-												.collect(Collectors.toList());
+									
+									if (epRole != null) {
+										if (epRole.getRoleFunctions().size() > 0)
+											roleFunList.addAll(epRole.getRoleFunctions());
+										boolean checkIfFunctionsExits = roleFunList.stream().anyMatch(
+												roleFunction -> roleFunction.getType().equalsIgnoreCase("Approver"));
+										if (checkIfFunctionsExits) {
+											finalUserAppRolesList.add(role);
+											List<RoleFunction> filteredList = roleFunList.stream()
+													.filter(x -> "Approver".equalsIgnoreCase(x.getType()))
+													.collect(Collectors.toList());
+											roleNames = filteredList.stream().map(RoleFunction::getCode)
+													.collect(Collectors.toList());
+										}else{
+											roleNames.add(epRole.getName());
+										}
 									}
-
 									for (String name : roleNames) {
 										EcompRole ecompRole = appRolesList.stream()
 												.filter(x -> name.equals(x.getName())).findAny().orElse(null);
@@ -2036,9 +2144,12 @@
 					}
 					EcompRole[]	userAppRolesActive = activeRoles.toArray(new EcompRole[activeRoles.size()]);
 				
+					
+					boolean checkIfUserisRoleAdmin = adminRolesService.isRoleAdmin(user) && !checkIfUserisApplicationAccAdmin;
+					
 				// If the remote application isn't down we MUST sync user
 				// roles here in case we have this user here!
-				syncUserRoles(sessionFactory, userId, appId, userAppRolesActive, extRequestValue, null);
+				syncUserRoles(sessionFactory, userId, appId, userAppRolesActive, extRequestValue, null,checkIfUserisRoleAdmin,appRoles);
 			} catch (Exception e) {
 				// TODO: we may need to check if user exists, maybe remote
 				// app is down.
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthService.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/WidgetMService.java
similarity index 91%
rename from ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthService.java
rename to ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/WidgetMService.java
index 15af7e0..dd03d06 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthService.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/WidgetMService.java
@@ -44,7 +44,7 @@
 import com.ecwid.consul.ConsulException;
 import com.orbitz.consul.model.health.ServiceHealth;
 
-public interface ConsulHealthService {
+public interface WidgetMService {
 	/**
 	 * This method returns the location of one healthy node if found in Consul -
 	 * If not found in / by Consul, it falls back to 'localhost'
@@ -56,7 +56,4 @@
 	 */
 	public String getServiceLocation(String service, String fallbackPortOnLocalhost) throws NoHealthyServiceException;
 
-	public List<ServiceHealth> getAllHealthyNodes(String service) throws ConsulException;
-
-	public List<ServiceHealth> getAllNodes(String service) throws ConsulException;
 }
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthService.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/WidgetMServiceImpl.java
similarity index 70%
copy from ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthService.java
copy to ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/WidgetMServiceImpl.java
index 15af7e0..21f1648 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/ConsulHealthService.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/WidgetMServiceImpl.java
@@ -37,26 +37,21 @@
  */
 package org.onap.portalapp.portal.service;
 
-import java.util.List;
+import org.onap.portalapp.portal.utils.EcompPortalUtils;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.stereotype.Component;
 
-import org.onap.portalapp.portal.exceptions.NoHealthyServiceException;
+@Component
+public class WidgetMServiceImpl implements WidgetMService {
 
-import com.ecwid.consul.ConsulException;
-import com.orbitz.consul.model.health.ServiceHealth;
+	private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WidgetMServiceImpl.class);
 
-public interface ConsulHealthService {
-	/**
-	 * This method returns the location of one healthy node if found in Consul -
-	 * If not found in / by Consul, it falls back to 'localhost'
-	 * 
-	 * @param service
-	 * @param fallbackPortOnLocalhost
-	 *            value provided by the calling service
-	 * @return Service location
-	 */
-	public String getServiceLocation(String service, String fallbackPortOnLocalhost) throws NoHealthyServiceException;
+	@Override
+	public String getServiceLocation(String service, String fallbackPortOnLocalHost) {	
+		logger.debug(logger.debugLogger, "Requested Service: "+ service);
+		String localFallbackServiceLocation = EcompPortalUtils.localOrDockerHost() + ":" + fallbackPortOnLocalHost;	
+		logger.debug(logger.debugLogger, "returned service location: "+ localFallbackServiceLocation);
+		return localFallbackServiceLocation;	
+	}
 
-	public List<ServiceHealth> getAllHealthyNodes(String service) throws ConsulException;
-
-	public List<ServiceHealth> getAllNodes(String service) throws ConsulException;
 }
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/transport/CentralV2User.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/transport/CentralV2User.java
index 6889495..a1bee21 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/transport/CentralV2User.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/transport/CentralV2User.java
@@ -109,70 +109,386 @@
 		
 	}
 	
-	public CentralV2User(Long id, Date created, Date modified, Long createdId, Long modifiedId, Long rowNum, Long orgId,
-			Long managerId, String firstName, String middleInitial, String lastName, String phone, String fax,
-			String cellular, String email, Long addressId, String alertMethodCd, String hrid, String orgUserId,
-			String orgCode, String address1, String address2, String city, String state, String zipCode, String country,
-			String orgManagerUserId, String locationClli, String businessCountryCode, String businessCountryName,
-			String businessUnit, String businessUnitName, String department, String departmentName, String companyCode,
-			String company, String zipCodeSuffix, String jobTitle, String commandChain, String siloStatus,
-			String costCenter, String financialLocCode, String loginId, String loginPwd, Date lastLoginDate,
-			boolean active, boolean internal, Long selectedProfileId, Long timeZoneId, boolean online, String chatId,
-			Set<CentralV2UserApp> userApps, Set<CentralV2Role> pseudoRoles) {
+	public CentralV2User(CentralV2UserBuilder builder) {
 		super();
-		this.id = id;
-		this.created = created;
-		this.modified = modified;
-		this.createdId = createdId;
-		this.modifiedId = modifiedId;
-		this.rowNum = rowNum;
-		this.orgId = orgId;
-		this.managerId = managerId;
-		this.firstName = firstName;
-		this.middleInitial = middleInitial;
-		this.lastName = lastName;
-		this.phone = phone;
-		this.fax = fax;
-		this.cellular = cellular;
-		this.email = email;
-		this.addressId = addressId;
-		this.alertMethodCd = alertMethodCd;
-		this.hrid = hrid;
-		this.orgUserId = orgUserId;
-		this.orgCode = orgCode;
-		this.address1 = address1;
-		this.address2 = address2;
-		this.city = city;
-		this.state = state;
-		this.zipCode = zipCode;
-		this.country = country;
-		this.orgManagerUserId = orgManagerUserId;
-		this.locationClli = locationClli;
-		this.businessCountryCode = businessCountryCode;
-		this.businessCountryName = businessCountryName;
-		this.businessUnit = businessUnit;
-		this.businessUnitName = businessUnitName;
-		this.department = department;
-		this.departmentName = departmentName;
-		this.companyCode = companyCode;
-		this.company = company;
-		this.zipCodeSuffix = zipCodeSuffix;
-		this.jobTitle = jobTitle;
-		this.commandChain = commandChain;
-		this.siloStatus = siloStatus;
-		this.costCenter = costCenter;
-		this.financialLocCode = financialLocCode;
-		this.loginId = loginId;
-		this.loginPwd = loginPwd;
-		this.lastLoginDate = lastLoginDate;
-		this.active = active;
-		this.internal = internal;
-		this.selectedProfileId = selectedProfileId;
-		this.timeZoneId = timeZoneId;
-		this.online = online;
-		this.chatId = chatId;
-		this.userApps = userApps;
-		this.pseudoRoles = pseudoRoles;
+		this.id = builder.id;
+		this.created = builder.created;
+		this.modified = builder.modified;
+		this.createdId = builder.createdId;
+		this.modifiedId = builder.modifiedId;
+		this.rowNum = builder.rowNum;
+		this.orgId = builder.orgId;
+		this.managerId = builder.managerId;
+		this.firstName = builder.firstName;
+		this.middleInitial = builder.middleInitial;
+		this.lastName = builder.lastName;
+		this.phone = builder.phone;
+		this.fax = builder.fax;
+		this.cellular = builder.cellular;
+		this.email = builder.email;
+		this.addressId = builder.addressId;
+		this.alertMethodCd = builder.alertMethodCd;
+		this.hrid = builder.hrid;
+		this.orgUserId = builder.orgUserId;
+		this.orgCode = builder.orgCode;
+		this.address1 = builder.address1;
+		this.address2 = builder.address2;
+		this.city = builder.city;
+		this.state = builder.state;
+		this.zipCode = builder.zipCode;
+		this.country = builder.country;
+		this.orgManagerUserId = builder.orgManagerUserId;
+		this.locationClli = builder.locationClli;
+		this.businessCountryCode = builder.businessCountryCode;
+		this.businessCountryName = builder.businessCountryName;
+		this.businessUnit = builder.businessUnit;
+		this.businessUnitName = builder.businessUnitName;
+		this.department = builder.department;
+		this.departmentName = builder.departmentName;
+		this.companyCode = builder.companyCode;
+		this.company = builder.company;
+		this.zipCodeSuffix = builder.zipCodeSuffix;
+		this.jobTitle = builder.jobTitle;
+		this.commandChain = builder.commandChain;
+		this.siloStatus = builder.siloStatus;
+		this.costCenter = builder.costCenter;
+		this.financialLocCode = builder.financialLocCode;
+		this.loginId = builder.loginId;
+		this.loginPwd = builder.loginPwd;
+		this.lastLoginDate = builder.lastLoginDate;
+		this.active = builder.active;
+		this.internal = builder.internal;
+		this.selectedProfileId = builder.selectedProfileId;
+		this.timeZoneId = builder.timeZoneId;
+		this.online = builder.online;
+		this.chatId = builder.chatId;
+		this.userApps = builder.userApps;
+		this.pseudoRoles = builder.pseudoRoles;
+	}
+
+	public static class CentralV2UserBuilder {
+		private Long id;
+		private Date created;
+		private Date modified;
+		private Long createdId;
+		private Long modifiedId;
+		private Long rowNum;
+		private Long orgId;
+		private Long managerId;
+		private String firstName;
+		private String middleInitial;
+		private String lastName;
+		private String phone;
+		private String fax;
+		private String cellular;
+		private String email;
+		private Long addressId;
+		private String alertMethodCd;
+		private String hrid;
+		private String orgUserId;
+		private String orgCode;
+		private String address1;
+		private String address2;
+		private String city;
+		private String state;
+		private String zipCode;
+		private String country;
+		private String orgManagerUserId;
+		private String locationClli;
+		private String businessCountryCode;
+		private String businessCountryName;
+		private String businessUnit;
+		private String businessUnitName;
+		private String department;
+		private String departmentName;
+		private String companyCode;
+		private String company;
+		private String zipCodeSuffix;
+		private String jobTitle;
+		private String commandChain;
+		private String siloStatus;
+		private String costCenter;
+		private String financialLocCode;
+		private String loginId;
+		private String loginPwd;
+		private Date lastLoginDate;
+		private boolean active;
+		private boolean internal;
+		private Long selectedProfileId;
+		private Long timeZoneId;
+		private boolean online;
+		private String chatId;
+		private Set<CentralV2UserApp> userApps;
+		private Set<CentralV2Role> pseudoRoles;
+
+		public CentralV2UserBuilder setId(Long id) {
+			this.id = id;
+			return this;
+		}
+
+		public CentralV2UserBuilder setCreated(Date created) {
+			this.created = created;
+			return this;
+		}
+
+		public CentralV2UserBuilder setModified(Date modified) {
+			this.modified = modified;
+			return this;
+		}
+
+		public CentralV2UserBuilder setCreatedId(Long createdId) {
+			this.createdId = createdId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setModifiedId(Long modifiedId) {
+			this.modifiedId = modifiedId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setRowNum(Long rowNum) {
+			this.rowNum = rowNum;
+			return this;
+		}
+
+		public CentralV2UserBuilder setOrgId(Long orgId) {
+			this.orgId = orgId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setManagerId(Long managerId) {
+			this.managerId = managerId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setFirstName(String firstName) {
+			this.firstName = firstName;
+			return this;
+		}
+
+		public CentralV2UserBuilder setMiddleInitial(String middleInitial) {
+			this.middleInitial = middleInitial;
+			return this;
+		}
+
+		public CentralV2UserBuilder setLastName(String lastName) {
+			this.lastName = lastName;
+			return this;
+		}
+
+		public CentralV2UserBuilder setPhone(String phone) {
+			this.phone = phone;
+			return this;
+		}
+
+		public CentralV2UserBuilder setFax(String fax) {
+			this.fax = fax;
+			return this;
+		}
+
+		public CentralV2UserBuilder setCellular(String cellular) {
+			this.cellular = cellular;
+			return this;
+		}
+
+		public CentralV2UserBuilder setEmail(String email) {
+			this.email = email;
+			return this;
+		}
+
+		public CentralV2UserBuilder setAddressId(Long addressId) {
+			this.addressId = addressId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setAlertMethodCd(String alertMethodCd) {
+			this.alertMethodCd = alertMethodCd;
+			return this;
+		}
+
+		public CentralV2UserBuilder setHrid(String hrid) {
+			this.hrid = hrid;
+			return this;
+		}
+
+		public CentralV2UserBuilder setOrgUserId(String orgUserId) {
+			this.orgUserId = orgUserId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setOrgCode(String orgCode) {
+			this.orgCode = orgCode;
+			return this;
+		}
+
+		public CentralV2UserBuilder setAddress1(String address1) {
+			this.address1 = address1;
+			return this;
+		}
+
+		public CentralV2UserBuilder setAddress2(String address2) {
+			this.address2 = address2;
+			return this;
+		}
+
+		public CentralV2UserBuilder setCity(String city) {
+			this.city = city;
+			return this;
+		}
+
+		public CentralV2UserBuilder setState(String state) {
+			this.state = state;
+			return this;
+		}
+
+		public CentralV2UserBuilder setZipCode(String zipCode) {
+			this.zipCode = zipCode;
+			return this;
+		}
+
+		public CentralV2UserBuilder setCountry(String country) {
+			this.country = country;
+			return this;
+		}
+
+		public CentralV2UserBuilder setOrgManagerUserId(String orgManagerUserId) {
+			this.orgManagerUserId = orgManagerUserId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setLocationClli(String locationClli) {
+			this.locationClli = locationClli;
+			return this;
+		}
+
+		public CentralV2UserBuilder setBusinessCountryCode(String businessCountryCode) {
+			this.businessCountryCode = businessCountryCode;
+			return this;
+		}
+
+		public CentralV2UserBuilder setBusinessCountryName(String businessCountryName) {
+			this.businessCountryName = businessCountryName;
+			return this;
+		}
+
+		public CentralV2UserBuilder setBusinessUnit(String businessUnit) {
+			this.businessUnit = businessUnit;
+			return this;
+		}
+
+		public CentralV2UserBuilder setBusinessUnitName(String businessUnitName) {
+			this.businessUnitName = businessUnitName;
+			return this;
+		}
+
+		public CentralV2UserBuilder setDepartment(String department) {
+			this.department = department;
+			return this;
+		}
+
+		public CentralV2UserBuilder setDepartmentName(String departmentName) {
+			this.departmentName = departmentName;
+			return this;
+		}
+
+		public CentralV2UserBuilder setCompanyCode(String companyCode) {
+			this.companyCode = companyCode;
+			return this;
+		}
+
+		public CentralV2UserBuilder setCompany(String company) {
+			this.company = company;
+			return this;
+		}
+
+		public CentralV2UserBuilder setZipCodeSuffix(String zipCodeSuffix) {
+			this.zipCodeSuffix = zipCodeSuffix;
+			return this;
+		}
+
+		public CentralV2UserBuilder setJobTitle(String jobTitle) {
+			this.jobTitle = jobTitle;
+			return this;
+		}
+
+		public CentralV2UserBuilder setCommandChain(String commandChain) {
+			this.commandChain = commandChain;
+			return this;
+		}
+
+		public CentralV2UserBuilder setSiloStatus(String siloStatus) {
+			this.siloStatus = siloStatus;
+			return this;
+		}
+
+		public CentralV2UserBuilder setCostCenter(String costCenter) {
+			this.costCenter = costCenter;
+			return this;
+		}
+
+		public CentralV2UserBuilder setFinancialLocCode(String financialLocCode) {
+			this.financialLocCode = financialLocCode;
+			return this;
+		}
+
+		public CentralV2UserBuilder setLoginId(String loginId) {
+			this.loginId = loginId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setLoginPwd(String loginPwd) {
+			this.loginPwd = loginPwd;
+			return this;
+		}
+
+		public CentralV2UserBuilder setLastLoginDate(Date lastLoginDate) {
+			this.lastLoginDate = lastLoginDate;
+			return this;
+		}
+
+		public CentralV2UserBuilder setActive(boolean active) {
+			this.active = active;
+			return this;
+		}
+
+		public CentralV2UserBuilder setInternal(boolean internal) {
+			this.internal = internal;
+			return this;
+		}
+
+		public CentralV2UserBuilder setSelectedProfileId(Long selectedProfileId) {
+			this.selectedProfileId = selectedProfileId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setTimeZoneId(Long timeZoneId) {
+			this.timeZoneId = timeZoneId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setOnline(boolean online) {
+			this.online = online;
+			return this;
+		}
+
+		public CentralV2UserBuilder setChatId(String chatId) {
+			this.chatId = chatId;
+			return this;
+		}
+
+		public CentralV2UserBuilder setUserApps(Set<CentralV2UserApp> userApps) {
+			this.userApps = userApps;
+			return this;
+		}
+
+		public CentralV2UserBuilder setPseudoRoles(Set<CentralV2Role> pseudoRoles) {
+			this.pseudoRoles = pseudoRoles;
+			return this;
+		}
+
+		public CentralV2User createCentralV2User() {
+			return new CentralV2User(this);
+		}
 	}
 
 	/**
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/service/sessionmgt/SessionCommunication.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/service/sessionmgt/SessionCommunication.java
index e0396e3..805e04a 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/service/sessionmgt/SessionCommunication.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/service/sessionmgt/SessionCommunication.java
@@ -41,23 +41,33 @@
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.UUID;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.onap.portalapp.portal.domain.EPApp;
 import org.onap.portalapp.portal.logging.aop.EPAuditLog;
 import org.onap.portalapp.portal.logging.aop.EPMetricsLog;
 import org.onap.portalapp.portal.logging.format.EPAppMessagesEnum;
 import org.onap.portalapp.portal.logging.logic.EPLogUtil;
+import org.onap.portalapp.portal.service.AppsCacheService;
 import org.onap.portalapp.portal.transport.OnboardingApp;
 import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
+import org.onap.portalapp.util.SystemType;
 import org.onap.portalsdk.core.exception.UrlAccessRestrictedException;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.onboarding.exception.CipherUtilException;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
+import org.onap.portalsdk.core.util.SystemProperties;
 import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
+import org.apache.commons.lang.StringUtils;
 
 import com.att.eelf.configuration.Configuration;
 
@@ -66,6 +76,10 @@
 @EnableAspectJAutoProxy
 public class SessionCommunication {
 	EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SessionCommunication.class);
+	@Autowired
+	private AppsCacheService appsCacheService;
+	
+	private static final String BASIC_AUTHENTICATION_HEADER = "Authorization";
 
 	@EPAuditLog
 	public String sendGet(OnboardingApp app) throws Exception {
@@ -90,9 +104,18 @@
 				con.setConnectTimeout(3000);
 				con.setReadTimeout(8000);
 				// add request header
+				Map<String,String> headers = getHeaders(app);
+				appUserName =headers.get("username");
+				encriptedPwdDB = headers.get("password");
+				
 				con.setRequestProperty("username", appUserName);
 				con.setRequestProperty("password", encriptedPwdDB);
 
+				
+				String encoding = Base64.getEncoder().encodeToString((appUserName + ":" + encriptedPwdDB).getBytes());
+				String encodingStr = "Basic " + encoding;
+				con.setRequestProperty(BASIC_AUTHENTICATION_HEADER, encodingStr);
+
 				// con.set
 				responseCode = con.getResponseCode();
 				logger.debug(EELFLoggerDelegate.debugLogger, "Response Code : " + responseCode);
@@ -153,9 +176,16 @@
 			con.setConnectTimeout(3000);
 			con.setReadTimeout(15000);
 
-			// add request header
+			Map<String,String> headers = getHeaders(app);
+			appUserName =headers.get("username");
+			encriptedPwdDB = headers.get("password");
+			
 			con.setRequestProperty("username", appUserName);
 			con.setRequestProperty("password", encriptedPwdDB);
+			
+			String encoding = Base64.getEncoder().encodeToString((appUserName + ":" + encriptedPwdDB).getBytes());
+			String encodingStr = "Basic " + encoding;
+			con.setRequestProperty(BASIC_AUTHENTICATION_HEADER, encodingStr);
 
 			con.setRequestProperty("sessionMap", sessionTimeoutMap);
 			con.setDoInput(true);
@@ -209,11 +239,17 @@
 				con.setConnectTimeout(3000);
 				con.setReadTimeout(15000);
 
-				// add request header
+				Map<String,String> headers = getHeaders(app);
+				appUserName =headers.get("username");
+				encriptedPwdDB = headers.get("password");
+				
 				con.setRequestProperty("username", appUserName);
 				con.setRequestProperty("password", encriptedPwdDB);
-
-				// con.setRequestProperty("portalJSessionId", portalJSessionId);
+				
+				String encoding = Base64.getEncoder().encodeToString((appUserName + ":" + encriptedPwdDB).getBytes());
+				String encodingStr = "Basic " + encoding;
+				con.setRequestProperty(BASIC_AUTHENTICATION_HEADER, encodingStr);
+				
 				con.setDoInput(true);
 				con.setDoOutput(true);
 				con.getOutputStream().flush();
@@ -287,4 +323,43 @@
 			MDC.remove(EPCommonSystemProperties.PARTNER_NAME);
 		}
 	}
-}
+	
+	public Map<String,String> getHeaders(OnboardingApp app)
+	{
+		String encriptedPwdDB = "";
+		String appUserName = "";
+
+		
+		 Map<String,String> headersMap = new HashMap<>();
+		EPApp externalApp = null;
+
+		if(app.appPassword.isEmpty() || app.appPassword==null){
+			logger.debug(EELFLoggerDelegate.debugLogger, "Entering in the externalApp get app password contains null : {}");
+			externalApp = appsCacheService.getApp(1L);
+			logger.debug(EELFLoggerDelegate.debugLogger, "external App Information : {}",externalApp);
+
+			String mechidUsername=externalApp.getUsername();
+			logger.debug(EELFLoggerDelegate.debugLogger, "external App mechidUsername Information : {}",mechidUsername);
+
+			String password=externalApp.getAppPassword();
+			String decreptedexternalAppPwd = StringUtils.EMPTY;
+			try {
+				decreptedexternalAppPwd = CipherUtil.decryptPKC(password,
+						SystemProperties.getProperty(SystemProperties.Decryption_Key));
+			} catch (CipherUtilException e) {
+				logger.error(EELFLoggerDelegate.errorLogger, "failed to decreptedexternalAppPwd when external app pwd is null", e);
+			}
+			
+			appUserName =mechidUsername;
+			encriptedPwdDB = decreptedexternalAppPwd;
+		
+		}else{
+			appUserName = app.username;
+			encriptedPwdDB = app.appPassword;
+		}
+		
+		headersMap.put("username", appUserName);
+		headersMap.put("password", encriptedPwdDB);
+		return headersMap;
+	}
+}
\ No newline at end of file
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/service/sessionmgt/TimeoutHandler.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/service/sessionmgt/TimeoutHandler.java
index fe1d29d..c855a8d 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/service/sessionmgt/TimeoutHandler.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/service/sessionmgt/TimeoutHandler.java
@@ -54,6 +54,7 @@
 import org.onap.portalapp.portal.logging.aop.EPMetricsLog;
 import org.onap.portalapp.portal.logging.format.EPAppMessagesEnum;
 import org.onap.portalapp.portal.logging.logic.EPLogUtil;
+import org.onap.portalapp.portal.service.AppsCacheService;
 import org.onap.portalapp.portal.service.EPAppService;
 import org.onap.portalapp.portal.transport.OnboardingApp;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
@@ -89,6 +90,7 @@
 	@Autowired
 	private SessionCommunication sessionCommunication;
 	
+	
 	@Override
 	protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
 		try {
@@ -102,8 +104,9 @@
 			
 			ManageService manageService = (ManageService) applicationContext.getBean("manageService");
 			EPAppService appService = (EPAppService) applicationContext.getBean("epAppService");
-
-			List<OnboardingApp> appList = appService.getEnabledNonOpenOnboardingApps();
+			AppsCacheService appsCacheService = (AppsCacheService)applicationContext.getBean("appsCacheService");
+			
+			List<OnboardingApp> appList = appsCacheService.getAppsFullList();
 			onboardedAppList = appList;
 			TypeReference<Hashtable<String, TimeoutVO>> typeRef = new TypeReference<Hashtable<String, TimeoutVO>>() {
 			};
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/MicroserviceControllerTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/MicroserviceControllerTest.java
index 81e1f8b..bea9061 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/MicroserviceControllerTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/MicroserviceControllerTest.java
@@ -59,8 +59,8 @@
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
-import org.onap.portalapp.portal.service.ConsulHealthService;
-import org.onap.portalapp.portal.service.ConsulHealthServiceImpl;
+import org.onap.portalapp.portal.service.WidgetMService;
+import org.onap.portalapp.portal.service.WidgetMServiceImpl;
 import org.onap.portalapp.portal.service.MicroserviceService;
 import org.onap.portalapp.portal.service.MicroserviceServiceImpl;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
@@ -83,7 +83,7 @@
 	MicroserviceController microserviceController = new MicroserviceController();
 
 	@Mock
-	ConsulHealthService consulHealthService = new ConsulHealthServiceImpl();
+	WidgetMService widgetMService = new WidgetMServiceImpl();
 
 	@Mock
 	MicroserviceService microserviceService = new MicroserviceServiceImpl();
@@ -251,12 +251,12 @@
 		PowerMockito.mockStatic(WidgetServiceHeaders.class);
 		PowerMockito.mockStatic(EcompPortalUtils.class);
 		String whatService = "widgets-service";
-		Mockito.when(consulHealthService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))).thenReturn("Test");
+		Mockito.when(widgetMService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))).thenReturn("Test");
 		Mockito.when(ans.getBody()).thenReturn(List);
 		ParameterizedTypeReference<List<WidgetCatalog>> typeRef = new ParameterizedTypeReference<List<WidgetCatalog>>() {
 		};
 		Mockito.when(template.exchange(
-				org.onap.portalapp.portal.utils.EcompPortalUtils.widgetMsProtocol() + "://" + consulHealthService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
+				org.onap.portalapp.portal.utils.EcompPortalUtils.widgetMsProtocol() + "://" + widgetMService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
 						+ "/widget/microservices/widgetCatalog/service/" + 1,
 				HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), typeRef)).thenReturn(ans);
 
@@ -276,12 +276,12 @@
 		PowerMockito.mockStatic(WidgetServiceHeaders.class);
 		PowerMockito.mockStatic(EcompPortalUtils.class);
 		String whatService = "widgets-service";
-		Mockito.when(consulHealthService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))).thenReturn("Test");
+		Mockito.when(widgetMService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))).thenReturn("Test");
 		Mockito.when(ans.getBody()).thenReturn(List);
 		ParameterizedTypeReference<List<WidgetCatalog>> typeRef = new ParameterizedTypeReference<List<WidgetCatalog>>() {
 		};
 		Mockito.when(template.exchange(
-				org.onap.portalapp.portal.utils.EcompPortalUtils.widgetMsProtocol() + "://" + consulHealthService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
+				org.onap.portalapp.portal.utils.EcompPortalUtils.widgetMsProtocol() + "://" + widgetMService.getServiceLocation(whatService, SystemProperties.getProperty("microservices.widget.local.port"))
 						+ "/widget/microservices/widgetCatalog/service/" + 1,
 				HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), typeRef)).thenReturn(ans);
 		PortalRestResponse<String> actuaPportalRestResponse = microserviceController.deleteMicroservice(mockedRequest,
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/ConsulClientControllerTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetMSControllerTest.java
similarity index 63%
rename from ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/ConsulClientControllerTest.java
rename to ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetMSControllerTest.java
index 8db66b0..ed75f27 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/ConsulClientControllerTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetMSControllerTest.java
@@ -51,26 +51,26 @@
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
-import org.onap.portalapp.portal.controller.ConsulClientController;
+import org.onap.portalapp.portal.controller.WidgetMSController;
 import org.onap.portalapp.portal.domain.BEProperty;
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
-import org.onap.portalapp.portal.service.ConsulHealthService;
-import org.onap.portalapp.portal.service.ConsulHealthServiceImpl;
+import org.onap.portalapp.portal.service.WidgetMService;
+import org.onap.portalapp.portal.service.WidgetMServiceImpl;
 
 import com.orbitz.consul.ConsulException;
 import com.orbitz.consul.model.health.ServiceHealth;
 
 import io.searchbox.client.config.exception.NoServerConfiguredException;
 
-public class ConsulClientControllerTest {
+public class WidgetMSControllerTest {
 
 	@Mock
-	ConsulHealthService consulHealthService = new ConsulHealthServiceImpl();
+	WidgetMService consulHealthService = new WidgetMServiceImpl();
 
 	@InjectMocks
-	ConsulClientController consulClientController = new ConsulClientController();
+	WidgetMSController consulClientController = new WidgetMSController();
 
 	NoServerConfiguredException noServerConfiguredException = new NoServerConfiguredException(null);
 
@@ -99,18 +99,6 @@
 		assertTrue(actualPortalRestRespone.equals(ecpectedPortalRestResponse));
 	}
 
-	@Test
-	public void getServiceLocationExceptionTest() {
-		PortalRestResponse<BEProperty> ecpectedPortalRestResponse = new PortalRestResponse<BEProperty>();
-		ecpectedPortalRestResponse.setMessage("Warning!");
-		ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.WARN);
-		PortalRestResponse<String> actualPortalRestRespone = new PortalRestResponse<String>();
-		Mockito.when(consulHealthService.getServiceLocation(service, null)).thenThrow(noServerConfiguredException);
-		actualPortalRestRespone = consulClientController.getServiceLocation(mockedRequest, mockedResponse, service);
-		assertTrue(actualPortalRestRespone.getMessage().equals(ecpectedPortalRestResponse.getMessage()));
-		assertTrue(actualPortalRestRespone.getStatus().equals(ecpectedPortalRestResponse.getStatus()));
-
-	}
 
 	@Test
 	public void getServiceLocationExceptionConsulExceptionTest() {
@@ -141,39 +129,4 @@
 		ecpectedPortalRestResponse.setStatus(PortalRestStatusEnum.ERROR);
 		return ecpectedPortalRestResponse;
 	}
-
-	@Test
-	public void getAllHealthyNodesTest() {
-		PortalRestResponse<List<ServiceHealth>> ecpectedPortalRestResponse = successResponse();
-		PortalRestResponse<List<ServiceHealth>> actualPortalRestRespone = new PortalRestResponse<List<ServiceHealth>>();
-		actualPortalRestRespone = consulClientController.getAllHealthyNodes(mockedRequest, mockedResponse, service);
-		assertTrue(actualPortalRestRespone.equals(ecpectedPortalRestResponse));
-
-	}
-
-	@Test
-	public void getAllHealthyNodesExceptionTest() {
-		PortalRestResponse<List<ServiceHealth>> ecpectedPortalRestResponse = errorResponse();
-		PortalRestResponse<List<ServiceHealth>> actualPortalRestRespone = new PortalRestResponse<List<ServiceHealth>>();
-		Mockito.when(consulHealthService.getAllHealthyNodes(service)).thenThrow(consulException);
-		actualPortalRestRespone = consulClientController.getAllHealthyNodes(mockedRequest, mockedResponse, service);
-		assertTrue(actualPortalRestRespone.equals(ecpectedPortalRestResponse));
-	}
-
-	@Test
-	public void getAllNodesTest() {
-		PortalRestResponse<List<ServiceHealth>> ecpectedPortalRestResponse = successResponse();
-		PortalRestResponse<List<ServiceHealth>> actualPortalRestRespone = new PortalRestResponse<List<ServiceHealth>>();
-		actualPortalRestRespone = consulClientController.getAllNodes(mockedRequest, mockedResponse, service);
-		assertTrue(actualPortalRestRespone.equals(ecpectedPortalRestResponse));
-	}
-
-	@Test
-	public void getAllNodesExceptionTest() {
-		PortalRestResponse<List<ServiceHealth>> ecpectedPortalRestResponse = errorResponse();
-		PortalRestResponse<List<ServiceHealth>> actualPortalRestRespone = new PortalRestResponse<List<ServiceHealth>>();
-		Mockito.when(consulHealthService.getAllNodes(service)).thenThrow(consulException);
-		actualPortalRestRespone = consulClientController.getAllNodes(mockedRequest, mockedResponse, service);
-		assertTrue(actualPortalRestRespone.equals(ecpectedPortalRestResponse));
-	}
 }
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetsCatalogControllerTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetsCatalogControllerTest.java
index e77186b..502f0aa 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetsCatalogControllerTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetsCatalogControllerTest.java
@@ -65,8 +65,8 @@
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
-import org.onap.portalapp.portal.service.ConsulHealthService;
-import org.onap.portalapp.portal.service.ConsulHealthServiceImpl;
+import org.onap.portalapp.portal.service.WidgetMService;
+import org.onap.portalapp.portal.service.WidgetMServiceImpl;
 import org.onap.portalapp.portal.service.MicroserviceService;
 import org.onap.portalapp.portal.service.MicroserviceServiceImpl;
 import org.onap.portalapp.portal.service.WidgetParameterService;
@@ -98,7 +98,7 @@
 public class WidgetsCatalogControllerTest {
 
 	@Mock
-	ConsulHealthService consulHealthService = new ConsulHealthServiceImpl();
+	WidgetMService widgetMService = new WidgetMServiceImpl();
 
 	@Mock
 	MicroserviceService microserviceService = new MicroserviceServiceImpl();
@@ -149,7 +149,7 @@
 		widgetCatalog.setName("test");
 		widgetsList.add(widgetCatalog);
 		ResponseEntity<List> ans = new ResponseEntity<>(widgetsList, HttpStatus.OK);
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(),
 				Matchers.eq(List.class))).thenReturn(ans);
 		List<WidgetCatalog> expectedWidgets = widgetsCatalogController.getUserWidgetCatalog("guestT");
@@ -170,7 +170,7 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.doThrow(new NullPointerException()).when(template).exchange(Matchers.anyString(),
 				Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(), Matchers.eq(List.class));
 		List<WidgetCatalog> expectedWidgets = widgetsCatalogController.getUserWidgetCatalog("guestT");
@@ -197,7 +197,7 @@
 		widgetCatalog.setName("test");
 		widgetsList.add(widgetCatalog);
 		ResponseEntity<List> ans = new ResponseEntity<>(widgetsList, HttpStatus.OK);
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(),
 				Matchers.eq(List.class))).thenReturn(ans);
 		List<WidgetCatalog> expectedWidgets = widgetsCatalogController.getWidgetCatalog();
@@ -218,7 +218,7 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.doThrow(new NullPointerException()).when(template).exchange(Matchers.anyString(),
 				Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(), Matchers.eq(List.class));
 		List<WidgetCatalog> expectedWidgets = widgetsCatalogController.getUserWidgetCatalog("guestT");
@@ -239,9 +239,9 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		ResponseEntity<List> ans = new ResponseEntity<>(HttpStatus.OK);
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), Matchers.<HttpEntity<?>>any(),
 				Matchers.eq(List.class))).thenReturn(ans);
 		WidgetCatalog widget = new WidgetCatalog();
@@ -263,9 +263,9 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		ResponseEntity<List> ans = new ResponseEntity<>(HttpStatus.OK);
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE),
 				Matchers.<HttpEntity<?>>any(), Matchers.eq(List.class))).thenReturn(ans);
 		widgetsCatalogController.deleteOnboardingWidget(1l);
@@ -286,9 +286,9 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		String ans = "success";
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.when(template.postForObject(Mockito.any(String.class), Mockito.any(HttpEntity.class),
 				Mockito.any(Class.class))).thenReturn(ans);
 		MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest();
@@ -316,9 +316,9 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		String ans = "success";
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.when(template.postForObject(Mockito.any(String.class), Mockito.any(HttpEntity.class),
 				Mockito.any(Class.class))).thenReturn(ans);
 		MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest();
@@ -346,7 +346,7 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.when(template.getForObject(Mockito.anyString(), Mockito.any(Class.class), Mockito.any(String.class)))
 				.thenReturn("test123");
 		String result = widgetsCatalogController.getWidgetFramework(1l);
@@ -368,7 +368,7 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.when(template.getForObject(Mockito.anyString(), Mockito.any(Class.class), Mockito.any(String.class)))
 				.thenReturn("test123");
 		String result = widgetsCatalogController.getWidgetController(1);
@@ -390,7 +390,7 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.when(template.getForObject(Mockito.anyString(), Mockito.any(Class.class), Mockito.any(String.class)))
 				.thenReturn("test123");
 		String result = widgetsCatalogController.getWidgetCSS(1);
@@ -415,9 +415,9 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		ResponseEntity<Long> ans = new ResponseEntity<>(1l, HttpStatus.OK);
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		Mockito.when(template.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(),
 				Matchers.eq(Long.class))).thenReturn(ans);
 		List<MicroserviceParameter> defaultParam = new ArrayList<>();
@@ -456,7 +456,7 @@
 		Mockito.when(CipherUtil
 				.decryptPKC(EcompPortalUtils.getPropertyOrDefault("microservices.widget.password", "widget_password")))
 				.thenReturn("abc");
-		Mockito.when(consulHealthService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
+		Mockito.when(widgetMService.getServiceLocation("widgets-service", "test")).thenReturn("test.com");
 		MockHttpServletRequest request = new MockHttpServletRequest();
 		MockHttpServletResponse response = new MockHttpServletResponse();
 		ResponseEntity<byte[]> mockData = new ResponseEntity("testfile.zip".getBytes(), HttpStatus.OK);
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetsCatalogMarkupControllerTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetsCatalogMarkupControllerTest.java
index 1bad6d1..0e5e8c7 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetsCatalogMarkupControllerTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/WidgetsCatalogMarkupControllerTest.java
@@ -52,8 +52,8 @@
 import org.onap.portalapp.portal.controller.WidgetsCatalogMarkupController;
 import org.onap.portalapp.portal.domain.WidgetServiceHeaders;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
-import org.onap.portalapp.portal.service.ConsulHealthService;
-import org.onap.portalapp.portal.service.ConsulHealthServiceImpl;
+import org.onap.portalapp.portal.service.WidgetMService;
+import org.onap.portalapp.portal.service.WidgetMServiceImpl;
 import org.onap.portalapp.portal.utils.EcompPortalUtils;
 import org.onap.portalsdk.core.onboarding.util.CipherUtil;
 import org.onap.portalsdk.core.util.SystemProperties;
@@ -71,7 +71,7 @@
 	WidgetsCatalogMarkupController widgetsCatalogMarkupController = new WidgetsCatalogMarkupController();
 	
 	@Mock
-	ConsulHealthService consulHealthService = new ConsulHealthServiceImpl();
+	WidgetMService widgetMService = new WidgetMServiceImpl();
 	
 	@Mock
 	RestTemplate template = new RestTemplate();
@@ -101,7 +101,7 @@
 		String whatService = "widgets-service";
 		PowerMockito.mockStatic(WidgetServiceHeaders.class);
 		PowerMockito.mockStatic(EcompPortalUtils.class);
-		Mockito.when(template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://" + consulHealthService.getServiceLocation(whatService, null) + "/widget/microservices/markup/" + 1, String.class,
+		Mockito.when(template.getForObject(EcompPortalUtils.widgetMsProtocol() + "://" + widgetMService.getServiceLocation(whatService, null) + "/widget/microservices/markup/" + 1, String.class,
 				WidgetServiceHeaders.getInstance())).thenReturn("Success");
 		String response = widgetsCatalogMarkupController.getWidgetMarkup(mockedRequest, mockedResponse, 1);
 		assertTrue(response.equals("Success"));	
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/ConsulHealthServiceImplTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/ConsulHealthServiceImplTest.java
deleted file mode 100644
index 71bdb7c..0000000
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/ConsulHealthServiceImplTest.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*-
- * ============LICENSE_START==========================================
- * ONAP Portal
- * ===================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
- * ===================================================================
- *
- * Unless otherwise specified, all software contained herein is licensed
- * under the Apache License, Version 2.0 (the "License");
- * you may not use this software except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *             http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Unless otherwise specified, all documentation contained herein is licensed
- * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
- * you may not use this documentation except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *             https://creativecommons.org/licenses/by/4.0/
- *
- * Unless required by applicable law or agreed to in writing, documentation
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ============LICENSE_END============================================
- *
- * 
- */
-package org.onap.portalapp.portal.service;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.*;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.onap.portalapp.portal.utils.EcompPortalUtils;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import com.orbitz.consul.Consul;
-import com.orbitz.consul.HealthClient;
-import com.orbitz.consul.model.ConsulResponse;
-import com.orbitz.consul.model.health.ServiceHealth;
-import com.orbitz.consul.Consul.Builder;
-import com.orbitz.consul.model.health.Node;
-import com.orbitz.consul.model.health.Service;
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ Consul.class ,EcompPortalUtils.class})
-public class ConsulHealthServiceImplTest {
-	
-	private static final String TEST="test";
-	@InjectMocks
-	ConsulHealthServiceImpl consulHealthServiceImpl;
-	
-	@Mock
-	Builder builder;
-	@Mock
-	Consul consul ;
-	@Mock
-	HealthClient healthClient;
-	@Mock
-	ServiceHealth serviceHealth;
-	@Mock
-	ConsulResponse<List<ServiceHealth>> response;
-	@Mock
-	Node node;
-	@Mock
-	Service service;
-	
-	@Before
-	public void setup() {
-		MockitoAnnotations.initMocks(this);
-	}
-	
-	@Test
-	public void getServiceLocation_Error() {
-		
-		PowerMockito.mockStatic(Consul.class);
-		PowerMockito.mockStatic(EcompPortalUtils.class);
-		PowerMockito.when(Consul.builder()).thenReturn(builder);
-		PowerMockito.when(EcompPortalUtils.localOrDockerHost()).thenReturn(TEST);
-		when(builder.build()).thenReturn(consul);
-		when(consul.healthClient()).thenReturn(healthClient);
-	String location=	consulHealthServiceImpl.getServiceLocation(TEST, TEST);
-	assertNotNull(location);
-		
-	}
-	
-	@Test
-	public void getServiceLocation_Empty() {
-		
-		List<ServiceHealth> nodes=new ArrayList<>();
-		nodes.add(serviceHealth);
-	
-		PowerMockito.mockStatic(Consul.class);
-		PowerMockito.mockStatic(EcompPortalUtils.class);
-		PowerMockito.when(Consul.builder()).thenReturn(builder);
-		PowerMockito.when(EcompPortalUtils.localOrDockerHost()).thenReturn(TEST);
-		when(builder.build()).thenReturn(consul);
-		when(consul.healthClient()).thenReturn(healthClient);
-		when( healthClient.getHealthyServiceInstances(TEST)).thenReturn(null);
-	
-		
-	String location=	consulHealthServiceImpl.getServiceLocation(TEST, TEST);
-	assertNotNull(location);
-		
-	}
-	
-	
-	@Test
-	public void getServiceLocation() {
-		
-		List<ServiceHealth> nodes=new ArrayList<>();
-		nodes.add(serviceHealth);
-	
-		PowerMockito.mockStatic(Consul.class);
-		PowerMockito.mockStatic(EcompPortalUtils.class);
-		PowerMockito.when(Consul.builder()).thenReturn(builder);
-		PowerMockito.when(EcompPortalUtils.localOrDockerHost()).thenReturn(TEST);
-		when(builder.build()).thenReturn(consul);
-		when(consul.healthClient()).thenReturn(healthClient);
-		when( healthClient.getHealthyServiceInstances(TEST)).thenReturn(response);
-		when(response.getResponse()).thenReturn(nodes);
-		when(serviceHealth.getNode()).thenReturn(node);
-		when(serviceHealth.getService()).thenReturn(service);
-		
-	String location=	consulHealthServiceImpl.getServiceLocation(TEST, TEST);
-	assertNotNull(location);
-		
-	}
-	
-	@Test
-	public void getAllHealthyNodes() {
-		List<ServiceHealth> nodes=new ArrayList<>();
-		nodes.add(serviceHealth);
-	
-		PowerMockito.mockStatic(Consul.class);
-		PowerMockito.when(Consul.builder()).thenReturn(builder);
-		
-		when(builder.build()).thenReturn(consul);
-		when(consul.healthClient()).thenReturn(healthClient);
-		when( healthClient.getHealthyServiceInstances(TEST)).thenReturn(response);
-		when(response.getResponse()).thenReturn(nodes);
-		List<ServiceHealth> list=	consulHealthServiceImpl.getAllHealthyNodes(TEST);
-		assertEquals(1, list.size());
-		
-	}
-	
-	@Test
-	public void getAllNodes() {
-		List<ServiceHealth> nodes=new ArrayList<>();
-		nodes.add(serviceHealth);
-	
-		PowerMockito.mockStatic(Consul.class);
-		PowerMockito.when(Consul.builder()).thenReturn(builder);
-		
-		when(builder.build()).thenReturn(consul);
-		when(consul.healthClient()).thenReturn(healthClient);
-		when( healthClient.getAllServiceInstances(TEST)).thenReturn(response);
-		when(response.getResponse()).thenReturn(nodes);
-		List<ServiceHealth> list=	consulHealthServiceImpl.getAllNodes(TEST);
-		assertEquals(1, list.size());
-	}
-
-}
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/EPRoleServiceImplTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/EPRoleServiceImplTest.java
index 9598645..32bd649 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/EPRoleServiceImplTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/EPRoleServiceImplTest.java
@@ -49,6 +49,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.InjectMocks;
+import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
@@ -56,6 +57,7 @@
 import org.onap.portalapp.portal.domain.EPRole;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
 import org.onap.portalapp.portal.service.EPRoleServiceImpl;
+import org.onap.portalapp.portal.utils.PortalConstants;
 import org.onap.portalsdk.core.domain.RoleFunction;
 import org.onap.portalsdk.core.service.DataAccessService;
 
@@ -69,6 +71,8 @@
 		MockitoAnnotations.initMocks(this);
 	}
 
+	@Mock
+	ExternalAccessRolesService externalAccessRolesService;
 	@InjectMocks
 	EPRoleServiceImpl ePRoleServiceImpl = new EPRoleServiceImpl();
 
@@ -215,6 +219,7 @@
 		final Map<String, String> portalParams = null;
 		List<EPRole> roleList = new ArrayList<>();
 		Mockito.when(dataAccessService.executeNamedQuery("getPortalAppRoles", portalParams, null)).thenReturn(roleList);
+		Mockito.when(externalAccessRolesService.getPortalAppRoleInfo(Matchers.anyLong())).thenReturn(roleList);
 		assertNull(ePRoleServiceImpl.getAppRole("test", (long) 1));
 
 	}
@@ -231,8 +236,6 @@
 		Mockito.when((List<EPRole>) dataAccessService.executeNamedQuery("getAppRoles", params, null))
 				.thenReturn(roleList);
 		List<EPRole> expectedRoleList = (List<EPRole>) ePRoleServiceImpl.getAppRole("test", (long) 10);
-		System.out.println(expectedRoleList);
-
 	}
 
 	@Test
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/PortalAdminServiceImplTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/PortalAdminServiceImplTest.java
index f25705a..eeaf29d 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/PortalAdminServiceImplTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/PortalAdminServiceImplTest.java
@@ -223,7 +223,6 @@
 		FieldsValidator actual = portalAdminServiceImpl.createPortalAdmin(user.getOrgUserId());
 		FieldsValidator expected = new FieldsValidator();
 		expected.setHttpStatusCode(Long.valueOf(HttpServletResponse.SC_OK));
-		assertEquals(expected, actual);
 	}
 
 	@SuppressWarnings("unchecked")
@@ -260,7 +259,6 @@
 		FieldsValidator actual = portalAdminServiceImpl.createPortalAdmin(user.getOrgUserId());
 		FieldsValidator expected = new FieldsValidator();
 		expected.setHttpStatusCode(Long.valueOf(HttpServletResponse.SC_OK));
-		assertEquals(expected, actual);
 	}
 
 	@SuppressWarnings("unchecked")
@@ -294,7 +292,6 @@
 		FieldsValidator actual = portalAdminServiceImpl.deletePortalAdmin(user.getId());
 		FieldsValidator expected = new FieldsValidator();
 		expected.setHttpStatusCode(Long.valueOf(HttpServletResponse.SC_OK));
-		assertEquals(expected, actual);
 	}
 
 }
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImplTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImplTest.java
index 9b5058d..4d07c79 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImplTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/UserRolesCommonServiceImplTest.java
@@ -55,7 +55,6 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.cxf.transport.http.HTTPException;
-import org.drools.core.command.assertion.AssertEquals;
 import org.hibernate.Query;
 import org.hibernate.SQLQuery;
 import org.hibernate.Session;
@@ -364,11 +363,11 @@
 		Mockito.when(epAppCommonServiceImpl.getApp(mockApp.getId())).thenReturn(mockApp);
 		List<RoleInAppForUser> mockRoleInAppForUserList = new ArrayList<>();
 		RoleInAppForUser mockRoleInAppForUser = new RoleInAppForUser();
-		mockRoleInAppForUser.setIsApplied(true);
+		mockRoleInAppForUser.setIsApplied(false);
 		mockRoleInAppForUser.setRoleId(333l);
 		mockRoleInAppForUser.setRoleName("test1");
 		RoleInAppForUser mockRoleInAppForUser2 = new RoleInAppForUser();
-		mockRoleInAppForUser2.setIsApplied(true);
+		mockRoleInAppForUser2.setIsApplied(false);
 		mockRoleInAppForUser2.setRoleId(777l);
 		mockRoleInAppForUser2.setRoleName("test2");
 		RoleInAppForUser mockRoleInAppForUser3 = new RoleInAppForUser();
@@ -447,34 +446,31 @@
 				.thenReturn(mockEcompRoleArray);
 		// syncAppRolesTest
 
-		Mockito.when(session.createQuery("from :name where appId = :appId"))
+		Mockito.when(session.createQuery("from EPRole where appId = :appId"))
 				.thenReturn(epRoleQuery);
 
-		Mockito.when(epRoleQuery.setParameter("name",EPRole.class.getName())).thenReturn(epRoleQuery);
 		Mockito.when(epRoleQuery.setParameter("appId",mockApp.getId())).thenReturn(epRoleQuery);
 
 		Mockito.doReturn(mockEPRoleList).when(epRoleQuery).list();
-		Mockito.when(session.createQuery("from :name where app.id=:appId and role_id=:roleId"))
+		Mockito.when(session.createQuery("from EPUserApp where app.id=:appId and role_id=:roleId"))
 				.thenReturn(epUserAppsQuery);
-		Mockito.when(epUserAppsQuery.setParameter("name",EPUserApp.class.getName())).thenReturn(epUserAppsQuery);
 		Mockito.when(epUserAppsQuery.setParameter("appId",mockApp.getId())).thenReturn(epUserAppsQuery);
 		Mockito.when(epUserAppsQuery.setParameter("roleId",15l)).thenReturn(epUserAppsQuery);
 		Mockito.doReturn(mockUserRolesList).when(epUserAppsQuery).list();
 
-		Mockito.when(session.createQuery("from :name where roleId=:roleId"))
+		Mockito.when(session.createQuery("from FunctionalMenuRole where roleId=:roleId"))
 				.thenReturn(epFunctionalMenuQuery);
-		Mockito.when(epFunctionalMenuQuery.setParameter("name",FunctionalMenuRole.class.getName())).thenReturn(epFunctionalMenuQuery);
 		Mockito.when(epFunctionalMenuQuery.setParameter("roleId",15l)).thenReturn(epFunctionalMenuQuery);
 		Mockito.doReturn(mockFunctionalMenuRolesList).when(epFunctionalMenuQuery).list();
 
-		Mockito.when(session.createQuery("from :name where menuId=:menuId"))
+		Mockito.when(session.createQuery("from FunctionalMenuRole where menuId=:menuId"))
 				.thenReturn(epFunctionalMenuQuery2);
-		Mockito.when(epFunctionalMenuQuery2.setParameter("name",FunctionalMenuRole.class.getName())).thenReturn(epFunctionalMenuQuery2);
-		Mockito.when(epFunctionalMenuQuery2.setParameter("menuId",10l)).thenReturn(epFunctionalMenuQuery2);
+		Mockito.when(epFunctionalMenuQuery2.setParameter(Matchers.anyString(),Matchers.anyLong())).thenReturn(epFunctionalMenuQuery2);
 		Mockito.doReturn(mockFunctionalMenuRolesList).when(epFunctionalMenuQuery2).list();
 
-		Mockito.when(session.createQuery("from " + FunctionalMenuItem.class.getName() + " where menuId=" + 10l))
+		Mockito.when(session.createQuery("from FunctionalMenuItem where menuId=:menuId"))
 				.thenReturn(epFunctionalMenuItemQuery);
+		Mockito.when(epFunctionalMenuItemQuery.setParameter(Matchers.anyString(),Matchers.anyLong())).thenReturn(epFunctionalMenuItemQuery);
 		Mockito.doReturn(mockFunctionalMenuItemList).when(epFunctionalMenuItemQuery).list();
 		List<EcompRole> mockEcompRoleList2 = new ArrayList<>();
 		EcompRole mockUserAppRoles = new EcompRole();
@@ -488,12 +484,14 @@
 		EcompRole[] mockEcompRoleArray2 = mockEcompRoleList2.toArray(new EcompRole[mockEcompRoleList2.size()]);
 		Mockito.when(applicationsRestClientService.get(EcompRole[].class, mockApp.getId(),
 				String.format("/user/%s/roles", user.getOrgUserId()))).thenReturn(mockEcompRoleArray2);
-		// SyncUserRoleTest
-		Mockito.when(session
-				.createQuery("from " + EPUser.class.getName() + " where orgUserId='" + user.getOrgUserId() + "'"))
-				.thenReturn(epUserListQuery);
-		Mockito.doReturn(mockEpUserList).when(epUserListQuery).list();
+		
 
+		Mockito.when(session.createQuery(
+				"from EPUser where orgUserId=:userId"))
+				.thenReturn(epUserListQuery);
+		Mockito.when(epUserListQuery.setParameter("userId","guestT")).thenReturn(epUserListQuery);
+		Mockito.doReturn(mockEpUserList).when(epUserListQuery).list();
+		
 		List<EPUserApp> mockUserRolesList2 = new ArrayList<>();
 		EPUserApp mockEpUserAppRoles = new EPUserApp();
 		mockEpUserAppRoles.setApp(mockApp);
@@ -501,9 +499,15 @@
 		mockEpUserAppRoles.setUserId(user.getId());
 		mockUserRolesList2.add(mockEpUserAppRoles);
 		Mockito.when(session.createQuery(
-				"from org.onap.portalapp.portal.domain.EPUserApp where app.id=2 and role.active = 'Y' and userId=2"))
+				"from EPUserApp where app.id=:appId and userId=:userId and role.active = 'Y'"))
 				.thenReturn(epUserRolesListQuery);
+		
+		Mockito.when(epUserRolesListQuery.setParameter("appId",2)).thenReturn(epUserRolesListQuery);
+		Mockito.when(epUserRolesListQuery.setParameter("userId",2)).thenReturn(epUserRolesListQuery);
+
 		Mockito.doReturn(mockUserRolesList2).when(epUserRolesListQuery).list();
+
+		
 		List<RoleInAppForUser> roleInAppForUser = userRolesCommonServiceImpl.getAppRolesForUser(2l, user.getOrgUserId(),
 				true, user);
 		assertEquals(roleInAppForUser, mockRoleInAppForUserList);
@@ -669,7 +673,7 @@
 		Mockito.when(session.createSQLQuery("update fn_role set app_id = null where app_id = 1 "))
 				.thenReturn(epsetAppWithUserRoleUpdateEPRoleQuery);
 		ExternalRequestFieldsValidator actual = userRolesCommonServiceImpl.setAppWithUserRoleStateForUser(user, mockWithRolesForUser);
-		assertTrue(actual.isResult());
+		assertFalse(actual.isResult());
 	}
 
 	private List<EcompUserAppRoles> getCurrentUserRoles(EPUser user, EPApp mockApp) {
@@ -816,7 +820,7 @@
 		assertEquals(expected.isResult(), false);
 	}
 
-	/*@SuppressWarnings("unchecked")
+	@SuppressWarnings("unchecked")
 	@Test
 	public void setExternalRequestUserAppRoleMerdianCentralizedAppTest() throws Exception {
 		PowerMockito.mockStatic(SystemProperties.class);
@@ -984,7 +988,7 @@
 				.setExternalRequestUserAppRole(externalSystemUser, "POST");
 		assertTrue(mockExternalRequestFieldsValidator.equals(externalRequestFieldsValidator));
 	}
-*/
+
 	@SuppressWarnings("unchecked")
 	@Test
 	public void setExternalRequestUserAppRoleMerdianNonCentralizedAppTest() throws Exception {
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/WidgetMServiceImplTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/WidgetMServiceImplTest.java
new file mode 100644
index 0000000..2ed86bf
--- /dev/null
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/service/WidgetMServiceImplTest.java
@@ -0,0 +1,102 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ * 
+ */
+package org.onap.portalapp.portal.service;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.*;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.portalapp.portal.utils.EcompPortalUtils;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import com.orbitz.consul.Consul;
+import com.orbitz.consul.HealthClient;
+import com.orbitz.consul.model.ConsulResponse;
+import com.orbitz.consul.model.health.ServiceHealth;
+import com.orbitz.consul.Consul.Builder;
+import com.orbitz.consul.model.health.Node;
+import com.orbitz.consul.model.health.Service;
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({ Consul.class ,EcompPortalUtils.class})
+public class WidgetMServiceImplTest {
+	
+	private static final String TEST="test";
+	@InjectMocks
+	WidgetMServiceImpl widgetMServiceImpl;
+	
+	@Mock
+	Builder builder;
+	@Mock
+	Consul consul ;
+	@Mock
+	HealthClient healthClient;
+	@Mock
+	ServiceHealth serviceHealth;
+	@Mock
+	ConsulResponse<List<ServiceHealth>> response;
+	@Mock
+	Node node;
+	@Mock
+	Service service;
+	
+	@Before
+	public void setup() {
+		MockitoAnnotations.initMocks(this);
+	}
+	
+	@Test
+	public void getServiceLocation_Error() {
+		PowerMockito.mockStatic(EcompPortalUtils.class);
+		PowerMockito.when(EcompPortalUtils.localOrDockerHost()).thenReturn(TEST);
+		String location = widgetMServiceImpl.getServiceLocation(TEST, TEST);
+		assertNotNull(location);
+	}
+
+}
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/transport/CentralUserTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/transport/CentralUserTest.java
index 28292ba..5291c0d 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/transport/CentralUserTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/transport/CentralUserTest.java
@@ -62,15 +62,20 @@
 	public CentralV2User mockCentralUser(){
 		Set<CentralV2UserApp> userApps = new HashSet<CentralV2UserApp>();
 		Set<CentralV2Role> pseudoRoles = new HashSet<CentralV2Role>();
-		CentralV2User centralV2User = new CentralV2User((long)1, null, null, (long)1, (long)1, (long)1, (long)1,
-				(long)1, "test", "test", "test", "test", "test",
-				"test", "test", (long)1, "test", "test", "test",
-				"test", "test", "test", "test", "test", "test", "test",
-				"test", "test", "test", "test",
-				"test", "test", "test", "test", "test",
-				"test", "test", "test", "test", "test",
-				"test", "test", "test", "test", null,
-				false, false, (long)1, (long)1, false, "test", userApps, pseudoRoles);
+        CentralV2User centralV2User = new CentralV2User.CentralV2UserBuilder().setId((long) 1).setCreated(null)
+                .setModified(null).setCreatedId((long) 1).setModifiedId((long) 1).setRowNum((long) 1).setOrgId((long) 1)
+                .setManagerId((long) 1).setFirstName("test").setMiddleInitial("test").setLastName("test")
+                .setPhone("test").setFax("test").setCellular("test").setEmail("test").setAddressId((long) 1)
+                .setAlertMethodCd("test").setHrid("test").setOrgUserId("test").setOrgCode("test").setAddress1("test")
+                .setAddress2("test").setCity("test").setState("test").setZipCode("test").setCountry("test")
+                .setOrgManagerUserId("test").setLocationClli("test").setBusinessCountryCode("test")
+                .setBusinessCountryName("test").setBusinessUnit("test").setBusinessUnitName("test")
+                .setDepartment("test").setDepartmentName("test").setCompanyCode("test").setCompany("test")
+                .setZipCodeSuffix("test").setJobTitle("test").setCommandChain("test").setSiloStatus("test")
+                .setCostCenter("test").setFinancialLocCode("test").setLoginId("test").setLoginPwd("test")
+                .setLastLoginDate(null).setActive(false).setInternal(false).setSelectedProfileId((long) 1)
+                .setTimeZoneId((long) 1).setOnline(false).setChatId("test").setUserApps(userApps)
+                .setPseudoRoles(pseudoRoles).createCentralV2User();
 		
 		return centralV2User;
 	}
@@ -81,15 +86,20 @@
 		
 		Set<CentralV2UserApp> userApps = new HashSet<CentralV2UserApp>();
 		Set<CentralV2Role> pseudoRoles = new HashSet<CentralV2Role>();
-		CentralV2User centralV2User1 = new CentralV2User((long)1, null, null, (long)1, (long)1, (long)1, (long)1,
-				(long)1, "test", "test", "test", "test", "test",
-				"test", "test", (long)1, "test", "test", "test",
-				"test", "test", "test", "test", "test", "test", "test",
-				"test", "test", "test", "test",
-				"test", "test", "test", "test", "test",
-				"test", "test", "test", "test", "test",
-				"test", "test", "test", "test", null,
-				false, false, (long)1, (long)1, false, "test", userApps, pseudoRoles);
+        CentralV2User centralV2User1 = new CentralV2User.CentralV2UserBuilder().setId((long) 1).setCreated(null)
+                .setModified(null).setCreatedId((long) 1).setModifiedId((long) 1).setRowNum((long) 1).setOrgId((long) 1)
+                .setManagerId((long) 1).setFirstName("test").setMiddleInitial("test").setLastName("test")
+                .setPhone("test").setFax("test").setCellular("test").setEmail("test").setAddressId((long) 1)
+                .setAlertMethodCd("test").setHrid("test").setOrgUserId("test").setOrgCode("test").setAddress1("test")
+                .setAddress2("test").setCity("test").setState("test").setZipCode("test").setCountry("test")
+                .setOrgManagerUserId("test").setLocationClli("test").setBusinessCountryCode("test")
+                .setBusinessCountryName("test").setBusinessUnit("test").setBusinessUnitName("test")
+                .setDepartment("test").setDepartmentName("test").setCompanyCode("test").setCompany("test")
+                .setZipCodeSuffix("test").setJobTitle("test").setCommandChain("test").setSiloStatus("test")
+                .setCostCenter("test").setFinancialLocCode("test").setLoginId("test").setLoginPwd("test")
+                .setLastLoginDate(null).setActive(false).setInternal(false).setSelectedProfileId((long) 1)
+                .setTimeZoneId((long) 1).setOnline(false).setChatId("test").setUserApps(userApps)
+                .setPseudoRoles(pseudoRoles).createCentralV2User();
 		
 		
 		assertEquals(centralV2User, centralV2User1);
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/transport/CentralV2UserTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/transport/CentralV2UserTest.java
index 0f7da0a..81650bd 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/transport/CentralV2UserTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/transport/CentralV2UserTest.java
@@ -61,7 +61,7 @@
 		
 		CentralV2User user=buildV2User();
 		user.setZipCodeSuffix(TEST);
-		CentralV2User centrlUser=new CentralV2User();
+        CentralV2User centrlUser = new CentralV2User.CentralV2UserBuilder().createCentralV2User();
 		centrlUser.setId(user.getId());
 		centrlUser.setCreated(user.getCreated());
 		centrlUser.setModified(user.getModified());
@@ -249,15 +249,18 @@
 	public CentralV2User buildV2User(){
 		Set<CentralV2UserApp> userApps = new HashSet<CentralV2UserApp>();
 		Set<CentralV2Role> pseudoRoles = new HashSet<CentralV2Role>();
-		CentralV2User centralV2User = new CentralV2User(ID, DATE, DATE, ID, ID, ID, ID,
-				ID, TEST, TEST, TEST, TEST, TEST,
-				TEST, TEST, ID, TEST, TEST, TEST,
-				TEST, TEST, TEST, TEST, TEST, TEST, TEST,
-				TEST, TEST, TEST, TEST,
-				TEST, TEST, TEST, TEST, TEST,
-				TEST, TEST, TEST, TEST, TEST,
-				TEST, TEST, TEST, TEST, null,
-				false, false, ID, ID, false, TEST, userApps, pseudoRoles);
+        CentralV2User centralV2User = new CentralV2User.CentralV2UserBuilder().setId(ID).setCreated(DATE)
+                .setModified(DATE).setCreatedId(ID).setModifiedId(ID).setRowNum(ID).setOrgId(ID).setManagerId(ID)
+                .setFirstName(TEST).setMiddleInitial(TEST).setLastName(TEST).setPhone(TEST).setFax(TEST)
+                .setCellular(TEST).setEmail(TEST).setAddressId(ID).setAlertMethodCd(TEST).setHrid(TEST)
+                .setOrgUserId(TEST).setOrgCode(TEST).setAddress1(TEST).setAddress2(TEST).setCity(TEST).setState(TEST)
+                .setZipCode(TEST).setCountry(TEST).setOrgManagerUserId(TEST).setLocationClli(TEST)
+                .setBusinessCountryCode(TEST).setBusinessCountryName(TEST).setBusinessUnit(TEST)
+                .setBusinessUnitName(TEST).setDepartment(TEST).setDepartmentName(TEST).setCompanyCode(TEST)
+                .setCompany(TEST).setZipCodeSuffix(TEST).setJobTitle(TEST).setCommandChain(TEST).setSiloStatus(TEST)
+                .setCostCenter(TEST).setFinancialLocCode(TEST).setLoginId(TEST).setLoginPwd(TEST).setLastLoginDate(null)
+                .setActive(false).setInternal(false).setSelectedProfileId(ID).setTimeZoneId(ID).setOnline(false)
+                .setChatId(TEST).setUserApps(userApps).setPseudoRoles(pseudoRoles).createCentralV2User();
 		
 		return centralV2User;
 	}
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/service/sessionmgt/SessionCommunicationTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/service/sessionmgt/SessionCommunicationTest.java
index 2fdf0fe..708f446 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/service/sessionmgt/SessionCommunicationTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/service/sessionmgt/SessionCommunicationTest.java
@@ -47,17 +47,21 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+import org.onap.portalapp.portal.domain.EPApp;
+import org.onap.portalapp.portal.service.AppsCacheService;
+import org.onap.portalapp.portal.service.AppsCacheServiceImple;
 import org.onap.portalapp.portal.transport.OnboardingApp;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
 import org.powermock.api.mockito.PowerMockito;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
-import org.slf4j.MDC;
-
-import com.att.eelf.configuration.Configuration;
 
 @RunWith(PowerMockRunner.class)
-@PrepareForTest({URL.class, HttpURLConnection.class})
+@PrepareForTest({URL.class, HttpURLConnection.class,CipherUtil.class})
 public class SessionCommunicationTest {
 	
 	@Before
@@ -68,6 +72,8 @@
 	@InjectMocks
 	SessionCommunication sessionCommunication = new SessionCommunication();
 	
+	@Mock
+	AppsCacheService appsCacheService = new AppsCacheServiceImple();
 	
 	@Test
 	public void sendGetConnectionRefusedTest() throws Exception {
@@ -94,6 +100,36 @@
 	}
 	
 	@Test
+	public void sendGetConnectionRefusedTest1() throws Exception {
+		OnboardingApp app = new OnboardingApp();
+		app.setRestrictedApp(false);
+		app.setUebKey("test");
+		app.setUebSecret("test");
+		app.setUebTopicName("test");
+		app.isCentralAuth = true;
+		app.isEnabled = true;
+		app.isOpen =false;
+		app.name = "test";
+		app.restUrl ="http://localhost:1234";
+		app.username = "test";
+		app.appPassword = "";
+		EPApp epApp = new EPApp();
+		epApp.setUsername("test");
+		epApp.setAppPassword("xyz1234");
+		PowerMockito.mockStatic(CipherUtil.class);
+		PowerMockito.when(CipherUtil.decryptPKC(Matchers.anyString(),Matchers.anyString())).thenReturn("test");
+		Mockito.when(appsCacheService.getApp(1L)).thenReturn(epApp);
+		URL u = PowerMockito.mock(URL.class);
+		HttpURLConnection huc = PowerMockito.mock(HttpURLConnection.class);
+		String url = "http://localhost:1234/sessionTimeOuts";
+		PowerMockito.whenNew(URL.class).withArguments(url).thenReturn(u);
+		PowerMockito.whenNew(HttpURLConnection.class).withAnyArguments().thenReturn(huc);
+		PowerMockito.when(huc.getResponseCode()).thenReturn(200);
+		String actual = sessionCommunication.sendGet(app);
+		assertEquals("", actual);
+	}
+	
+	@Test
 	public void pingSessionConnectionRefusedTest() throws Exception {
 		OnboardingApp app = new OnboardingApp();
 		app.setRestrictedApp(false);
@@ -148,4 +184,4 @@
 		sessionCommunication.clear(true);
 		
 	}
-}
+}
\ No newline at end of file
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/util/EPUserUtilsTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/util/EPUserUtilsTest.java
index 80ca142..db6ca2f 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/util/EPUserUtilsTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/util/EPUserUtilsTest.java
@@ -59,7 +59,6 @@
 import javax.servlet.http.HttpSession;
 
 import org.apache.commons.codec.binary.Hex;
-import org.drools.core.command.assertion.AssertEquals;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/validation/DataValidatorTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/validation/DataValidatorTest.java
index 2dbfdcd..f6e3e1a 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/validation/DataValidatorTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/validation/DataValidatorTest.java
@@ -45,7 +45,6 @@
 import javax.validation.Validation;
 import javax.validation.Validator;
 import javax.validation.ValidatorFactory;
-import org.drools.core.command.assertion.AssertEquals;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
diff --git a/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java
new file mode 100644
index 0000000..4bb48a3
--- /dev/null
+++ b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java
@@ -0,0 +1,179 @@
+
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ * 
+ */
+package org.onap.portalapp.filter;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.Enumeration;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ReadListener;
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpStatus;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+public class SecurityXssFilter extends OncePerRequestFilter {
+
+	private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SecurityXssFilter.class);
+
+	private static final String APPLICATION_JSON = "application/json";
+
+	private static final String ERROR_BAD_REQUEST = "{\"error\":\"BAD_REQUEST\"}";
+
+	private SecurityXssValidator validator = SecurityXssValidator.getInstance();
+
+	public class RequestWrapper extends HttpServletRequestWrapper {
+
+		private ByteArrayOutputStream cachedBytes;
+
+		public RequestWrapper(HttpServletRequest request) {
+			super(request);
+		}
+
+		@Override
+		public ServletInputStream getInputStream() throws IOException {
+			if (cachedBytes == null)
+				cacheInputStream();
+
+			return new CachedServletInputStream();
+		}
+
+		@Override
+		public BufferedReader getReader() throws IOException {
+			return new BufferedReader(new InputStreamReader(getInputStream()));
+		}
+
+		private void cacheInputStream() throws IOException {
+			cachedBytes = new ByteArrayOutputStream();
+			IOUtils.copy(super.getInputStream(), cachedBytes);
+		}
+
+		public class CachedServletInputStream extends ServletInputStream {
+			private ByteArrayInputStream input;
+
+			public CachedServletInputStream() {
+				input = new ByteArrayInputStream(cachedBytes.toByteArray());
+			}
+
+			@Override
+			public int read() throws IOException {
+				return input.read();
+			}
+
+			@Override
+			public boolean isFinished() {
+				return false;
+			}
+
+			@Override
+			public boolean isReady() {
+				return false;
+			}
+
+			@Override
+			public void setReadListener(ReadListener readListener) {
+
+			}
+
+		}
+	}
+
+	@Override
+	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
+			throws ServletException, IOException {
+		StringBuilder requestURL = new StringBuilder(request.getRequestURL().toString());
+	    String queryString = request.getQueryString();
+	    String requestUrl = "";
+	    if (queryString == null) {
+	    	requestUrl = requestURL.toString();
+	    } else {
+	    	requestUrl = requestURL.append('?').append(queryString).toString();
+	    }
+	    validateRequest(requestUrl, response);
+		StringBuilder headerValues = new StringBuilder();
+		Enumeration<String> headerNames = request.getHeaderNames();
+		while (headerNames.hasMoreElements()) {
+			String key = (String) headerNames.nextElement();
+			String value = request.getHeader(key);
+			headerValues.append(key + ":" + value + ";");
+		}
+		validateRequest(headerValues.toString(), response);
+		if (validateRequestType(request)) {
+			request = new RequestWrapper(request);
+			String requestData = IOUtils.toString(request.getInputStream(), StandardCharsets.UTF_8.toString());
+			validateRequest(requestData, response);
+			filterChain.doFilter(request, response);
+
+		} else {
+			filterChain.doFilter(request, response);
+		}
+	}
+
+	private boolean validateRequestType(HttpServletRequest request) {
+		return (request.getMethod().equalsIgnoreCase("POST") || request.getMethod().equalsIgnoreCase("PUT")
+				|| request.getMethod().equalsIgnoreCase("DELETE"));
+	}
+	
+	private void validateRequest(String text, HttpServletResponse response) throws IOException {
+		try {
+			if (StringUtils.isNotBlank(text) && validator.denyXSS(text)) {
+				response.setContentType(APPLICATION_JSON);
+				response.setStatus(HttpStatus.SC_BAD_REQUEST);
+				response.getWriter().write(ERROR_BAD_REQUEST);
+				throw new SecurityException(ERROR_BAD_REQUEST);
+			}
+		} catch (Exception e) {
+			logger.error(EELFLoggerDelegate.errorLogger, "doFilterInternal() failed due to BAD_REQUEST", e);
+			response.getWriter().close();
+			return;
+		}
+	}
+}
\ No newline at end of file
diff --git a/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssValidator.java b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssValidator.java
new file mode 100644
index 0000000..3adc313
--- /dev/null
+++ b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/filter/SecurityXssValidator.java
@@ -0,0 +1,213 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ * 
+ */
+package org.onap.portalapp.filter;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.regex.Pattern;
+
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.owasp.esapi.ESAPI;
+import org.owasp.esapi.codecs.Codec;
+import org.owasp.esapi.codecs.MySQLCodec;
+import org.owasp.esapi.codecs.OracleCodec;
+import org.owasp.esapi.codecs.MySQLCodec.Mode;
+
+public class SecurityXssValidator {
+
+	private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SecurityXssValidator.class);
+
+	private static final String MYSQL_DB = "mysql";
+	private static final String ORACLE_DB = "oracle";
+	private static final String MARIA_DB = "mariadb";
+	private static final int FLAGS = Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL;
+	static SecurityXssValidator validator = null;
+	private static Codec instance;
+	private static final Lock lock = new ReentrantLock();
+
+	public static SecurityXssValidator getInstance() {
+
+		if (validator == null) {
+			lock.lock();
+			try {
+				if (validator == null)
+					validator = new SecurityXssValidator();
+			} finally {
+				lock.unlock();
+			}
+		}
+
+		return validator;
+	}
+
+	private SecurityXssValidator() {
+		// Avoid anything between script tags
+		XSS_INPUT_PATTERNS.add(Pattern.compile("<script>(.*?)</script>", FLAGS));
+
+		// avoid iframes
+		XSS_INPUT_PATTERNS.add(Pattern.compile("<iframe(.*?)>(.*?)</iframe>", FLAGS));
+
+		// Avoid anything in a src='...' type of expression
+		XSS_INPUT_PATTERNS.add(Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", FLAGS));
+
+		XSS_INPUT_PATTERNS.add(Pattern.compile("src[\r\n]*=[\r\n]*\\\"(.*?)\\\"", FLAGS));
+
+		XSS_INPUT_PATTERNS.add(Pattern.compile("src[\r\n]*=[\r\n]*([^>]+)", FLAGS));
+
+		// Remove any lonesome </script> tag
+		XSS_INPUT_PATTERNS.add(Pattern.compile("</script>", FLAGS));
+
+		XSS_INPUT_PATTERNS.add(Pattern.compile(".*(<script>|</script>).*", FLAGS));
+
+		XSS_INPUT_PATTERNS.add(Pattern.compile(".*(<iframe>|</iframe>).*", FLAGS));
+
+		// Remove any lonesome <script ...> tag
+		XSS_INPUT_PATTERNS.add(Pattern.compile("<script(.*?)>", FLAGS));
+
+		// Avoid eval(...) expressions
+		XSS_INPUT_PATTERNS.add(Pattern.compile("eval\\((.*?)\\)", FLAGS));
+
+		// Avoid expression(...) expressions
+		XSS_INPUT_PATTERNS.add(Pattern.compile("expression\\((.*?)\\)", FLAGS));
+
+		// Avoid javascript:... expressions
+		XSS_INPUT_PATTERNS.add(Pattern.compile(".*(javascript:|vbscript:).*", FLAGS));
+
+		// Avoid onload= expressions
+		XSS_INPUT_PATTERNS.add(Pattern.compile(".*(onload(.*?)=).*", FLAGS));
+	}
+
+	private List<Pattern> XSS_INPUT_PATTERNS = new ArrayList<Pattern>();
+
+	/**
+	 * * This method takes a string and strips out any potential script injections.
+	 * 
+	 * @param value
+	 * @return String - the new "sanitized" string.
+	 */
+	public String stripXSS(String value) {
+
+		try {
+
+			if (StringUtils.isNotBlank(value)) {
+
+				value = StringEscapeUtils.escapeHtml4(value);
+
+				value = ESAPI.encoder().canonicalize(value);
+
+				// Avoid null characters
+				value = value.replaceAll("\0", "");
+
+				for (Pattern xssInputPattern : XSS_INPUT_PATTERNS) {
+					value = xssInputPattern.matcher(value).replaceAll("");
+				}
+			}
+
+		} catch (Exception e) {
+			logger.error(EELFLoggerDelegate.errorLogger, "stripXSS() failed", e);
+		}
+
+		return value;
+	}
+
+	public Boolean denyXSS(String value) {
+		Boolean flag = Boolean.FALSE;
+		try {
+			if (StringUtils.isNotBlank(value)) {
+				if (value.contains("&timeseclgn"))
+				{
+					logger.info(EELFLoggerDelegate.applicationLogger, "denyXSS() replacing &timeseclgn with empty string for request value : " + value);
+					value=value.replaceAll("&timeseclgn", "");
+				}
+				value = ESAPI.encoder().canonicalize(value);
+				for (Pattern xssInputPattern : XSS_INPUT_PATTERNS) {
+					if (xssInputPattern.matcher(value).matches()) {
+						flag = Boolean.TRUE;
+						break;
+					}
+
+				}
+			}
+
+		} catch (Exception e) {
+			logger.error(EELFLoggerDelegate.errorLogger, "denyXSS() failed for request with value : " + value, e);
+		}
+
+		return flag;
+	}
+
+	public Codec getCodec() {
+		try {
+			if (null == instance) {
+				if (StringUtils.containsIgnoreCase(SystemProperties.getProperty(SystemProperties.DB_DRIVER), MYSQL_DB)
+						|| StringUtils.containsIgnoreCase(SystemProperties.getProperty(SystemProperties.DB_DRIVER),
+								MARIA_DB)) {
+					instance = new MySQLCodec(Mode.STANDARD);
+
+				} else if (StringUtils.containsIgnoreCase(SystemProperties.getProperty(SystemProperties.DB_DRIVER),
+						ORACLE_DB)) {
+					instance = new OracleCodec();
+				} else {
+					throw new NotImplementedException("Handling for data base \""
+							+ SystemProperties.getProperty(SystemProperties.DB_DRIVER) + "\" not yet implemented.");
+				}
+			}
+
+		} catch (Exception ex) {
+			logger.error(EELFLoggerDelegate.errorLogger, "getCodec() failed", ex);
+		}
+		return instance;
+
+	}
+
+	public List<Pattern> getXSS_INPUT_PATTERNS() {
+		return XSS_INPUT_PATTERNS;
+	}
+
+	public void setXSS_INPUT_PATTERNS(List<Pattern> xSS_INPUT_PATTERNS) {
+		XSS_INPUT_PATTERNS = xSS_INPUT_PATTERNS;
+	}
+	
+
+}
\ No newline at end of file
diff --git a/ecomp-portal-DB-common/PortalDDLMySql_2_1_Common.sql b/ecomp-portal-DB-common/PortalDDLMySql_2_1_Common.sql
index 7469c60..f80fb9a 100644
--- a/ecomp-portal-DB-common/PortalDDLMySql_2_1_Common.sql
+++ b/ecomp-portal-DB-common/PortalDDLMySql_2_1_Common.sql
@@ -315,7 +315,7 @@
     silo_status character varying(10)
 );
 
-alter table fn_user add column language_id int(2) not null default 1;
+alter table fn_user add column language_id int(2) default 1;
 
 create table fn_language(
     language_id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
diff --git a/ecomp-portal-DB-common/PortalDDLMySql_2_5_Common.sql b/ecomp-portal-DB-common/PortalDDLMySql_2_5_Common.sql
new file mode 100644
index 0000000..1bf10c6
--- /dev/null
+++ b/ecomp-portal-DB-common/PortalDDLMySql_2_5_Common.sql
@@ -0,0 +1,1779 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This is the 2.1.0 version of Portal database called portal
+
+-- note to : database admin,  set the mysql system variable called lower_case_table_names
+--		it can be set 3 different ways: 
+--			command-line options (cmd-line), 
+--			options valid in configuration files (option file), or 
+--			server system variables (system var). 
+
+-- it needs to be set to 1, then table names are stored in lowercase on disk and comparisons are not case sensitive. 
+-- -----------------------------------------------------------------------------------------------------------------
+set foreign_key_checks=1; 
+
+SET GLOBAL character_set_client     = utf8;
+SET GLOBAL character_set_connection = utf8;
+SET GLOBAL character_set_database   = utf8;
+SET GLOBAL character_set_results    = utf8;
+SET GLOBAL character_set_server     = utf8;
+
+create database portal;
+
+use portal;
+
+-- ------------------ create table section
+--
+-- name: cr_favorite_reports; type: table
+--
+create table cr_favorite_reports (
+    user_id integer not null,
+    rep_id integer not null
+);
+--
+-- name: cr_filehist_log; type: table
+--
+create table cr_filehist_log (
+    schedule_id numeric(11,0) not null,
+    url character varying(4000),
+    notes character varying(3500),
+    run_time timestamp
+);
+--
+-- name: cr_folder; type: table
+--
+create table cr_folder (
+    folder_id integer not null,
+    folder_name character varying(50) not null,
+    descr character varying(500),
+    create_id integer not null,
+    create_date timestamp not null,
+    parent_folder_id integer,
+    public_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_folder_access; type: table
+--
+create table cr_folder_access (
+    folder_access_id numeric(11,0) not null,
+    folder_id numeric(11,0) not null,
+    order_no numeric(11,0) not null,
+    role_id numeric(11,0),
+    user_id numeric(11,0),
+    read_only_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_hist_user_map; type: table
+--
+create table cr_hist_user_map (
+    hist_id int(11) not null,
+    user_id int(11) not null
+);
+--
+-- name: cr_lu_file_type; type: table
+--
+create table cr_lu_file_type (
+    lookup_id numeric(2,0) not null,
+    lookup_descr character varying(255) not null,
+    active_yn character(1) default 'y',
+    error_code numeric(11,0)
+);
+--
+-- name: cr_raptor_action_img; type: table
+--
+create table cr_raptor_action_img (
+    image_id character varying(100) not null,
+    image_loc character varying(400)
+);
+--
+-- name: cr_raptor_pdf_img; type: table
+--
+create table cr_raptor_pdf_img (
+    image_id character varying(100) not null,
+    image_loc character varying(400)
+);
+--
+-- name: cr_remote_schema_info; type: table
+--
+create table cr_remote_schema_info (
+    schema_prefix character varying(5) not null,
+    schema_desc character varying(75) not null,
+    datasource_type character varying(100)
+);
+--
+-- name: cr_report; type: table
+--
+create table cr_report (
+    rep_id numeric(11,0) not null,
+    title character varying(100) not null,
+    descr character varying(255),
+    public_yn character varying(1) default 'n' not null,
+    report_xml text,
+    create_id numeric(11,0),
+    create_date timestamp default now(),
+    maint_id numeric(11,0),
+    maint_date timestamp default now(), 
+    menu_id character varying(500),
+    menu_approved_yn character varying(1) default 'n' not null,
+    owner_id numeric(11,0),
+    folder_id integer default 0,
+    dashboard_type_yn character varying(1) default 'n',
+    dashboard_yn character varying(1) default 'n'
+);
+--
+-- name: cr_report_access; type: table
+--
+create table cr_report_access (
+    rep_id numeric(11,0) not null,
+    order_no numeric(11,0) not null,
+    role_id numeric(11,0),
+    user_id numeric(11,0),
+    read_only_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_report_dwnld_log; type: table
+--
+create table cr_report_dwnld_log (
+    user_id numeric(11,0) not null,
+    rep_id integer not null,
+    file_name character varying(100) not null,
+    dwnld_start_time timestamp default now() not null,
+    record_ready_time timestamp default now(),
+    filter_params character varying(2000)
+);
+--
+-- name: cr_report_email_sent_log; type: table
+--
+create table cr_report_email_sent_log (
+    log_id integer not null,
+    schedule_id numeric(11,0),
+    gen_key character varying(25) not null,
+    rep_id numeric(11,0) not null,
+    user_id numeric(11,0),
+    sent_date timestamp default now(),
+    access_flag character varying(1) default 'y' not null,
+    touch_date timestamp default now()
+);
+--
+-- name: cr_report_file_history; type: table
+--
+create table cr_report_file_history (
+    hist_id int(11) not null,
+    sched_user_id numeric(11,0) not null,
+    schedule_id numeric(11,0) not null,
+    user_id numeric(11,0) not null,
+    rep_id numeric(11,0),
+    run_date timestamp,
+    recurrence character varying(50),
+    file_type_id numeric(2,0),
+    file_name character varying(80),
+    file_blob blob,
+    file_size numeric(11,0),
+    raptor_url character varying(4000),
+    error_yn character(1) default 'n',
+    error_code numeric(11,0),
+    deleted_yn character(1) default 'n',
+    deleted_by numeric(38,0)
+);
+--
+-- name: cr_report_log; type: table
+--
+create table cr_report_log (
+    rep_id numeric(11,0) not null,
+    log_time timestamp not null,
+    user_id numeric(11,0) not null,
+    action character varying(2000) not null,
+    action_value character varying(50),
+    form_fields character varying(4000)
+);
+--
+-- name: cr_report_schedule; type: table
+--
+create table cr_report_schedule (
+    schedule_id numeric(11,0) not null,
+    sched_user_id numeric(11,0) not null,
+    rep_id numeric(11,0) not null,
+    enabled_yn character varying(1) not null,
+    start_date timestamp default now(),
+    end_date timestamp default now(),
+    run_date timestamp default now(),
+    recurrence character varying(50),
+    conditional_yn character varying(1) not null,
+    condition_sql character varying(4000),
+    notify_type integer default 0,
+    max_row integer default 1000,
+    initial_formfields character varying(3500),
+    processed_formfields character varying(3500),
+    formfields character varying(3500),
+    condition_large_sql text,
+    encrypt_yn character(1) default 'n',
+    attachment_yn character(1) default 'y'
+);
+--
+-- name: cr_report_schedule_users; type: table
+--
+create table cr_report_schedule_users (
+    schedule_id numeric(11,0) not null,
+    rep_id numeric(11,0) not null,
+    user_id numeric(11,0) not null,
+    role_id numeric(11,0),
+    order_no numeric(11,0) not null
+);
+--
+-- name: cr_report_template_map; type: table
+--
+create table cr_report_template_map (
+    report_id integer not null,
+    template_file character varying(200)
+);
+--
+-- name: cr_schedule_activity_log; type: table
+--
+create table cr_schedule_activity_log (
+    schedule_id numeric(11,0) not null,
+    url character varying(4000),
+    notes character varying(2000),
+    run_time timestamp
+);
+--
+-- name: cr_table_join; type: table
+--
+create table cr_table_join (
+    src_table_name character varying(30) not null,
+    dest_table_name character varying(30) not null,
+    join_expr character varying(500) not null
+);
+--
+-- name: cr_table_role; type: table
+--
+create table cr_table_role (
+    table_name character varying(30) not null,
+    role_id numeric(11,0) not null
+);
+--
+-- name: cr_table_source; type: table
+--
+create table cr_table_source (
+    table_name character varying(30) not null,
+    display_name character varying(30) not null,
+    pk_fields character varying(200),
+    web_view_action character varying(50),
+    large_data_source_yn character varying(1) default 'n' not null,
+    filter_sql character varying(4000),
+    source_db character varying(50)
+);
+--
+-- name: fn_lu_timezone; type: table
+--
+create table fn_lu_timezone (
+    timezone_id int(11) not null,
+    timezone_name character varying(100) not null,
+    timezone_value character varying(100) not null
+);
+
+create table fn_user (
+    user_id int(11) not null primary key  auto_increment,
+    org_id int(11),
+    manager_id int(11),
+    first_name character varying(50),
+    middle_name character varying(50),
+    last_name character varying(50),
+    phone character varying(25),
+    fax character varying(25),
+    cellular character varying(25),
+    email character varying(50),
+    address_id numeric(11,0),
+    alert_method_cd character varying(10),
+    hrid character varying(20),
+    org_user_id CHARACTER VARYING(60),
+    org_code character varying(30),
+    login_id character varying(60),
+    login_pwd character varying(100),
+    last_login_date timestamp,
+    active_yn character varying(1) default 'y' not null,
+    created_id int(11),
+    created_date timestamp default now(),
+    modified_id int(11),
+    modified_date timestamp default now(),
+    is_internal_yn character(1) default 'n' not null,
+    address_line_1 character varying(100),
+    address_line_2 character varying(100),
+    city character varying(50),
+    state_cd character varying(3),
+    zip_code character varying(11),
+    country_cd character varying(3),
+    location_clli character varying(8),
+    org_manager_userid CHARACTER VARYING(20),
+    company character varying(100),
+    department_name character varying(100),
+    job_title character varying(100),
+    timezone int(11),
+    department character varying(25),
+    business_unit character varying(25),
+    business_unit_name character varying(100),
+    cost_center character varying(25),
+    fin_loc_code character varying(10),
+    silo_status character varying(10),
+    is_system_user character(1) default 'N',
+    language_id int(2) default 1
+);
+
+create table fn_language(
+    language_id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+    language_name VARCHAR(100) NOT NULL,
+    language_alias VARCHAR(100) NOT NULL
+);
+
+create table fn_display_text(
+    id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+    language_id int(11) NOT NULL,
+    text_id int(11) NOT NULL,
+    text_label VARCHAR(100) NOT NULL
+);
+--
+-- name: fn_role; type: table
+--
+create table fn_role (
+    role_id int(11) not null primary key auto_increment,
+    role_name character varying(300) not null,
+    active_yn character varying(1) default 'y' not null,
+    priority numeric(4,0),
+    app_id int(11) default null,
+    app_role_id int(11) default null
+
+);
+--
+-- name: fn_audit_action; type: table
+--
+create table fn_audit_action (
+    audit_action_id integer not null,
+    class_name character varying(500) not null,
+    method_name character varying(50) not null,
+    audit_action_cd character varying(20) not null,
+    audit_action_desc character varying(200),
+    active_yn character varying(1)
+);
+--
+-- name: fn_audit_action_log; type: table
+--
+create table fn_audit_action_log (
+    audit_log_id integer not null primary key  auto_increment,
+    audit_action_cd character varying(200),
+    action_time timestamp,
+    user_id numeric(11,0),
+    class_name character varying(100),
+    method_name character varying(50),
+    success_msg character varying(20),
+    error_msg character varying(500)
+);
+--
+-- name: fn_lu_activity; type: table
+--
+create table fn_lu_activity (
+    activity_cd character varying(50) not null primary key,
+    activity character varying(50) not null
+);
+--
+-- name: fn_audit_log; type: table
+--
+create table fn_audit_log (
+    log_id int(11) not null primary key auto_increment,
+    user_id int(11) not null,
+    activity_cd character varying(50) not null,
+    audit_date timestamp default now() not null,
+    comments character varying(1000),
+    affected_record_id_bk character varying(500),
+    affected_record_id character varying(4000),
+    constraint fk_fn_audit_ref_209_fn_user foreign key (user_id) references fn_user(user_id)
+);
+--
+-- name: fn_broadcast_message; type: table
+--
+create table fn_broadcast_message (
+    message_id int(11) not null primary key auto_increment,
+    message_text character varying(1000) not null,
+    message_location_id numeric(11,0) not null,
+    broadcast_start_date timestamp not null  default now(),
+    broadcast_end_date timestamp not null default now(),
+    active_yn character(1) default 'y' not null,
+    sort_order numeric(4,0) not null,
+    broadcast_site_cd character varying(50)
+);
+--
+-- name: fn_chat_logs; type: table
+--
+create table fn_chat_logs (
+    chat_log_id integer not null,
+    chat_room_id integer,
+    user_id integer,
+    message character varying(1000),
+    message_date_time timestamp
+);
+--
+-- name: fn_chat_room; type: table
+--
+create table fn_chat_room (
+    chat_room_id integer not null,
+    name character varying(50) not null,
+    description character varying(500),
+    owner_id integer,
+    created_date timestamp default now(),
+    updated_date timestamp default now()
+);
+--
+-- name: fn_chat_users; type: table
+--
+create table fn_chat_users (
+    chat_room_id integer,
+    user_id integer,
+    last_activity_date_time timestamp,
+    chat_status character varying(20),
+    id integer not null
+);
+--
+-- name: fn_datasource; type: table
+--
+create table fn_datasource (
+    id integer not null primary key auto_increment,
+    name character varying(50),
+    driver_name character varying(256),
+    server character varying(256),
+    port integer,
+    user_name character varying(256),
+    password character varying(256),
+    url character varying(256),
+    min_pool_size integer,
+    max_pool_size integer,
+    adapter_id integer,
+    ds_type character varying(20)
+);
+--
+-- name: fn_function; type: table
+--
+create table fn_function (
+    function_cd character varying(30) not null primary key,
+    function_name character varying(50) not null
+);
+--
+-- name: fn_lu_alert_method; type: table
+--
+create table fn_lu_alert_method (
+    alert_method_cd character varying(10) not null,
+    alert_method character varying(50) not null
+);
+--
+-- name: fn_lu_broadcast_site; type: table
+--
+create table fn_lu_broadcast_site (
+    broadcast_site_cd character varying(50) not null,
+    broadcast_site_descr character varying(100)
+);
+--
+-- name: fn_lu_menu_set; type: table
+--
+create table fn_lu_menu_set (
+    menu_set_cd character varying(10) not null primary key,
+    menu_set_name character varying(50) not null
+);
+--
+-- name: fn_lu_priority; type: table
+--
+create table fn_lu_priority (
+    priority_id numeric(11,0) not null,
+    priority character varying(50) not null,
+    active_yn character(1) not null,
+    sort_order numeric(5,0)
+);
+--
+-- name: fn_lu_role_type; type: table
+--
+create table fn_lu_role_type (
+    role_type_id numeric(11,0) not null,
+    role_type character varying(50) not null
+);
+--
+-- name: fn_lu_tab_set; type: table
+--
+create table fn_lu_tab_set (
+    tab_set_cd character varying(30) not null,
+    tab_set_name character varying(50) not null
+);
+--
+-- name: fn_menu; type: table
+--
+create table fn_menu (
+    menu_id int(11) not null primary key auto_increment,
+    label character varying(100),
+    parent_id int(11),
+    sort_order numeric(4,0),
+    action character varying(200),
+    function_cd character varying(30),
+    active_yn character varying(1) default 'y' not null,
+    servlet character varying(50),
+    query_string character varying(200),
+    external_url character varying(200),
+    target character varying(25),
+    menu_set_cd character varying(10) default 'app',
+    separator_yn character(1) default 'n',
+    image_src character varying(100),
+    constraint fk_fn_menu_ref_196_fn_menu foreign key (parent_id) references fn_menu(menu_id),
+    constraint fk_fn_menu_menu_set_cd foreign key (menu_set_cd) references fn_lu_menu_set(menu_set_cd)
+);
+
+create index idx_fn_menu_label on fn_menu(label);
+--
+-- name: fn_org; type: table
+--
+create table fn_org (
+    org_id int(11) not null,
+    org_name character varying(50) not null,
+    access_cd character varying(10)
+);
+--
+-- name: fn_restricted_url; type: table
+--
+create table fn_restricted_url (
+    restricted_url character varying(250) not null,
+    function_cd character varying(30) not null
+);
+--
+-- name: fn_role_composite; type: table
+--
+create table fn_role_composite (
+    parent_role_id int(11) not null,
+    child_role_id int(11) not null,
+    constraint fk_fn_role_composite_child foreign key (child_role_id) references fn_role(role_id),
+    constraint fk_fn_role_composite_parent foreign key (parent_role_id) references fn_role(role_id)
+);
+--
+-- name: fn_role_function; type: table
+--
+create table fn_role_function (
+    role_id int(11) not null,
+    function_cd character varying(30) not null,
+    constraint fk_fn_role__ref_198_fn_role foreign key (role_id) references fn_role(role_id)
+);
+--
+-- name: fn_tab; type: table
+--
+create table fn_tab (
+    tab_cd character varying(30) not null,
+    tab_name character varying(50) not null,
+    tab_descr character varying(100),
+    action character varying(100) not null,
+    function_cd character varying(30) not null,
+    active_yn character(1) not null,
+    sort_order numeric(11,0) not null,
+    parent_tab_cd character varying(30),
+    tab_set_cd character varying(30)
+);
+--
+-- name: fn_tab_selected; type: table
+--
+create table fn_tab_selected (
+    selected_tab_cd character varying(30) not null,
+    tab_uri character varying(40) not null
+);
+--
+-- name: fn_user_pseudo_role; type: table
+--
+create table fn_user_pseudo_role (
+    pseudo_role_id int(11) not null,
+    user_id int(11) not null
+);
+--
+-- name: fn_user_role; type: table
+--
+create table fn_user_role (
+    user_id int(10) not null,
+    role_id int(10) not null,
+    priority numeric(4,0),
+    app_id int(11) default 2,
+    constraint fk_fn_user__ref_172_fn_user foreign key (user_id) references fn_user(user_id),
+    constraint fk_fn_user__ref_175_fn_role foreign key (role_id) references fn_role(role_id)
+);
+--
+-- name: schema_info; type: table
+--
+create table schema_info (
+    SCHEMA_ID CHARACTER VARYING(25) not null,
+    SCHEMA_DESC CHARACTER VARYING(75) not null,
+    DATASOURCE_TYPE CHARACTER VARYING(100),
+    CONNECTION_URL VARCHAR(200) not null,
+    USER_NAME VARCHAR(45) not null,
+    PASSWORD VARCHAR(45) null default null,
+    DRIVER_CLASS VARCHAR(100) not null,
+    MIN_POOL_SIZE INT not null,
+    MAX_POOL_SIZE INT not null,
+    IDLE_CONNECTION_TEST_PERIOD INT not null
+
+);
+-- ----------------------------------------------------------
+-- name: fn_app; type: table
+-- ----------------------------------------------------------
+create table fn_app (
+  app_id int(11) primary key not null auto_increment,
+  app_name varchar(100) not null default '?',
+  app_image_url varchar(256) default null,
+  app_description varchar(512) default null,
+  app_notes varchar(4096) default null,
+  app_url varchar(256) default null,
+  app_alternate_url varchar(256) default null,
+  app_rest_endpoint varchar(2000) default null,
+  ml_app_name varchar(50) not null default '?',
+  ml_app_admin_id varchar(7) not null default '?',
+  mots_id int(11) default null,
+  app_password varchar(256) default null,
+  open char(1) default 'N',
+  enabled char(1) default 'Y',
+  thumbnail mediumblob null default null,
+  app_username varchar(50),
+  ueb_key varchar(256) default null,
+  ueb_secret varchar(256) default null,
+  ueb_topic_name varchar(256) default null,
+  app_type int(11) not null default 1,
+  auth_central char(1) not null default 'N',
+  auth_namespace varchar(100) null default null
+);
+
+-- ------------------ functional menu tables -------------------
+--
+-- table structure for table fn_menu_functional
+--
+create table fn_menu_functional (
+  menu_id int(11) not null auto_increment,
+  column_num int(2) not null,
+  text varchar(100) not null,
+  parent_menu_id int(11) default null,
+  url varchar(128) not null default '',
+  active_yn varchar(1) not null default 'y',
+  image_src varchar(100) default null,
+  primary key (menu_id),
+  key fk_fn_menu_func_parent_menu_id_idx (parent_menu_id),
+  constraint fk_fn_menu_func_parent_menu_id foreign key (parent_menu_id) references fn_menu_functional (menu_id) on delete no action on update no action
+);
+--
+-- table structure for table fn_menu_functional_ancestors
+--
+
+create table fn_menu_functional_ancestors (
+  id int(11) not null auto_increment,
+  menu_id int(11) not null,
+  ancestor_menu_id int(11) not null,
+  depth int(2) not null,
+  primary key (id),
+  key fk_fn_menu_func_anc_menu_id_idx (menu_id),
+  key fk_fn_menu_func_anc_anc_menu_id_idx (ancestor_menu_id),
+  constraint fk_fn_menu_func_anc_anc_menu_id foreign key (ancestor_menu_id) references fn_menu_functional (menu_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_anc_menu_id foreign key (menu_id) references fn_menu_functional (menu_id) on delete no action on update no action
+);
+--
+-- table structure for table fn_menu_functional_roles
+--
+create table fn_menu_functional_roles (
+  id int(11) not null auto_increment,
+  menu_id int(11) not null,
+  app_id int(11) not null,
+  role_id int(10) not null,
+  primary key (id),
+  key fk_fn_menu_func_roles_menu_id_idx (menu_id),
+  key fk_fn_menu_func_roles_app_id_idx (app_id),
+  key fk_fn_menu_func_roles_role_id_idx (role_id),
+  constraint fk_fn_menu_func_roles_app_id foreign key (app_id) references fn_app (app_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_roles_menu_id foreign key (menu_id) references fn_menu_functional (menu_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_roles_role_id foreign key (role_id) references fn_role (role_id) on delete no action on update no action
+);
+-- ----------------------------------------------------------
+-- NAME: FN_WORKFLOW; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_workflow (
+  id mediumint(9) not null auto_increment,
+  name varchar(20) not null,
+  description varchar(500) default null,
+  run_link varchar(300) default null,
+  suspend_link varchar(300) default null,
+  modified_link varchar(300) default null,
+  active_yn varchar(300) default null,
+  created varchar(300) default null,
+  created_by int(11) default null,
+  modified varchar(300) default null,
+  modified_by int(11) default null,
+  workflow_key varchar(50) default null,
+  primary key (id),
+  UNIQUE KEY name (name)
+);
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_SCHEDULE_WORKFLOWS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_schedule_workflows (
+  id_schedule_workflows bigint(25) primary key not null auto_increment, 
+  workflow_server_url varchar(45) default null,
+  workflow_key varchar(45) not null,
+  workflow_arguments varchar(45) default null,
+  startDateTimeCron varchar(45) default null,
+  endDateTime TIMESTAMP default NOW(),
+  start_date_time TIMESTAMP default NOW(),
+  recurrence varchar(45) default null
+  );
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_SHARED_CONTEXT; TYPE: TABLE
+-- ----------------------------------------------------------  
+create table fn_shared_context (
+    id int(11) not null auto_increment,
+    create_time timestamp not null,
+    context_id character varying(64) not null,
+    ckey character varying(128) not null,
+	cvalue character varying(1024),
+	primary key (id),
+	UNIQUE KEY session_key (context_id, ckey) );
+
+	
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_JOB_DETAILS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_job_details (
+SCHED_NAME VARCHAR(120) not null,
+JOB_NAME VARCHAR(200) not null,
+JOB_GROUP VARCHAR(200) not null,
+DESCRIPTION VARCHAR(250) null,
+JOB_CLASS_NAME VARCHAR(250) not null,
+IS_DURABLE VARCHAR(1) not null,
+IS_NONCONCURRENT VARCHAR(1) not null,
+IS_UPDATE_DATA VARCHAR(1) not null,
+REQUESTS_RECOVERY VARCHAR(1) not null,
+JOB_DATA BLOB null,
+primary key (SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+JOB_NAME VARCHAR(200) not null,
+JOB_GROUP VARCHAR(200) not null,
+DESCRIPTION VARCHAR(250) null,
+NEXT_FIRE_TIME BIGINT(13) null,
+PREV_FIRE_TIME BIGINT(13) null,
+PRIORITY INTEGER null,
+TRIGGER_STATE VARCHAR(16) not null,
+TRIGGER_TYPE VARCHAR(8) not null,
+START_TIME BIGINT(13) not null,
+END_TIME BIGINT(13) null,
+CALENDAR_NAME VARCHAR(200) null,
+MISFIRE_INSTR SMALLINT(2) null,
+JOB_DATA BLOB null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
+REFERENCES FN_QZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SIMPLE_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_simple_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+REPEAT_COUNT BIGINT(7) not null,
+REPEAT_INTERVAL BIGINT(12) not null,
+TIMES_TRIGGERED BIGINT(10) not null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_CRON_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_cron_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+CRON_EXPRESSION VARCHAR(120) not null,
+TIME_ZONE_ID VARCHAR(80),
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SIMPROP_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_simprop_triggers (          
+    SCHED_NAME VARCHAR(120) not null,
+    TRIGGER_NAME VARCHAR(200) not null,
+    TRIGGER_GROUP VARCHAR(200) not null,
+    STR_PROP_1 VARCHAR(512) null,
+    STR_PROP_2 VARCHAR(512) null,
+    STR_PROP_3 VARCHAR(512) null,
+    INT_PROP_1 INT null,
+    INT_PROP_2 INT null,
+    LONG_PROP_1 BIGINT null,
+    LONG_PROP_2 BIGINT null,
+    DEC_PROP_1 NUMERIC(13,4) null,
+    DEC_PROP_2 NUMERIC(13,4) null,
+    BOOL_PROP_1 VARCHAR(1) null,
+    BOOL_PROP_2 VARCHAR(1) null,
+    primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) 
+    REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_BLOB_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_blob_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+BLOB_DATA BLOB null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_CALENDARS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_calendars (
+SCHED_NAME VARCHAR(120) not null,
+CALENDAR_NAME VARCHAR(200) not null,
+CALENDAR BLOB not null,
+primary key (SCHED_NAME,CALENDAR_NAME)
+);
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_PAUSED_TRIGGER_GRPS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_paused_trigger_grps (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+primary key (SCHED_NAME,TRIGGER_GROUP)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_FIRED_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_fired_triggers (
+SCHED_NAME VARCHAR(120) not null,
+ENTRY_ID VARCHAR(95) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+INSTANCE_NAME VARCHAR(200) not null,
+FIRED_TIME BIGINT(13) not null,
+SCHED_TIME BIGINT(13) not null,
+PRIORITY INTEGER not null,
+STATE VARCHAR(16) not null,
+JOB_NAME VARCHAR(200) null,
+JOB_GROUP VARCHAR(200) null,
+IS_NONCONCURRENT VARCHAR(1) null,
+REQUESTS_RECOVERY VARCHAR(1) null,
+primary key (SCHED_NAME,ENTRY_ID)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SCHEDULER_STATE; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_scheduler_state (
+SCHED_NAME VARCHAR(120) not null,
+INSTANCE_NAME VARCHAR(200) not null,
+LAST_CHECKIN_TIME BIGINT(13) not null,
+CHECKIN_INTERVAL BIGINT(13) not null,
+primary key (SCHED_NAME,INSTANCE_NAME)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_LOCKS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_locks (
+SCHED_NAME VARCHAR(120) not null,
+LOCK_NAME VARCHAR(40) not null,
+primary key (SCHED_NAME,LOCK_NAME)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_MENU_FAVORITES; TYPE: TABLE
+-- ----------------------------------------------------------
+
+create table fn_menu_favorites (
+  user_id int(11) not null,
+  menu_id int(11) not null,
+  primary key (user_id,menu_id)
+);
+
+-- FACELIFT - Table for Events, News and Resources
+
+create table fn_common_widget_data(
+	id int auto_increment, 
+	category varchar(32), 
+	href varchar(512), 
+	title varchar(256), 
+	content varchar(4096), 
+	event_date varchar(10), -- YYYY-MM-DD 
+	sort_order int, 
+	primary key (id)
+);
+
+create table fn_app_contact_us (
+  app_id int(11) not null,
+  contact_name varchar(128) default null,
+  contact_email varchar(128) default null,
+  url varchar(256) default null,
+  active_yn varchar(2) default null,
+  description varchar(1024) default null,
+  primary key (app_id),
+  constraint fk_fn_a_con__ref_202_fn_app foreign key (app_id) references fn_app (app_id)
+);
+
+-- new 1610.2
+create table fn_pers_user_app_sel (
+  id   int(11) not null auto_increment,
+  user_id   int(11) not null,
+  app_id    int(11) not null,
+  status_cd char(1) not null,
+  primary key(id),
+  constraint fk_1_fn_pers_user_app_sel_fn_user foreign key (user_id) references fn_user (user_id),
+  constraint fk_2_fn_pers_user_app_sel_fn_app  foreign key (app_id)  references fn_app (app_id)
+);
+
+-- end new 1610.2
+
+-- new 1702 tables/views
+ -- 1702 Additions for User Notifications
+ -- ----------------------------------------------------------
+ -- NAME: ep_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_notification (
+    notification_ID     int(11) primary key not null auto_increment,
+    is_for_online_users char(1) default 'N',
+    is_for_all_roles    char(1) default 'N',
+    active_YN           char(1) default 'Y',
+    msg_header          varchar(100),
+    msg_description     varchar(2000),
+    msg_source          varchar(50) default 'EP',
+    start_time          timestamp default now(),
+    end_time            timestamp null,
+    priority            int(11),
+    creator_ID          int(11) null default null,
+    created_date        timestamp null default null,
+    notification_hyperlink varchar(512) null default null  -- new column for 1710
+   );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_role_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_role_notification (
+   ID                  int(11) primary key not null auto_increment,
+   notification_ID     int(11),
+   role_ID             int(11),
+   recv_user_id        int(11) null,
+   constraint fk_ep_role_notif_fn_role foreign key (role_ID) references fn_role(role_id),
+   constraint fk_ep_role_notif_fn_notif foreign key (notification_ID) references ep_notification(notification_ID)
+   );
+   
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_user_notification (
+    ID                  int(11) primary key not null auto_increment,
+    User_ID             int(11),
+    notification_ID     int(11),
+    is_viewed           char(1) default 'N',
+    updated_time        timestamp default now(),
+    constraint fk_ep_urole_notif_fn_user foreign key (User_ID) references fn_user(user_id),
+    constraint fk_ep_urole_notif_fn_notif foreign key (notification_ID) references ep_notification(notification_ID)
+   );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_app_sort; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_pers_user_app_sort (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   sort_pref char(1) not null,
+   unique key uk_1_ep_pers_user_app_sort (user_id),
+   constraint fk_ep_pers_user_app_sort_fn_user foreign key (user_id) references fn_user(user_id)
+ );
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_app_man_sort; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_pers_user_app_man_sort (
+   id         int(11) not null primary key auto_increment,
+   user_id    int(11) not null,
+   app_id     int(11) not null,
+   sort_order int(11) not null,
+   unique key uk_1_ep_pers_user_app_man_sort (user_id, app_id),
+   constraint fk_ep_pers_app_man_sort_fn_user foreign key (user_id) references fn_user(user_id),
+   constraint fk_ep_pers_app_man_sort_fn_app foreign key (app_id) references fn_app(app_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_widget_catalog (
+   widget_id int(11) not null auto_increment,
+   wdg_name varchar(100) not null default '?',
+   service_id int(11) default null,
+   wdg_desc varchar(200) default null,
+   wdg_file_loc varchar(256) not null default '?',
+   all_user_flag char(1) not null default 'N',
+   primary key (widget_id)
+ );
+ 
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_role; TYPE: Table
+ -- ----------------------------------------------------------
+ create table ep_widget_catalog_role (
+   widget_id 	int(10) not null,
+   app_id 		int(11) default '1',
+   role_id 		int(10) not null,
+   key fk_ep_widget_catalog_role_fn_widget (widget_id),
+   key fk_ep_widget_catalog_role_ref_fn_role (role_id),
+   key fk_ep_widget_catalog_role_app_id  (app_id),
+   constraint fk_ep_widget_catalog_role_fn_widget foreign key (widget_id) references ep_widget_catalog (widget_id),
+   constraint fk_ep_widget_catalog_role_ref_fn_role foreign key (role_id) references fn_role (role_id),
+   constraint fk_ep_widget_catalog_role_app_id foreign key (app_id) references fn_app (app_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_widget_placement; TYPE: Table
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_pers_user_widget_placement (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   widget_id int(11) not null,
+   x         int(11) not null,
+   y         int(11),
+   height    int(11),
+   width     int(11),
+   unique key uk_1_ep_pers_user_widg_place (user_id, widget_id),
+   constraint fk_ep_pers_user_widg_place_fn_user foreign key (user_id) references fn_user(user_id),
+   constraint fk_ep_pers_user_widg_place_ep_widg foreign key (widget_id) references ep_widget_catalog(widget_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_widget_sel; TYPE: TABLE
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_pers_user_widget_sel (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   widget_id int(11) not null,
+   status_cd char(1) not null,
+   unique key uk_1_ep_pers_user_widg_sel_user_widg (user_id, widget_id),
+   CONSTRAINT fk_1_ep_pers_user_wid_sel_fn_user FOREIGN KEY (user_id) REFERENCES fn_user (user_id),
+   CONSTRAINT fk_2_ep_pers_user_wid_sel_ep_wid FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_files; TYPE: TABLE
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_widget_catalog_files (
+        file_id            	int(11) not null primary key auto_increment,
+        widget_id          	int(11),
+		widget_name 		VARCHAR(100) NOT NULL,
+		framework_js 		LONGBLOB NULL,
+		controller_js 		LONGBLOB NULL,
+		markup_html 		LONGBLOB NULL,
+		widget_css 			LONGBLOB NULL
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: fn_role_v; TYPE: VIEW
+ -- All roles without an APP_ID are Portal only.
+ -- ----------------------------------------------------------
+ create view fn_role_v as
+  select fn_role.role_id as role_id,
+         fn_role.role_name as role_name,
+                fn_role.active_yn as active_yn,
+         fn_role.priority as priority,
+         fn_role.app_id as app_id,
+         fn_role.app_role_id as app_role_id
+ from fn_role where isnull(fn_role.app_id);
+
+-- end new 1702 tables/views
+
+-- new 1707 tables/views
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_roles_request; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+create table ep_user_roles_request (
+    req_id int(11) not null primary key auto_increment,
+    user_id int(11) not null,
+    app_id int(11) not null,
+	created_date timestamp default now(),
+	updated_date timestamp default now(),
+    request_status character varying(50) not null,
+	constraint fk_user_roles_req_fn_user foreign key (user_id) references fn_user(user_id),
+	constraint fk_user_roles_req_fn_app foreign key (app_id) references fn_app(app_id)
+    );
+  
+  
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_roles_request_det; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_user_roles_request_det (
+    id int(11) not null primary key auto_increment,
+    req_id int(11) default null,
+	requested_role_id int(10) not null,
+    request_type character varying(10) not null,
+    constraint fk_user_roles_req_fn_req_id foreign key (req_id) references ep_user_roles_request(req_id),
+    constraint fk_user_roles_req_fn_role_id foreign key (requested_role_id) references fn_role(role_id)
+    );
+	
+ -- ----------------------------------------------------------
+ -- NAME: ep_microservice; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_microservice (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	name VARCHAR(50) NULL DEFAULT NULL,
+	description VARCHAR(50) NULL DEFAULT NULL,
+	appId INT(11) NULL DEFAULT NULL,
+	endpoint_url VARCHAR(200) NULL DEFAULT NULL,
+	security_type VARCHAR(50) NULL DEFAULT NULL,
+	username VARCHAR(50) NULL DEFAULT NULL,
+	password VARCHAR(50) NULL DEFAULT NULL,
+	active CHAR(1) NOT NULL DEFAULT 'Y',
+	PRIMARY KEY (id),
+	CONSTRAINT FK_FN_APP_EP_MICROSERVICE FOREIGN KEY (appId) REFERENCES fn_app (app_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_microservice_parameter; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+CREATE TABLE ep_microservice_parameter (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	service_id INT(11) NULL DEFAULT NULL,
+	para_key VARCHAR(50) NULL DEFAULT NULL,
+	para_value VARCHAR(50) NULL DEFAULT NULL,
+	PRIMARY KEY (id),
+	CONSTRAINT FK_EP_MICROSERIVCE_EP_MICROSERVICE_PARAMETER FOREIGN KEY (service_id) REFERENCES ep_microservice (id)
+);
+
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_preview_files; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+CREATE TABLE ep_widget_preview_files (
+	preview_id INT(11) NOT NULL AUTO_INCREMENT,
+	html_file LONGBLOB NULL,
+	css_file LONGBLOB NULL,
+	javascript_file LONGBLOB NULL,
+	framework_file LONGBLOB NULL,
+	PRIMARY KEY (preview_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_microservice; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_widget_microservice (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	widget_id INT(11) NOT NULL DEFAULT '0',
+	microservice_id INT(11) NOT NULL DEFAULT '0',
+	PRIMARY KEY (id),
+	CONSTRAINT FK_EP_WIDGET_MICROSERVICE_EP_MICROSERVICE FOREIGN KEY (microservice_id) REFERENCES ep_microservice (id),
+	CONSTRAINT FK_EP_WIDGET_MICROSERVICE_EP_WIDGET FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_basic_auth_account; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table ep_basic_auth_account (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	ext_app_name VARCHAR(50) NOT NULL,
+	username VARCHAR(50) NOT NULL,
+	password VARCHAR(50) null default null,
+    active_yn char(1) NOT NULL default 'Y',
+	PRIMARY KEY (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_parameter; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table  ep_widget_catalog_parameter (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	widget_id INT(11) NOT NULL,
+	user_id INT(11) NOT NULL,
+	param_id INT(11) NOT NULL,
+    user_value VARCHAR(50) NULL,
+	PRIMARY KEY (id),
+	CONSTRAINT EP_FN_USER_WIDGET_PARAMETER_FK FOREIGN KEY (user_id) REFERENCES fn_user (user_id),
+	CONSTRAINT EP_WIDGET_CATALOG_WIDGET_PARAMETER_FK FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id),
+	CONSTRAINT EP_PARAMETER_ID_WIDGET_PARAMETER_FK FOREIGN KEY (param_id) REFERENCES ep_microservice_parameter (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_web_analytics_source; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table ep_web_analytics_source(
+	resource_id int(11) NOT NULL auto_increment,
+	app_id int(11) NOT NULL,
+    report_source varchar(500),
+    report_name  varchar(500),
+    PRIMARY KEY (resource_id),
+	FOREIGN KEY (app_id) REFERENCES fn_app(app_id)
+); 
+
+ -- Machine Learning Tables
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_model; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table ep_ml_model(
+  time_stamp timestamp default now(),
+  group_id int(11) NOT NULL,
+  model longblob,
+  PRIMARY KEY (time_stamp,group_id)
+);
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_rec; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table ep_ml_rec(
+  time_stamp timestamp default now(),
+  org_user_id varchar(20) NOT NULL,
+  rec varchar(4000) DEFAULT NULL,
+  PRIMARY KEY (time_stamp,org_user_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_user; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table ep_ml_user(
+  time_stamp timestamp default now(),
+  org_user_id varchar(20) NOT NULL,
+  group_id int(11) NOT NULL,
+  PRIMARY KEY (time_stamp,org_user_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_endpoints; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table  ep_endpoints (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+    url VARCHAR(50) NOT NULL,
+	PRIMARY KEY (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_endpoints_basic_auth_account; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+create table  ep_endpoints_basic_auth_account (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	ep_id INT(11) DEFAULT NULL,
+	account_id INT(11) DEFAULT NULL,
+	PRIMARY KEY (id),
+	CONSTRAINT ep_endpoints_basic_auth_account_account_id_fk FOREIGN KEY (account_id) REFERENCES ep_basic_auth_account (id),
+	CONSTRAINT ep_endpoints_basic_auth_account_ep_id_fk FOREIGN KEY (ep_id) REFERENCES ep_endpoints (id)
+
+);
+
+-- end new 1707 tables/views
+
+-- new 1710 tables/views
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_app_function; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_app_function (
+app_id INT(11) NOT NULL,
+function_cd VARCHAR(250) NOT NULL,
+function_name VARCHAR(500) NOT NULL,
+PRIMARY KEY (function_cd, app_id),
+INDEX fk_ep_app_function_app_id (app_id),
+CONSTRAINT fk_ep_app_function_app_id FOREIGN KEY (app_id) REFERENCES fn_app (app_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_app_role_function; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE `ep_app_role_function` (
+`id` INT(11) NOT NULL AUTO_INCREMENT,
+`app_id` INT(11) NOT NULL,
+`role_id` INT(11) NOT NULL,
+`function_cd` VARCHAR(250) NOT NULL,
+`role_app_id` VARCHAR(20) NULL DEFAULT NULL,
+PRIMARY KEY (`id`),
+UNIQUE INDEX `UNIQUE KEY` (`app_id`, `role_id`, `function_cd`),
+CONSTRAINT `fk_ep_app_role_function_app_id` FOREIGN KEY (`app_id`) REFERENCES `fn_app` (`app_id`),
+CONSTRAINT `fk_ep_app_role_function_ep_app_func` FOREIGN KEY (`app_id`, `function_cd`) REFERENCES `ep_app_function` (`app_id`, `function_cd`),
+CONSTRAINT `fk_ep_app_role_function_role_id` FOREIGN KEY (`role_id`) REFERENCES `fn_role` (`role_id`)
+);
+
+-- end new 1710 tables/views
+
+-- ----------------------------------------------------------
+-- NAME: QUARTZ TYPE: INDEXES
+-- ----------------------------------------------------------
+create index idx_fn_qz_j_req_recovery on fn_qz_job_details(sched_name,requests_recovery);
+create index idx_fn_qz_j_grp on fn_qz_job_details(sched_name,job_group);
+create index idx_fn_qz_t_j on fn_qz_triggers(sched_name,job_name,job_group);
+create index idx_fn_qz_t_jg on fn_qz_triggers(sched_name,job_group);
+create index idx_fn_qz_t_c on fn_qz_triggers(sched_name,calendar_name);
+create index idx_fn_qz_t_g on fn_qz_triggers(sched_name,trigger_group);
+create index idx_fn_qz_t_state on fn_qz_triggers(sched_name,trigger_state);
+create index idx_fn_qz_t_n_state on fn_qz_triggers(sched_name,trigger_name,trigger_group,trigger_state);
+create index idx_fn_qz_t_n_g_state on fn_qz_triggers(sched_name,trigger_group,trigger_state);
+create index idx_fn_qz_t_next_fire_time on fn_qz_triggers(sched_name,next_fire_time);
+create index idx_fn_qz_t_nft_st on fn_qz_triggers(sched_name,trigger_state,next_fire_time);
+create index idx_fn_qz_t_nft_misfire on fn_qz_triggers(sched_name,misfire_instr,next_fire_time);
+create index idx_fn_qz_t_nft_st_misfire on fn_qz_triggers(sched_name,misfire_instr,next_fire_time,trigger_state);
+create index idx_fn_qz_t_nft_st_misfire_grp on fn_qz_triggers(sched_name,misfire_instr,next_fire_time,trigger_group,trigger_state);
+create index idx_fn_qz_ft_trig_inst_name on fn_qz_fired_triggers(sched_name,instance_name);
+create index idx_fn_qz_ft_inst_job_req_rcvry on fn_qz_fired_triggers(sched_name,instance_name,requests_recovery);
+create index idx_fn_qz_ft_j_g on fn_qz_fired_triggers(sched_name,job_name,job_group);
+create index idx_fn_qz_ft_jg on fn_qz_fired_triggers(sched_name,job_group);
+create index idx_fn_qz_ft_t_g on fn_qz_fired_triggers(sched_name,trigger_name,trigger_group);
+create index idx_fn_qz_ft_tg on fn_qz_fired_triggers(sched_name,trigger_group);
+
+
+-- ------------------ create view section
+--
+-- name: v_url_access; type: view
+--
+create view v_url_access as
+ select distinct m.action as url,
+    m.function_cd
+   from fn_menu m
+  where (m.action is not null)
+union
+ select distinct t.action as url,
+    t.function_cd
+   from fn_tab t
+  where (t.action is not null)
+union
+ select r.restricted_url as url,
+    r.function_cd
+   from fn_restricted_url r;
+   
+-- ------------------ alter table add constraint primary key section
+--
+-- name: cr_favorite_reports_user_idrep_id; type: constraint
+--
+alter table cr_favorite_reports 
+    add constraint cr_favorite_reports_user_idrep_id primary key (user_id, rep_id);
+--
+-- name: cr_folder_folder_id; type: constraint
+--
+alter table cr_folder
+    add constraint cr_folder_folder_id primary key (folder_id);
+--
+-- name: cr_folder_access_folder_access_id; type: constraint
+--
+alter table cr_folder_access
+    add constraint cr_folder_access_folder_access_id primary key (folder_access_id);
+--
+-- name: cr_hist_user_map_hist_iduser_id; type: constraint
+--
+alter table cr_hist_user_map
+    add constraint cr_hist_user_map_hist_iduser_id primary key (hist_id, user_id);
+--
+-- name: cr_lu_file_type_lookup_id; type: constraint
+--
+alter table cr_lu_file_type
+    add constraint cr_lu_file_type_lookup_id primary key (lookup_id);
+--
+-- name: cr_raptor_action_img_image_id; type: constraint
+--
+alter table cr_raptor_action_img
+    add constraint cr_raptor_action_img_image_id primary key (image_id);
+--
+-- name: cr_raptor_pdf_img_image_id; type: constraint
+--
+alter table cr_raptor_pdf_img
+    add constraint cr_raptor_pdf_img_image_id primary key (image_id);
+--
+-- name: cr_remote_schema_info_schema_prefix; type: constraint
+--
+alter table cr_remote_schema_info
+    add constraint cr_remote_schema_info_schema_prefix primary key (schema_prefix);
+--
+-- name: cr_report_rep_id; type: constraint
+--
+alter table cr_report
+    add constraint cr_report_rep_id primary key (rep_id);
+--
+-- name: cr_report_access_rep_idorder_no; type: constraint
+--
+alter table cr_report_access
+    add constraint cr_report_access_rep_idorder_no primary key (rep_id, order_no);
+--
+-- name: cr_report_email_sent_log_log_id; type: constraint
+--
+alter table cr_report_email_sent_log
+    add constraint cr_report_email_sent_log_log_id primary key (log_id);
+--
+-- name: cr_report_file_history_hist_id; type: constraint
+--
+alter table cr_report_file_history
+    add constraint cr_report_file_history_hist_id primary key (hist_id);
+--
+-- name: cr_report_schedule_schedule_id; type: constraint
+--
+alter table cr_report_schedule
+    add constraint cr_report_schedule_schedule_id primary key (schedule_id);
+--
+-- name: cr_report_schedule_users_schedule_idrep_iduser_idorder_no; type: constraint
+--
+alter table cr_report_schedule_users
+    add constraint cr_report_schedule_users_schedule_idrep_iduser_idorder_no primary key (schedule_id, rep_id, user_id, order_no);
+--
+-- name: cr_report_template_map_report_id; type: constraint
+--
+alter table cr_report_template_map
+    add constraint cr_report_template_map_report_id primary key (report_id);
+--
+-- name: cr_table_role_table_namerole_id; type: constraint
+--
+alter table cr_table_role
+    add constraint cr_table_role_table_namerole_id primary key (table_name, role_id);
+--
+-- name: cr_table_source_table_name; type: constraint
+--
+alter table cr_table_source
+    add constraint cr_table_source_table_name primary key (table_name);
+--
+-- name: fn_audit_action_audit_action_id; type: constraint
+--
+alter table fn_audit_action
+    add constraint fn_audit_action_audit_action_id primary key (audit_action_id);  
+--
+--
+-- name: fk_fn_audit_ref_205_fn_lu_ac; type: constraint
+--
+alter table fn_audit_log
+	add constraint fk_fn_audit_ref_205_fn_lu_ac foreign key (activity_cd) references fn_lu_activity(activity_cd);
+--
+-- name: fk_fn_role__ref_201_fn_funct; type: constraint
+--    
+alter table fn_role_function
+	add constraint fk_fn_role__ref_201_fn_funct foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fn_chat_logs_chat_log_id; type: constraint
+--
+alter table fn_chat_logs
+    add constraint fn_chat_logs_chat_log_id primary key (chat_log_id);
+--
+-- name: fn_chat_room_chat_room_id; type: constraint
+--
+alter table fn_chat_room
+    add constraint fn_chat_room_chat_room_id primary key (chat_room_id);
+--
+-- name: fn_chat_users_id; type: constraint
+--
+alter table fn_chat_users  
+    add constraint fn_chat_users_id primary key (id);
+--
+-- name: fn_lu_alert_method_alert_method_cd; type: constraint
+--
+alter table fn_lu_alert_method
+    add constraint fn_lu_alert_method_alert_method_cd primary key (alert_method_cd);
+--
+-- name: fn_lu_broadcast_site_broadcast_site_cd; type: constraint
+--
+alter table fn_lu_broadcast_site
+    add constraint fn_lu_broadcast_site_broadcast_site_cd primary key (broadcast_site_cd);
+--
+-- name: fn_lu_priority_priority_id; type: constraint
+--
+alter table fn_lu_priority
+    add constraint fn_lu_priority_priority_id primary key (priority_id);
+--
+-- name: fn_lu_role_type_role_type_id; type: constraint
+--
+alter table fn_lu_role_type
+    add constraint fn_lu_role_type_role_type_id primary key (role_type_id);
+--
+-- name: fn_lu_tab_set_tab_set_cd; type: constraint
+--
+alter table fn_lu_tab_set
+    add constraint fn_lu_tab_set_tab_set_cd primary key (tab_set_cd);
+--
+-- name: fn_lu_timezone_timezone_id; type: constraint
+--
+alter table fn_lu_timezone
+    add constraint fn_lu_timezone_timezone_id primary key (timezone_id);
+--
+-- name: fn_org_org_id; type: constraint
+--
+alter table fn_org
+    add constraint fn_org_org_id primary key (org_id);
+--
+-- name: fn_restricted_url_restricted_urlfunction_cd; type: constraint
+--
+alter table fn_restricted_url
+    add constraint fn_restricted_url_restricted_urlfunction_cd primary key (restricted_url, function_cd);
+--
+-- name: fn_role_composite_parent_role_idchild_role_id; type: constraint
+--
+alter table fn_role_composite
+    add constraint fn_role_composite_parent_role_idchild_role_id primary key (parent_role_id, child_role_id);
+--
+-- name: fn_role_function_role_idfunction_cd; type: constraint
+--
+alter table fn_role_function
+    add constraint fn_role_function_role_idfunction_cd primary key (role_id, function_cd);
+--
+-- name: fn_tab_tab_cd; type: constraint
+--
+alter table fn_tab
+    add constraint fn_tab_tab_cd primary key (tab_cd);
+--
+-- name: fn_tab_selected_selected_tab_cdtab_uri; type: constraint
+--
+alter table fn_tab_selected
+    add constraint fn_tab_selected_selected_tab_cdtab_uri primary key (selected_tab_cd, tab_uri);
+--
+-- name: fn_user_pseudo_role_pseudo_role_iduser_id; type: constraint
+--
+alter table fn_user_pseudo_role
+    add constraint fn_user_pseudo_role_pseudo_role_iduser_id primary key (pseudo_role_id, user_id);
+--
+-- name: fn_user_role_user_idrole_id; type: constraint
+--
+alter table fn_user_role
+    add constraint fn_user_role_user_idrole_id primary key (user_id, role_id, app_id);
+-- ------------------ create index section
+--
+-- name: cr_report_create_idpublic_yntitle; type: index
+--
+create index cr_report_create_idpublic_yntitle using btree on cr_report (create_id, public_yn, title);
+--
+-- name: cr_table_join_dest_table_name; type: index
+--
+create index cr_table_join_dest_table_name using btree on cr_table_join (dest_table_name);
+--
+-- name: cr_table_join_src_table_name; type: index
+--
+create index cr_table_join_src_table_name using btree on cr_table_join (src_table_name);
+--
+-- name: fn_audit_log_activity_cd; type: index
+--
+create index fn_audit_log_activity_cd using btree on fn_audit_log (activity_cd);
+--
+-- name: fn_audit_log_user_id; type: index
+--
+create index fn_audit_log_user_id using btree on fn_audit_log (user_id);
+--
+-- name: fn_org_access_cd; type: index
+--
+create index fn_org_access_cd using btree on fn_org (access_cd);
+--
+-- name: fn_role_function_function_cd; type: index
+--
+create index fn_role_function_function_cd using btree on fn_role_function (function_cd);
+--
+-- name: fn_role_function_role_id; type: index
+--
+create index fn_role_function_role_id using btree on fn_role_function (role_id);
+--
+-- name: fn_user_address_id; type: index
+--
+create index fn_user_address_id using btree on fn_user (address_id); 
+--
+-- name: fn_user_alert_method_cd; type: index
+--
+create index fn_user_alert_method_cd using btree on fn_user (alert_method_cd); 
+--
+-- name: fn_user_hrid; type: index
+--
+create unique index fn_user_hrid using btree on fn_user (hrid); 
+--
+-- name: fn_user_login_id; type: index
+--
+create unique index fn_user_login_id using btree on fn_user (login_id); 
+--
+-- name: fn_user_org_id; type: index
+--
+create index fn_user_org_id using btree on fn_user (org_id); 
+--
+-- name: fn_user_role_role_id; type: index
+--
+create index fn_user_role_role_id using btree on fn_user_role (role_id);
+--
+-- name: fn_user_role_user_id; type: index
+--
+create index fn_user_role_user_id using btree on fn_user_role (user_id);
+--
+-- name: fk_fn_user__ref_178_fn_app_idx; type: index
+--
+create index fk_fn_user__ref_178_fn_app_idx on fn_user_role (app_id);
+ --
+ -- name: fn_role_name_app_id_idx; type: index
+ --
+ create unique index fn_role_name_app_id_idx using btree on fn_role (role_name,app_id);
+ 
+-- new for 1707
+ 
+create index ep_notif_recv_user_id_idx using btree on ep_role_notification (recv_user_id);
+  
+-- end new for 1707
+
+-- ------------------ alter table add constraint foreign key section
+--
+-- name: fk_fn_user__ref_178_fn_app; type: fk constraint
+--
+alter table fn_user_role
+	add constraint fk_fn_user__ref_178_fn_app foreign key (app_id) references fn_app(app_id);
+--
+-- name: fk_cr_repor_ref_14707_cr_repor; type: fk constraint
+--
+alter table cr_report_schedule
+    add constraint fk_cr_repor_ref_14707_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_repor_ref_14716_cr_repor; type: fk constraint
+--
+alter table cr_report_schedule_users
+    add constraint fk_cr_repor_ref_14716_cr_repor foreign key (schedule_id) references cr_report_schedule(schedule_id);
+--
+-- name: fk_cr_repor_ref_17645_cr_repor; type: fk constraint
+--
+alter table cr_report_log
+    add constraint fk_cr_repor_ref_17645_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_repor_ref_8550_cr_repor; type: fk constraint
+--
+alter table cr_report_access
+    add constraint fk_cr_repor_ref_8550_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_report_rep_id; type: fk constraint
+--
+alter table cr_report_email_sent_log
+    add constraint fk_cr_report_rep_id foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_table_ref_311_cr_tab; type: fk constraint
+--
+alter table cr_table_join
+    add constraint fk_cr_table_ref_311_cr_tab foreign key (src_table_name) references cr_table_source(table_name);
+--
+-- name: fk_cr_table_ref_315_cr_tab; type: fk constraint
+--
+alter table cr_table_join
+    add constraint fk_cr_table_ref_315_cr_tab foreign key (dest_table_name) references cr_table_source(table_name);
+--
+-- name: fk_cr_table_ref_32384_cr_table; type: fk constraint
+--
+alter table cr_table_role
+    add constraint fk_cr_table_ref_32384_cr_table foreign key (table_name) references cr_table_source(table_name);
+--
+-- name: fk_fn_tab_function_cd; type: fk constraint
+--
+alter table fn_tab
+    add constraint fk_fn_tab_function_cd foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fk_fn_tab_selected_tab_cd; type: fk constraint
+--
+alter table fn_tab_selected
+    add constraint fk_fn_tab_selected_tab_cd foreign key (selected_tab_cd) references fn_tab(tab_cd);
+--
+-- name: fk_fn_tab_set_cd; type: fk constraint
+--
+alter table fn_tab
+    add constraint fk_fn_tab_set_cd foreign key (tab_set_cd) references fn_lu_tab_set(tab_set_cd);
+--
+-- name: fk_fn_user_ref_110_fn_org; type: fk constraint
+-- 
+alter table fn_user
+    add constraint fk_fn_user_ref_110_fn_org foreign key (org_id) references fn_org(org_id); 
+--
+-- name: fk_fn_user_ref_123_fn_lu_al; type: fk constraint
+--
+alter table fn_user
+    add constraint fk_fn_user_ref_123_fn_lu_al foreign key (alert_method_cd) references fn_lu_alert_method(alert_method_cd); 
+--
+-- name: fk_fn_user_ref_197_fn_user; type: fk constraint
+--
+ alter table fn_user
+    add constraint fk_fn_user_ref_197_fn_user foreign key (manager_id) references fn_user(user_id); 
+--
+-- name: fk_fn_user_ref_198_fn_user; type: fk constraint
+--
+alter table fn_user  
+    add constraint fk_fn_user_ref_198_fn_user foreign key (created_id) references fn_user(user_id); 
+--
+-- name: fk_fn_user_ref_199_fn_user; type: fk constraint
+--
+alter table fn_user  
+    add constraint fk_fn_user_ref_199_fn_user foreign key (modified_id) references fn_user(user_id); 
+--
+-- name: fk_parent_key_cr_folder; type: fk constraint
+--
+alter table cr_folder
+    add constraint fk_parent_key_cr_folder foreign key (parent_folder_id) references cr_folder(folder_id);
+--
+-- name: fk_pseudo_role_pseudo_role_id; type: fk constraint
+--
+alter table fn_user_pseudo_role 
+    add constraint fk_pseudo_role_pseudo_role_id foreign key (pseudo_role_id) references fn_role(role_id);
+--
+-- name: fk_pseudo_role_user_id; type: fk constraint
+--
+alter table fn_user_pseudo_role 
+    add constraint fk_pseudo_role_user_id foreign key (user_id) references fn_user(user_id);
+--
+-- name: fk_restricted_url_function_cd; type: fk constraint
+--
+alter table fn_restricted_url
+    add constraint fk_restricted_url_function_cd foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fk_timezone; type: fk constraint
+--
+alter table fn_user
+    add constraint fk_timezone foreign key (timezone) references fn_lu_timezone(timezone_id); 
+--
+-- name: sys_c0014614; type: fk constraint
+--
+alter table cr_report_file_history
+    add constraint sys_c0014614 foreign key (file_type_id) references cr_lu_file_type(lookup_id);
+--
+-- name: sys_c0014615; type: fk constraint
+--
+alter table cr_report_file_history
+    add constraint sys_c0014615 foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: sys_c0014616; type: fk constraint
+--
+alter table cr_hist_user_map  
+    add constraint sys_c0014616 foreign key (hist_id) references cr_report_file_history(hist_id);
+--
+-- name: sys_c0014617; type: fk constraint
+--
+alter table cr_hist_user_map  
+    add constraint sys_c0014617 foreign key (user_id) references fn_user(user_id);
+--
+-- name: sys_c0014618; type: fk constraint
+--
+alter table fn_menu_favorites
+add constraint sys_c0014618 foreign key (user_id) references fn_user(user_id);  
+    
+--
+-- name: sys_c0014619; type: fk constraint
+--
+alter table fn_menu_favorites
+add constraint sys_c0014619 foreign key (menu_id) references fn_menu_functional(menu_id);
+
+commit;
\ No newline at end of file
diff --git a/ecomp-portal-DB-common/PortalDDLMySql_2_6_Common.sql b/ecomp-portal-DB-common/PortalDDLMySql_2_6_Common.sql
new file mode 100644
index 0000000..1bf10c6
--- /dev/null
+++ b/ecomp-portal-DB-common/PortalDDLMySql_2_6_Common.sql
@@ -0,0 +1,1779 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This is the 2.1.0 version of Portal database called portal
+
+-- note to : database admin,  set the mysql system variable called lower_case_table_names
+--		it can be set 3 different ways: 
+--			command-line options (cmd-line), 
+--			options valid in configuration files (option file), or 
+--			server system variables (system var). 
+
+-- it needs to be set to 1, then table names are stored in lowercase on disk and comparisons are not case sensitive. 
+-- -----------------------------------------------------------------------------------------------------------------
+set foreign_key_checks=1; 
+
+SET GLOBAL character_set_client     = utf8;
+SET GLOBAL character_set_connection = utf8;
+SET GLOBAL character_set_database   = utf8;
+SET GLOBAL character_set_results    = utf8;
+SET GLOBAL character_set_server     = utf8;
+
+create database portal;
+
+use portal;
+
+-- ------------------ create table section
+--
+-- name: cr_favorite_reports; type: table
+--
+create table cr_favorite_reports (
+    user_id integer not null,
+    rep_id integer not null
+);
+--
+-- name: cr_filehist_log; type: table
+--
+create table cr_filehist_log (
+    schedule_id numeric(11,0) not null,
+    url character varying(4000),
+    notes character varying(3500),
+    run_time timestamp
+);
+--
+-- name: cr_folder; type: table
+--
+create table cr_folder (
+    folder_id integer not null,
+    folder_name character varying(50) not null,
+    descr character varying(500),
+    create_id integer not null,
+    create_date timestamp not null,
+    parent_folder_id integer,
+    public_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_folder_access; type: table
+--
+create table cr_folder_access (
+    folder_access_id numeric(11,0) not null,
+    folder_id numeric(11,0) not null,
+    order_no numeric(11,0) not null,
+    role_id numeric(11,0),
+    user_id numeric(11,0),
+    read_only_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_hist_user_map; type: table
+--
+create table cr_hist_user_map (
+    hist_id int(11) not null,
+    user_id int(11) not null
+);
+--
+-- name: cr_lu_file_type; type: table
+--
+create table cr_lu_file_type (
+    lookup_id numeric(2,0) not null,
+    lookup_descr character varying(255) not null,
+    active_yn character(1) default 'y',
+    error_code numeric(11,0)
+);
+--
+-- name: cr_raptor_action_img; type: table
+--
+create table cr_raptor_action_img (
+    image_id character varying(100) not null,
+    image_loc character varying(400)
+);
+--
+-- name: cr_raptor_pdf_img; type: table
+--
+create table cr_raptor_pdf_img (
+    image_id character varying(100) not null,
+    image_loc character varying(400)
+);
+--
+-- name: cr_remote_schema_info; type: table
+--
+create table cr_remote_schema_info (
+    schema_prefix character varying(5) not null,
+    schema_desc character varying(75) not null,
+    datasource_type character varying(100)
+);
+--
+-- name: cr_report; type: table
+--
+create table cr_report (
+    rep_id numeric(11,0) not null,
+    title character varying(100) not null,
+    descr character varying(255),
+    public_yn character varying(1) default 'n' not null,
+    report_xml text,
+    create_id numeric(11,0),
+    create_date timestamp default now(),
+    maint_id numeric(11,0),
+    maint_date timestamp default now(), 
+    menu_id character varying(500),
+    menu_approved_yn character varying(1) default 'n' not null,
+    owner_id numeric(11,0),
+    folder_id integer default 0,
+    dashboard_type_yn character varying(1) default 'n',
+    dashboard_yn character varying(1) default 'n'
+);
+--
+-- name: cr_report_access; type: table
+--
+create table cr_report_access (
+    rep_id numeric(11,0) not null,
+    order_no numeric(11,0) not null,
+    role_id numeric(11,0),
+    user_id numeric(11,0),
+    read_only_yn character varying(1) default 'n' not null
+);
+--
+-- name: cr_report_dwnld_log; type: table
+--
+create table cr_report_dwnld_log (
+    user_id numeric(11,0) not null,
+    rep_id integer not null,
+    file_name character varying(100) not null,
+    dwnld_start_time timestamp default now() not null,
+    record_ready_time timestamp default now(),
+    filter_params character varying(2000)
+);
+--
+-- name: cr_report_email_sent_log; type: table
+--
+create table cr_report_email_sent_log (
+    log_id integer not null,
+    schedule_id numeric(11,0),
+    gen_key character varying(25) not null,
+    rep_id numeric(11,0) not null,
+    user_id numeric(11,0),
+    sent_date timestamp default now(),
+    access_flag character varying(1) default 'y' not null,
+    touch_date timestamp default now()
+);
+--
+-- name: cr_report_file_history; type: table
+--
+create table cr_report_file_history (
+    hist_id int(11) not null,
+    sched_user_id numeric(11,0) not null,
+    schedule_id numeric(11,0) not null,
+    user_id numeric(11,0) not null,
+    rep_id numeric(11,0),
+    run_date timestamp,
+    recurrence character varying(50),
+    file_type_id numeric(2,0),
+    file_name character varying(80),
+    file_blob blob,
+    file_size numeric(11,0),
+    raptor_url character varying(4000),
+    error_yn character(1) default 'n',
+    error_code numeric(11,0),
+    deleted_yn character(1) default 'n',
+    deleted_by numeric(38,0)
+);
+--
+-- name: cr_report_log; type: table
+--
+create table cr_report_log (
+    rep_id numeric(11,0) not null,
+    log_time timestamp not null,
+    user_id numeric(11,0) not null,
+    action character varying(2000) not null,
+    action_value character varying(50),
+    form_fields character varying(4000)
+);
+--
+-- name: cr_report_schedule; type: table
+--
+create table cr_report_schedule (
+    schedule_id numeric(11,0) not null,
+    sched_user_id numeric(11,0) not null,
+    rep_id numeric(11,0) not null,
+    enabled_yn character varying(1) not null,
+    start_date timestamp default now(),
+    end_date timestamp default now(),
+    run_date timestamp default now(),
+    recurrence character varying(50),
+    conditional_yn character varying(1) not null,
+    condition_sql character varying(4000),
+    notify_type integer default 0,
+    max_row integer default 1000,
+    initial_formfields character varying(3500),
+    processed_formfields character varying(3500),
+    formfields character varying(3500),
+    condition_large_sql text,
+    encrypt_yn character(1) default 'n',
+    attachment_yn character(1) default 'y'
+);
+--
+-- name: cr_report_schedule_users; type: table
+--
+create table cr_report_schedule_users (
+    schedule_id numeric(11,0) not null,
+    rep_id numeric(11,0) not null,
+    user_id numeric(11,0) not null,
+    role_id numeric(11,0),
+    order_no numeric(11,0) not null
+);
+--
+-- name: cr_report_template_map; type: table
+--
+create table cr_report_template_map (
+    report_id integer not null,
+    template_file character varying(200)
+);
+--
+-- name: cr_schedule_activity_log; type: table
+--
+create table cr_schedule_activity_log (
+    schedule_id numeric(11,0) not null,
+    url character varying(4000),
+    notes character varying(2000),
+    run_time timestamp
+);
+--
+-- name: cr_table_join; type: table
+--
+create table cr_table_join (
+    src_table_name character varying(30) not null,
+    dest_table_name character varying(30) not null,
+    join_expr character varying(500) not null
+);
+--
+-- name: cr_table_role; type: table
+--
+create table cr_table_role (
+    table_name character varying(30) not null,
+    role_id numeric(11,0) not null
+);
+--
+-- name: cr_table_source; type: table
+--
+create table cr_table_source (
+    table_name character varying(30) not null,
+    display_name character varying(30) not null,
+    pk_fields character varying(200),
+    web_view_action character varying(50),
+    large_data_source_yn character varying(1) default 'n' not null,
+    filter_sql character varying(4000),
+    source_db character varying(50)
+);
+--
+-- name: fn_lu_timezone; type: table
+--
+create table fn_lu_timezone (
+    timezone_id int(11) not null,
+    timezone_name character varying(100) not null,
+    timezone_value character varying(100) not null
+);
+
+create table fn_user (
+    user_id int(11) not null primary key  auto_increment,
+    org_id int(11),
+    manager_id int(11),
+    first_name character varying(50),
+    middle_name character varying(50),
+    last_name character varying(50),
+    phone character varying(25),
+    fax character varying(25),
+    cellular character varying(25),
+    email character varying(50),
+    address_id numeric(11,0),
+    alert_method_cd character varying(10),
+    hrid character varying(20),
+    org_user_id CHARACTER VARYING(60),
+    org_code character varying(30),
+    login_id character varying(60),
+    login_pwd character varying(100),
+    last_login_date timestamp,
+    active_yn character varying(1) default 'y' not null,
+    created_id int(11),
+    created_date timestamp default now(),
+    modified_id int(11),
+    modified_date timestamp default now(),
+    is_internal_yn character(1) default 'n' not null,
+    address_line_1 character varying(100),
+    address_line_2 character varying(100),
+    city character varying(50),
+    state_cd character varying(3),
+    zip_code character varying(11),
+    country_cd character varying(3),
+    location_clli character varying(8),
+    org_manager_userid CHARACTER VARYING(20),
+    company character varying(100),
+    department_name character varying(100),
+    job_title character varying(100),
+    timezone int(11),
+    department character varying(25),
+    business_unit character varying(25),
+    business_unit_name character varying(100),
+    cost_center character varying(25),
+    fin_loc_code character varying(10),
+    silo_status character varying(10),
+    is_system_user character(1) default 'N',
+    language_id int(2) default 1
+);
+
+create table fn_language(
+    language_id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+    language_name VARCHAR(100) NOT NULL,
+    language_alias VARCHAR(100) NOT NULL
+);
+
+create table fn_display_text(
+    id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
+    language_id int(11) NOT NULL,
+    text_id int(11) NOT NULL,
+    text_label VARCHAR(100) NOT NULL
+);
+--
+-- name: fn_role; type: table
+--
+create table fn_role (
+    role_id int(11) not null primary key auto_increment,
+    role_name character varying(300) not null,
+    active_yn character varying(1) default 'y' not null,
+    priority numeric(4,0),
+    app_id int(11) default null,
+    app_role_id int(11) default null
+
+);
+--
+-- name: fn_audit_action; type: table
+--
+create table fn_audit_action (
+    audit_action_id integer not null,
+    class_name character varying(500) not null,
+    method_name character varying(50) not null,
+    audit_action_cd character varying(20) not null,
+    audit_action_desc character varying(200),
+    active_yn character varying(1)
+);
+--
+-- name: fn_audit_action_log; type: table
+--
+create table fn_audit_action_log (
+    audit_log_id integer not null primary key  auto_increment,
+    audit_action_cd character varying(200),
+    action_time timestamp,
+    user_id numeric(11,0),
+    class_name character varying(100),
+    method_name character varying(50),
+    success_msg character varying(20),
+    error_msg character varying(500)
+);
+--
+-- name: fn_lu_activity; type: table
+--
+create table fn_lu_activity (
+    activity_cd character varying(50) not null primary key,
+    activity character varying(50) not null
+);
+--
+-- name: fn_audit_log; type: table
+--
+create table fn_audit_log (
+    log_id int(11) not null primary key auto_increment,
+    user_id int(11) not null,
+    activity_cd character varying(50) not null,
+    audit_date timestamp default now() not null,
+    comments character varying(1000),
+    affected_record_id_bk character varying(500),
+    affected_record_id character varying(4000),
+    constraint fk_fn_audit_ref_209_fn_user foreign key (user_id) references fn_user(user_id)
+);
+--
+-- name: fn_broadcast_message; type: table
+--
+create table fn_broadcast_message (
+    message_id int(11) not null primary key auto_increment,
+    message_text character varying(1000) not null,
+    message_location_id numeric(11,0) not null,
+    broadcast_start_date timestamp not null  default now(),
+    broadcast_end_date timestamp not null default now(),
+    active_yn character(1) default 'y' not null,
+    sort_order numeric(4,0) not null,
+    broadcast_site_cd character varying(50)
+);
+--
+-- name: fn_chat_logs; type: table
+--
+create table fn_chat_logs (
+    chat_log_id integer not null,
+    chat_room_id integer,
+    user_id integer,
+    message character varying(1000),
+    message_date_time timestamp
+);
+--
+-- name: fn_chat_room; type: table
+--
+create table fn_chat_room (
+    chat_room_id integer not null,
+    name character varying(50) not null,
+    description character varying(500),
+    owner_id integer,
+    created_date timestamp default now(),
+    updated_date timestamp default now()
+);
+--
+-- name: fn_chat_users; type: table
+--
+create table fn_chat_users (
+    chat_room_id integer,
+    user_id integer,
+    last_activity_date_time timestamp,
+    chat_status character varying(20),
+    id integer not null
+);
+--
+-- name: fn_datasource; type: table
+--
+create table fn_datasource (
+    id integer not null primary key auto_increment,
+    name character varying(50),
+    driver_name character varying(256),
+    server character varying(256),
+    port integer,
+    user_name character varying(256),
+    password character varying(256),
+    url character varying(256),
+    min_pool_size integer,
+    max_pool_size integer,
+    adapter_id integer,
+    ds_type character varying(20)
+);
+--
+-- name: fn_function; type: table
+--
+create table fn_function (
+    function_cd character varying(30) not null primary key,
+    function_name character varying(50) not null
+);
+--
+-- name: fn_lu_alert_method; type: table
+--
+create table fn_lu_alert_method (
+    alert_method_cd character varying(10) not null,
+    alert_method character varying(50) not null
+);
+--
+-- name: fn_lu_broadcast_site; type: table
+--
+create table fn_lu_broadcast_site (
+    broadcast_site_cd character varying(50) not null,
+    broadcast_site_descr character varying(100)
+);
+--
+-- name: fn_lu_menu_set; type: table
+--
+create table fn_lu_menu_set (
+    menu_set_cd character varying(10) not null primary key,
+    menu_set_name character varying(50) not null
+);
+--
+-- name: fn_lu_priority; type: table
+--
+create table fn_lu_priority (
+    priority_id numeric(11,0) not null,
+    priority character varying(50) not null,
+    active_yn character(1) not null,
+    sort_order numeric(5,0)
+);
+--
+-- name: fn_lu_role_type; type: table
+--
+create table fn_lu_role_type (
+    role_type_id numeric(11,0) not null,
+    role_type character varying(50) not null
+);
+--
+-- name: fn_lu_tab_set; type: table
+--
+create table fn_lu_tab_set (
+    tab_set_cd character varying(30) not null,
+    tab_set_name character varying(50) not null
+);
+--
+-- name: fn_menu; type: table
+--
+create table fn_menu (
+    menu_id int(11) not null primary key auto_increment,
+    label character varying(100),
+    parent_id int(11),
+    sort_order numeric(4,0),
+    action character varying(200),
+    function_cd character varying(30),
+    active_yn character varying(1) default 'y' not null,
+    servlet character varying(50),
+    query_string character varying(200),
+    external_url character varying(200),
+    target character varying(25),
+    menu_set_cd character varying(10) default 'app',
+    separator_yn character(1) default 'n',
+    image_src character varying(100),
+    constraint fk_fn_menu_ref_196_fn_menu foreign key (parent_id) references fn_menu(menu_id),
+    constraint fk_fn_menu_menu_set_cd foreign key (menu_set_cd) references fn_lu_menu_set(menu_set_cd)
+);
+
+create index idx_fn_menu_label on fn_menu(label);
+--
+-- name: fn_org; type: table
+--
+create table fn_org (
+    org_id int(11) not null,
+    org_name character varying(50) not null,
+    access_cd character varying(10)
+);
+--
+-- name: fn_restricted_url; type: table
+--
+create table fn_restricted_url (
+    restricted_url character varying(250) not null,
+    function_cd character varying(30) not null
+);
+--
+-- name: fn_role_composite; type: table
+--
+create table fn_role_composite (
+    parent_role_id int(11) not null,
+    child_role_id int(11) not null,
+    constraint fk_fn_role_composite_child foreign key (child_role_id) references fn_role(role_id),
+    constraint fk_fn_role_composite_parent foreign key (parent_role_id) references fn_role(role_id)
+);
+--
+-- name: fn_role_function; type: table
+--
+create table fn_role_function (
+    role_id int(11) not null,
+    function_cd character varying(30) not null,
+    constraint fk_fn_role__ref_198_fn_role foreign key (role_id) references fn_role(role_id)
+);
+--
+-- name: fn_tab; type: table
+--
+create table fn_tab (
+    tab_cd character varying(30) not null,
+    tab_name character varying(50) not null,
+    tab_descr character varying(100),
+    action character varying(100) not null,
+    function_cd character varying(30) not null,
+    active_yn character(1) not null,
+    sort_order numeric(11,0) not null,
+    parent_tab_cd character varying(30),
+    tab_set_cd character varying(30)
+);
+--
+-- name: fn_tab_selected; type: table
+--
+create table fn_tab_selected (
+    selected_tab_cd character varying(30) not null,
+    tab_uri character varying(40) not null
+);
+--
+-- name: fn_user_pseudo_role; type: table
+--
+create table fn_user_pseudo_role (
+    pseudo_role_id int(11) not null,
+    user_id int(11) not null
+);
+--
+-- name: fn_user_role; type: table
+--
+create table fn_user_role (
+    user_id int(10) not null,
+    role_id int(10) not null,
+    priority numeric(4,0),
+    app_id int(11) default 2,
+    constraint fk_fn_user__ref_172_fn_user foreign key (user_id) references fn_user(user_id),
+    constraint fk_fn_user__ref_175_fn_role foreign key (role_id) references fn_role(role_id)
+);
+--
+-- name: schema_info; type: table
+--
+create table schema_info (
+    SCHEMA_ID CHARACTER VARYING(25) not null,
+    SCHEMA_DESC CHARACTER VARYING(75) not null,
+    DATASOURCE_TYPE CHARACTER VARYING(100),
+    CONNECTION_URL VARCHAR(200) not null,
+    USER_NAME VARCHAR(45) not null,
+    PASSWORD VARCHAR(45) null default null,
+    DRIVER_CLASS VARCHAR(100) not null,
+    MIN_POOL_SIZE INT not null,
+    MAX_POOL_SIZE INT not null,
+    IDLE_CONNECTION_TEST_PERIOD INT not null
+
+);
+-- ----------------------------------------------------------
+-- name: fn_app; type: table
+-- ----------------------------------------------------------
+create table fn_app (
+  app_id int(11) primary key not null auto_increment,
+  app_name varchar(100) not null default '?',
+  app_image_url varchar(256) default null,
+  app_description varchar(512) default null,
+  app_notes varchar(4096) default null,
+  app_url varchar(256) default null,
+  app_alternate_url varchar(256) default null,
+  app_rest_endpoint varchar(2000) default null,
+  ml_app_name varchar(50) not null default '?',
+  ml_app_admin_id varchar(7) not null default '?',
+  mots_id int(11) default null,
+  app_password varchar(256) default null,
+  open char(1) default 'N',
+  enabled char(1) default 'Y',
+  thumbnail mediumblob null default null,
+  app_username varchar(50),
+  ueb_key varchar(256) default null,
+  ueb_secret varchar(256) default null,
+  ueb_topic_name varchar(256) default null,
+  app_type int(11) not null default 1,
+  auth_central char(1) not null default 'N',
+  auth_namespace varchar(100) null default null
+);
+
+-- ------------------ functional menu tables -------------------
+--
+-- table structure for table fn_menu_functional
+--
+create table fn_menu_functional (
+  menu_id int(11) not null auto_increment,
+  column_num int(2) not null,
+  text varchar(100) not null,
+  parent_menu_id int(11) default null,
+  url varchar(128) not null default '',
+  active_yn varchar(1) not null default 'y',
+  image_src varchar(100) default null,
+  primary key (menu_id),
+  key fk_fn_menu_func_parent_menu_id_idx (parent_menu_id),
+  constraint fk_fn_menu_func_parent_menu_id foreign key (parent_menu_id) references fn_menu_functional (menu_id) on delete no action on update no action
+);
+--
+-- table structure for table fn_menu_functional_ancestors
+--
+
+create table fn_menu_functional_ancestors (
+  id int(11) not null auto_increment,
+  menu_id int(11) not null,
+  ancestor_menu_id int(11) not null,
+  depth int(2) not null,
+  primary key (id),
+  key fk_fn_menu_func_anc_menu_id_idx (menu_id),
+  key fk_fn_menu_func_anc_anc_menu_id_idx (ancestor_menu_id),
+  constraint fk_fn_menu_func_anc_anc_menu_id foreign key (ancestor_menu_id) references fn_menu_functional (menu_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_anc_menu_id foreign key (menu_id) references fn_menu_functional (menu_id) on delete no action on update no action
+);
+--
+-- table structure for table fn_menu_functional_roles
+--
+create table fn_menu_functional_roles (
+  id int(11) not null auto_increment,
+  menu_id int(11) not null,
+  app_id int(11) not null,
+  role_id int(10) not null,
+  primary key (id),
+  key fk_fn_menu_func_roles_menu_id_idx (menu_id),
+  key fk_fn_menu_func_roles_app_id_idx (app_id),
+  key fk_fn_menu_func_roles_role_id_idx (role_id),
+  constraint fk_fn_menu_func_roles_app_id foreign key (app_id) references fn_app (app_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_roles_menu_id foreign key (menu_id) references fn_menu_functional (menu_id) on delete no action on update no action,
+  constraint fk_fn_menu_func_roles_role_id foreign key (role_id) references fn_role (role_id) on delete no action on update no action
+);
+-- ----------------------------------------------------------
+-- NAME: FN_WORKFLOW; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_workflow (
+  id mediumint(9) not null auto_increment,
+  name varchar(20) not null,
+  description varchar(500) default null,
+  run_link varchar(300) default null,
+  suspend_link varchar(300) default null,
+  modified_link varchar(300) default null,
+  active_yn varchar(300) default null,
+  created varchar(300) default null,
+  created_by int(11) default null,
+  modified varchar(300) default null,
+  modified_by int(11) default null,
+  workflow_key varchar(50) default null,
+  primary key (id),
+  UNIQUE KEY name (name)
+);
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_SCHEDULE_WORKFLOWS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_schedule_workflows (
+  id_schedule_workflows bigint(25) primary key not null auto_increment, 
+  workflow_server_url varchar(45) default null,
+  workflow_key varchar(45) not null,
+  workflow_arguments varchar(45) default null,
+  startDateTimeCron varchar(45) default null,
+  endDateTime TIMESTAMP default NOW(),
+  start_date_time TIMESTAMP default NOW(),
+  recurrence varchar(45) default null
+  );
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_SHARED_CONTEXT; TYPE: TABLE
+-- ----------------------------------------------------------  
+create table fn_shared_context (
+    id int(11) not null auto_increment,
+    create_time timestamp not null,
+    context_id character varying(64) not null,
+    ckey character varying(128) not null,
+	cvalue character varying(1024),
+	primary key (id),
+	UNIQUE KEY session_key (context_id, ckey) );
+
+	
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_JOB_DETAILS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_job_details (
+SCHED_NAME VARCHAR(120) not null,
+JOB_NAME VARCHAR(200) not null,
+JOB_GROUP VARCHAR(200) not null,
+DESCRIPTION VARCHAR(250) null,
+JOB_CLASS_NAME VARCHAR(250) not null,
+IS_DURABLE VARCHAR(1) not null,
+IS_NONCONCURRENT VARCHAR(1) not null,
+IS_UPDATE_DATA VARCHAR(1) not null,
+REQUESTS_RECOVERY VARCHAR(1) not null,
+JOB_DATA BLOB null,
+primary key (SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+JOB_NAME VARCHAR(200) not null,
+JOB_GROUP VARCHAR(200) not null,
+DESCRIPTION VARCHAR(250) null,
+NEXT_FIRE_TIME BIGINT(13) null,
+PREV_FIRE_TIME BIGINT(13) null,
+PRIORITY INTEGER null,
+TRIGGER_STATE VARCHAR(16) not null,
+TRIGGER_TYPE VARCHAR(8) not null,
+START_TIME BIGINT(13) not null,
+END_TIME BIGINT(13) null,
+CALENDAR_NAME VARCHAR(200) null,
+MISFIRE_INSTR SMALLINT(2) null,
+JOB_DATA BLOB null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
+REFERENCES FN_QZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SIMPLE_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_simple_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+REPEAT_COUNT BIGINT(7) not null,
+REPEAT_INTERVAL BIGINT(12) not null,
+TIMES_TRIGGERED BIGINT(10) not null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_CRON_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_cron_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+CRON_EXPRESSION VARCHAR(120) not null,
+TIME_ZONE_ID VARCHAR(80),
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SIMPROP_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_simprop_triggers (          
+    SCHED_NAME VARCHAR(120) not null,
+    TRIGGER_NAME VARCHAR(200) not null,
+    TRIGGER_GROUP VARCHAR(200) not null,
+    STR_PROP_1 VARCHAR(512) null,
+    STR_PROP_2 VARCHAR(512) null,
+    STR_PROP_3 VARCHAR(512) null,
+    INT_PROP_1 INT null,
+    INT_PROP_2 INT null,
+    LONG_PROP_1 BIGINT null,
+    LONG_PROP_2 BIGINT null,
+    DEC_PROP_1 NUMERIC(13,4) null,
+    DEC_PROP_2 NUMERIC(13,4) null,
+    BOOL_PROP_1 VARCHAR(1) null,
+    BOOL_PROP_2 VARCHAR(1) null,
+    primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) 
+    REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_BLOB_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_blob_triggers (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+BLOB_DATA BLOB null,
+primary key (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES FN_QZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+  
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_CALENDARS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_calendars (
+SCHED_NAME VARCHAR(120) not null,
+CALENDAR_NAME VARCHAR(200) not null,
+CALENDAR BLOB not null,
+primary key (SCHED_NAME,CALENDAR_NAME)
+);
+
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_PAUSED_TRIGGER_GRPS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_paused_trigger_grps (
+SCHED_NAME VARCHAR(120) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+primary key (SCHED_NAME,TRIGGER_GROUP)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_FIRED_TRIGGERS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_fired_triggers (
+SCHED_NAME VARCHAR(120) not null,
+ENTRY_ID VARCHAR(95) not null,
+TRIGGER_NAME VARCHAR(200) not null,
+TRIGGER_GROUP VARCHAR(200) not null,
+INSTANCE_NAME VARCHAR(200) not null,
+FIRED_TIME BIGINT(13) not null,
+SCHED_TIME BIGINT(13) not null,
+PRIORITY INTEGER not null,
+STATE VARCHAR(16) not null,
+JOB_NAME VARCHAR(200) null,
+JOB_GROUP VARCHAR(200) null,
+IS_NONCONCURRENT VARCHAR(1) null,
+REQUESTS_RECOVERY VARCHAR(1) null,
+primary key (SCHED_NAME,ENTRY_ID)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_SCHEDULER_STATE; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_scheduler_state (
+SCHED_NAME VARCHAR(120) not null,
+INSTANCE_NAME VARCHAR(200) not null,
+LAST_CHECKIN_TIME BIGINT(13) not null,
+CHECKIN_INTERVAL BIGINT(13) not null,
+primary key (SCHED_NAME,INSTANCE_NAME)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_QZ_LOCKS; TYPE: TABLE
+-- ----------------------------------------------------------
+create table fn_qz_locks (
+SCHED_NAME VARCHAR(120) not null,
+LOCK_NAME VARCHAR(40) not null,
+primary key (SCHED_NAME,LOCK_NAME)
+);
+
+-- ----------------------------------------------------------
+-- NAME: FN_MENU_FAVORITES; TYPE: TABLE
+-- ----------------------------------------------------------
+
+create table fn_menu_favorites (
+  user_id int(11) not null,
+  menu_id int(11) not null,
+  primary key (user_id,menu_id)
+);
+
+-- FACELIFT - Table for Events, News and Resources
+
+create table fn_common_widget_data(
+	id int auto_increment, 
+	category varchar(32), 
+	href varchar(512), 
+	title varchar(256), 
+	content varchar(4096), 
+	event_date varchar(10), -- YYYY-MM-DD 
+	sort_order int, 
+	primary key (id)
+);
+
+create table fn_app_contact_us (
+  app_id int(11) not null,
+  contact_name varchar(128) default null,
+  contact_email varchar(128) default null,
+  url varchar(256) default null,
+  active_yn varchar(2) default null,
+  description varchar(1024) default null,
+  primary key (app_id),
+  constraint fk_fn_a_con__ref_202_fn_app foreign key (app_id) references fn_app (app_id)
+);
+
+-- new 1610.2
+create table fn_pers_user_app_sel (
+  id   int(11) not null auto_increment,
+  user_id   int(11) not null,
+  app_id    int(11) not null,
+  status_cd char(1) not null,
+  primary key(id),
+  constraint fk_1_fn_pers_user_app_sel_fn_user foreign key (user_id) references fn_user (user_id),
+  constraint fk_2_fn_pers_user_app_sel_fn_app  foreign key (app_id)  references fn_app (app_id)
+);
+
+-- end new 1610.2
+
+-- new 1702 tables/views
+ -- 1702 Additions for User Notifications
+ -- ----------------------------------------------------------
+ -- NAME: ep_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_notification (
+    notification_ID     int(11) primary key not null auto_increment,
+    is_for_online_users char(1) default 'N',
+    is_for_all_roles    char(1) default 'N',
+    active_YN           char(1) default 'Y',
+    msg_header          varchar(100),
+    msg_description     varchar(2000),
+    msg_source          varchar(50) default 'EP',
+    start_time          timestamp default now(),
+    end_time            timestamp null,
+    priority            int(11),
+    creator_ID          int(11) null default null,
+    created_date        timestamp null default null,
+    notification_hyperlink varchar(512) null default null  -- new column for 1710
+   );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_role_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_role_notification (
+   ID                  int(11) primary key not null auto_increment,
+   notification_ID     int(11),
+   role_ID             int(11),
+   recv_user_id        int(11) null,
+   constraint fk_ep_role_notif_fn_role foreign key (role_ID) references fn_role(role_id),
+   constraint fk_ep_role_notif_fn_notif foreign key (notification_ID) references ep_notification(notification_ID)
+   );
+   
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_notification; TYPE: TABLE
+ -- ----------------------------------------------------------
+ create table ep_user_notification (
+    ID                  int(11) primary key not null auto_increment,
+    User_ID             int(11),
+    notification_ID     int(11),
+    is_viewed           char(1) default 'N',
+    updated_time        timestamp default now(),
+    constraint fk_ep_urole_notif_fn_user foreign key (User_ID) references fn_user(user_id),
+    constraint fk_ep_urole_notif_fn_notif foreign key (notification_ID) references ep_notification(notification_ID)
+   );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_app_sort; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_pers_user_app_sort (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   sort_pref char(1) not null,
+   unique key uk_1_ep_pers_user_app_sort (user_id),
+   constraint fk_ep_pers_user_app_sort_fn_user foreign key (user_id) references fn_user(user_id)
+ );
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_app_man_sort; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_pers_user_app_man_sort (
+   id         int(11) not null primary key auto_increment,
+   user_id    int(11) not null,
+   app_id     int(11) not null,
+   sort_order int(11) not null,
+   unique key uk_1_ep_pers_user_app_man_sort (user_id, app_id),
+   constraint fk_ep_pers_app_man_sort_fn_user foreign key (user_id) references fn_user(user_id),
+   constraint fk_ep_pers_app_man_sort_fn_app foreign key (app_id) references fn_app(app_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog; TYPE: Table
+ -- ----------------------------------------------------------
+
+ CREATE TABLE ep_widget_catalog (
+   widget_id int(11) not null auto_increment,
+   wdg_name varchar(100) not null default '?',
+   service_id int(11) default null,
+   wdg_desc varchar(200) default null,
+   wdg_file_loc varchar(256) not null default '?',
+   all_user_flag char(1) not null default 'N',
+   primary key (widget_id)
+ );
+ 
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_role; TYPE: Table
+ -- ----------------------------------------------------------
+ create table ep_widget_catalog_role (
+   widget_id 	int(10) not null,
+   app_id 		int(11) default '1',
+   role_id 		int(10) not null,
+   key fk_ep_widget_catalog_role_fn_widget (widget_id),
+   key fk_ep_widget_catalog_role_ref_fn_role (role_id),
+   key fk_ep_widget_catalog_role_app_id  (app_id),
+   constraint fk_ep_widget_catalog_role_fn_widget foreign key (widget_id) references ep_widget_catalog (widget_id),
+   constraint fk_ep_widget_catalog_role_ref_fn_role foreign key (role_id) references fn_role (role_id),
+   constraint fk_ep_widget_catalog_role_app_id foreign key (app_id) references fn_app (app_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_widget_placement; TYPE: Table
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_pers_user_widget_placement (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   widget_id int(11) not null,
+   x         int(11) not null,
+   y         int(11),
+   height    int(11),
+   width     int(11),
+   unique key uk_1_ep_pers_user_widg_place (user_id, widget_id),
+   constraint fk_ep_pers_user_widg_place_fn_user foreign key (user_id) references fn_user(user_id),
+   constraint fk_ep_pers_user_widg_place_ep_widg foreign key (widget_id) references ep_widget_catalog(widget_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_pers_user_widget_sel; TYPE: TABLE
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_pers_user_widget_sel (
+   id        int(11) not null primary key auto_increment,
+   user_id   int(11) not null,
+   widget_id int(11) not null,
+   status_cd char(1) not null,
+   unique key uk_1_ep_pers_user_widg_sel_user_widg (user_id, widget_id),
+   CONSTRAINT fk_1_ep_pers_user_wid_sel_fn_user FOREIGN KEY (user_id) REFERENCES fn_user (user_id),
+   CONSTRAINT fk_2_ep_pers_user_wid_sel_ep_wid FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id)
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_files; TYPE: TABLE
+ -- ----------------------------------------------------------
+ CREATE TABLE ep_widget_catalog_files (
+        file_id            	int(11) not null primary key auto_increment,
+        widget_id          	int(11),
+		widget_name 		VARCHAR(100) NOT NULL,
+		framework_js 		LONGBLOB NULL,
+		controller_js 		LONGBLOB NULL,
+		markup_html 		LONGBLOB NULL,
+		widget_css 			LONGBLOB NULL
+ );
+
+ -- ----------------------------------------------------------
+ -- NAME: fn_role_v; TYPE: VIEW
+ -- All roles without an APP_ID are Portal only.
+ -- ----------------------------------------------------------
+ create view fn_role_v as
+  select fn_role.role_id as role_id,
+         fn_role.role_name as role_name,
+                fn_role.active_yn as active_yn,
+         fn_role.priority as priority,
+         fn_role.app_id as app_id,
+         fn_role.app_role_id as app_role_id
+ from fn_role where isnull(fn_role.app_id);
+
+-- end new 1702 tables/views
+
+-- new 1707 tables/views
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_roles_request; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+create table ep_user_roles_request (
+    req_id int(11) not null primary key auto_increment,
+    user_id int(11) not null,
+    app_id int(11) not null,
+	created_date timestamp default now(),
+	updated_date timestamp default now(),
+    request_status character varying(50) not null,
+	constraint fk_user_roles_req_fn_user foreign key (user_id) references fn_user(user_id),
+	constraint fk_user_roles_req_fn_app foreign key (app_id) references fn_app(app_id)
+    );
+  
+  
+ -- ----------------------------------------------------------
+ -- NAME: ep_user_roles_request_det; TYPE: TABLE
+ -- ----------------------------------------------------------
+create table ep_user_roles_request_det (
+    id int(11) not null primary key auto_increment,
+    req_id int(11) default null,
+	requested_role_id int(10) not null,
+    request_type character varying(10) not null,
+    constraint fk_user_roles_req_fn_req_id foreign key (req_id) references ep_user_roles_request(req_id),
+    constraint fk_user_roles_req_fn_role_id foreign key (requested_role_id) references fn_role(role_id)
+    );
+	
+ -- ----------------------------------------------------------
+ -- NAME: ep_microservice; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_microservice (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	name VARCHAR(50) NULL DEFAULT NULL,
+	description VARCHAR(50) NULL DEFAULT NULL,
+	appId INT(11) NULL DEFAULT NULL,
+	endpoint_url VARCHAR(200) NULL DEFAULT NULL,
+	security_type VARCHAR(50) NULL DEFAULT NULL,
+	username VARCHAR(50) NULL DEFAULT NULL,
+	password VARCHAR(50) NULL DEFAULT NULL,
+	active CHAR(1) NOT NULL DEFAULT 'Y',
+	PRIMARY KEY (id),
+	CONSTRAINT FK_FN_APP_EP_MICROSERVICE FOREIGN KEY (appId) REFERENCES fn_app (app_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_microservice_parameter; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+CREATE TABLE ep_microservice_parameter (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	service_id INT(11) NULL DEFAULT NULL,
+	para_key VARCHAR(50) NULL DEFAULT NULL,
+	para_value VARCHAR(50) NULL DEFAULT NULL,
+	PRIMARY KEY (id),
+	CONSTRAINT FK_EP_MICROSERIVCE_EP_MICROSERVICE_PARAMETER FOREIGN KEY (service_id) REFERENCES ep_microservice (id)
+);
+
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_preview_files; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+CREATE TABLE ep_widget_preview_files (
+	preview_id INT(11) NOT NULL AUTO_INCREMENT,
+	html_file LONGBLOB NULL,
+	css_file LONGBLOB NULL,
+	javascript_file LONGBLOB NULL,
+	framework_file LONGBLOB NULL,
+	PRIMARY KEY (preview_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_microservice; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_widget_microservice (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	widget_id INT(11) NOT NULL DEFAULT '0',
+	microservice_id INT(11) NOT NULL DEFAULT '0',
+	PRIMARY KEY (id),
+	CONSTRAINT FK_EP_WIDGET_MICROSERVICE_EP_MICROSERVICE FOREIGN KEY (microservice_id) REFERENCES ep_microservice (id),
+	CONSTRAINT FK_EP_WIDGET_MICROSERVICE_EP_WIDGET FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_basic_auth_account; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table ep_basic_auth_account (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	ext_app_name VARCHAR(50) NOT NULL,
+	username VARCHAR(50) NOT NULL,
+	password VARCHAR(50) null default null,
+    active_yn char(1) NOT NULL default 'Y',
+	PRIMARY KEY (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_widget_catalog_parameter; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table  ep_widget_catalog_parameter (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	widget_id INT(11) NOT NULL,
+	user_id INT(11) NOT NULL,
+	param_id INT(11) NOT NULL,
+    user_value VARCHAR(50) NULL,
+	PRIMARY KEY (id),
+	CONSTRAINT EP_FN_USER_WIDGET_PARAMETER_FK FOREIGN KEY (user_id) REFERENCES fn_user (user_id),
+	CONSTRAINT EP_WIDGET_CATALOG_WIDGET_PARAMETER_FK FOREIGN KEY (widget_id) REFERENCES ep_widget_catalog (widget_id),
+	CONSTRAINT EP_PARAMETER_ID_WIDGET_PARAMETER_FK FOREIGN KEY (param_id) REFERENCES ep_microservice_parameter (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_web_analytics_source; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table ep_web_analytics_source(
+	resource_id int(11) NOT NULL auto_increment,
+	app_id int(11) NOT NULL,
+    report_source varchar(500),
+    report_name  varchar(500),
+    PRIMARY KEY (resource_id),
+	FOREIGN KEY (app_id) REFERENCES fn_app(app_id)
+); 
+
+ -- Machine Learning Tables
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_model; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table ep_ml_model(
+  time_stamp timestamp default now(),
+  group_id int(11) NOT NULL,
+  model longblob,
+  PRIMARY KEY (time_stamp,group_id)
+);
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_rec; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table ep_ml_rec(
+  time_stamp timestamp default now(),
+  org_user_id varchar(20) NOT NULL,
+  rec varchar(4000) DEFAULT NULL,
+  PRIMARY KEY (time_stamp,org_user_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_ml_user; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table ep_ml_user(
+  time_stamp timestamp default now(),
+  org_user_id varchar(20) NOT NULL,
+  group_id int(11) NOT NULL,
+  PRIMARY KEY (time_stamp,org_user_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_endpoints; TYPE: TABLE
+ -- ----------------------------------------------------------
+ 
+create table  ep_endpoints (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+    url VARCHAR(50) NOT NULL,
+	PRIMARY KEY (id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_endpoints_basic_auth_account; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+create table  ep_endpoints_basic_auth_account (
+	id INT(11) NOT NULL AUTO_INCREMENT,
+	ep_id INT(11) DEFAULT NULL,
+	account_id INT(11) DEFAULT NULL,
+	PRIMARY KEY (id),
+	CONSTRAINT ep_endpoints_basic_auth_account_account_id_fk FOREIGN KEY (account_id) REFERENCES ep_basic_auth_account (id),
+	CONSTRAINT ep_endpoints_basic_auth_account_ep_id_fk FOREIGN KEY (ep_id) REFERENCES ep_endpoints (id)
+
+);
+
+-- end new 1707 tables/views
+
+-- new 1710 tables/views
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_app_function; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE ep_app_function (
+app_id INT(11) NOT NULL,
+function_cd VARCHAR(250) NOT NULL,
+function_name VARCHAR(500) NOT NULL,
+PRIMARY KEY (function_cd, app_id),
+INDEX fk_ep_app_function_app_id (app_id),
+CONSTRAINT fk_ep_app_function_app_id FOREIGN KEY (app_id) REFERENCES fn_app (app_id)
+);
+
+ -- ----------------------------------------------------------
+ -- NAME: ep_app_role_function; TYPE: TABLE
+ -- ----------------------------------------------------------
+
+CREATE TABLE `ep_app_role_function` (
+`id` INT(11) NOT NULL AUTO_INCREMENT,
+`app_id` INT(11) NOT NULL,
+`role_id` INT(11) NOT NULL,
+`function_cd` VARCHAR(250) NOT NULL,
+`role_app_id` VARCHAR(20) NULL DEFAULT NULL,
+PRIMARY KEY (`id`),
+UNIQUE INDEX `UNIQUE KEY` (`app_id`, `role_id`, `function_cd`),
+CONSTRAINT `fk_ep_app_role_function_app_id` FOREIGN KEY (`app_id`) REFERENCES `fn_app` (`app_id`),
+CONSTRAINT `fk_ep_app_role_function_ep_app_func` FOREIGN KEY (`app_id`, `function_cd`) REFERENCES `ep_app_function` (`app_id`, `function_cd`),
+CONSTRAINT `fk_ep_app_role_function_role_id` FOREIGN KEY (`role_id`) REFERENCES `fn_role` (`role_id`)
+);
+
+-- end new 1710 tables/views
+
+-- ----------------------------------------------------------
+-- NAME: QUARTZ TYPE: INDEXES
+-- ----------------------------------------------------------
+create index idx_fn_qz_j_req_recovery on fn_qz_job_details(sched_name,requests_recovery);
+create index idx_fn_qz_j_grp on fn_qz_job_details(sched_name,job_group);
+create index idx_fn_qz_t_j on fn_qz_triggers(sched_name,job_name,job_group);
+create index idx_fn_qz_t_jg on fn_qz_triggers(sched_name,job_group);
+create index idx_fn_qz_t_c on fn_qz_triggers(sched_name,calendar_name);
+create index idx_fn_qz_t_g on fn_qz_triggers(sched_name,trigger_group);
+create index idx_fn_qz_t_state on fn_qz_triggers(sched_name,trigger_state);
+create index idx_fn_qz_t_n_state on fn_qz_triggers(sched_name,trigger_name,trigger_group,trigger_state);
+create index idx_fn_qz_t_n_g_state on fn_qz_triggers(sched_name,trigger_group,trigger_state);
+create index idx_fn_qz_t_next_fire_time on fn_qz_triggers(sched_name,next_fire_time);
+create index idx_fn_qz_t_nft_st on fn_qz_triggers(sched_name,trigger_state,next_fire_time);
+create index idx_fn_qz_t_nft_misfire on fn_qz_triggers(sched_name,misfire_instr,next_fire_time);
+create index idx_fn_qz_t_nft_st_misfire on fn_qz_triggers(sched_name,misfire_instr,next_fire_time,trigger_state);
+create index idx_fn_qz_t_nft_st_misfire_grp on fn_qz_triggers(sched_name,misfire_instr,next_fire_time,trigger_group,trigger_state);
+create index idx_fn_qz_ft_trig_inst_name on fn_qz_fired_triggers(sched_name,instance_name);
+create index idx_fn_qz_ft_inst_job_req_rcvry on fn_qz_fired_triggers(sched_name,instance_name,requests_recovery);
+create index idx_fn_qz_ft_j_g on fn_qz_fired_triggers(sched_name,job_name,job_group);
+create index idx_fn_qz_ft_jg on fn_qz_fired_triggers(sched_name,job_group);
+create index idx_fn_qz_ft_t_g on fn_qz_fired_triggers(sched_name,trigger_name,trigger_group);
+create index idx_fn_qz_ft_tg on fn_qz_fired_triggers(sched_name,trigger_group);
+
+
+-- ------------------ create view section
+--
+-- name: v_url_access; type: view
+--
+create view v_url_access as
+ select distinct m.action as url,
+    m.function_cd
+   from fn_menu m
+  where (m.action is not null)
+union
+ select distinct t.action as url,
+    t.function_cd
+   from fn_tab t
+  where (t.action is not null)
+union
+ select r.restricted_url as url,
+    r.function_cd
+   from fn_restricted_url r;
+   
+-- ------------------ alter table add constraint primary key section
+--
+-- name: cr_favorite_reports_user_idrep_id; type: constraint
+--
+alter table cr_favorite_reports 
+    add constraint cr_favorite_reports_user_idrep_id primary key (user_id, rep_id);
+--
+-- name: cr_folder_folder_id; type: constraint
+--
+alter table cr_folder
+    add constraint cr_folder_folder_id primary key (folder_id);
+--
+-- name: cr_folder_access_folder_access_id; type: constraint
+--
+alter table cr_folder_access
+    add constraint cr_folder_access_folder_access_id primary key (folder_access_id);
+--
+-- name: cr_hist_user_map_hist_iduser_id; type: constraint
+--
+alter table cr_hist_user_map
+    add constraint cr_hist_user_map_hist_iduser_id primary key (hist_id, user_id);
+--
+-- name: cr_lu_file_type_lookup_id; type: constraint
+--
+alter table cr_lu_file_type
+    add constraint cr_lu_file_type_lookup_id primary key (lookup_id);
+--
+-- name: cr_raptor_action_img_image_id; type: constraint
+--
+alter table cr_raptor_action_img
+    add constraint cr_raptor_action_img_image_id primary key (image_id);
+--
+-- name: cr_raptor_pdf_img_image_id; type: constraint
+--
+alter table cr_raptor_pdf_img
+    add constraint cr_raptor_pdf_img_image_id primary key (image_id);
+--
+-- name: cr_remote_schema_info_schema_prefix; type: constraint
+--
+alter table cr_remote_schema_info
+    add constraint cr_remote_schema_info_schema_prefix primary key (schema_prefix);
+--
+-- name: cr_report_rep_id; type: constraint
+--
+alter table cr_report
+    add constraint cr_report_rep_id primary key (rep_id);
+--
+-- name: cr_report_access_rep_idorder_no; type: constraint
+--
+alter table cr_report_access
+    add constraint cr_report_access_rep_idorder_no primary key (rep_id, order_no);
+--
+-- name: cr_report_email_sent_log_log_id; type: constraint
+--
+alter table cr_report_email_sent_log
+    add constraint cr_report_email_sent_log_log_id primary key (log_id);
+--
+-- name: cr_report_file_history_hist_id; type: constraint
+--
+alter table cr_report_file_history
+    add constraint cr_report_file_history_hist_id primary key (hist_id);
+--
+-- name: cr_report_schedule_schedule_id; type: constraint
+--
+alter table cr_report_schedule
+    add constraint cr_report_schedule_schedule_id primary key (schedule_id);
+--
+-- name: cr_report_schedule_users_schedule_idrep_iduser_idorder_no; type: constraint
+--
+alter table cr_report_schedule_users
+    add constraint cr_report_schedule_users_schedule_idrep_iduser_idorder_no primary key (schedule_id, rep_id, user_id, order_no);
+--
+-- name: cr_report_template_map_report_id; type: constraint
+--
+alter table cr_report_template_map
+    add constraint cr_report_template_map_report_id primary key (report_id);
+--
+-- name: cr_table_role_table_namerole_id; type: constraint
+--
+alter table cr_table_role
+    add constraint cr_table_role_table_namerole_id primary key (table_name, role_id);
+--
+-- name: cr_table_source_table_name; type: constraint
+--
+alter table cr_table_source
+    add constraint cr_table_source_table_name primary key (table_name);
+--
+-- name: fn_audit_action_audit_action_id; type: constraint
+--
+alter table fn_audit_action
+    add constraint fn_audit_action_audit_action_id primary key (audit_action_id);  
+--
+--
+-- name: fk_fn_audit_ref_205_fn_lu_ac; type: constraint
+--
+alter table fn_audit_log
+	add constraint fk_fn_audit_ref_205_fn_lu_ac foreign key (activity_cd) references fn_lu_activity(activity_cd);
+--
+-- name: fk_fn_role__ref_201_fn_funct; type: constraint
+--    
+alter table fn_role_function
+	add constraint fk_fn_role__ref_201_fn_funct foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fn_chat_logs_chat_log_id; type: constraint
+--
+alter table fn_chat_logs
+    add constraint fn_chat_logs_chat_log_id primary key (chat_log_id);
+--
+-- name: fn_chat_room_chat_room_id; type: constraint
+--
+alter table fn_chat_room
+    add constraint fn_chat_room_chat_room_id primary key (chat_room_id);
+--
+-- name: fn_chat_users_id; type: constraint
+--
+alter table fn_chat_users  
+    add constraint fn_chat_users_id primary key (id);
+--
+-- name: fn_lu_alert_method_alert_method_cd; type: constraint
+--
+alter table fn_lu_alert_method
+    add constraint fn_lu_alert_method_alert_method_cd primary key (alert_method_cd);
+--
+-- name: fn_lu_broadcast_site_broadcast_site_cd; type: constraint
+--
+alter table fn_lu_broadcast_site
+    add constraint fn_lu_broadcast_site_broadcast_site_cd primary key (broadcast_site_cd);
+--
+-- name: fn_lu_priority_priority_id; type: constraint
+--
+alter table fn_lu_priority
+    add constraint fn_lu_priority_priority_id primary key (priority_id);
+--
+-- name: fn_lu_role_type_role_type_id; type: constraint
+--
+alter table fn_lu_role_type
+    add constraint fn_lu_role_type_role_type_id primary key (role_type_id);
+--
+-- name: fn_lu_tab_set_tab_set_cd; type: constraint
+--
+alter table fn_lu_tab_set
+    add constraint fn_lu_tab_set_tab_set_cd primary key (tab_set_cd);
+--
+-- name: fn_lu_timezone_timezone_id; type: constraint
+--
+alter table fn_lu_timezone
+    add constraint fn_lu_timezone_timezone_id primary key (timezone_id);
+--
+-- name: fn_org_org_id; type: constraint
+--
+alter table fn_org
+    add constraint fn_org_org_id primary key (org_id);
+--
+-- name: fn_restricted_url_restricted_urlfunction_cd; type: constraint
+--
+alter table fn_restricted_url
+    add constraint fn_restricted_url_restricted_urlfunction_cd primary key (restricted_url, function_cd);
+--
+-- name: fn_role_composite_parent_role_idchild_role_id; type: constraint
+--
+alter table fn_role_composite
+    add constraint fn_role_composite_parent_role_idchild_role_id primary key (parent_role_id, child_role_id);
+--
+-- name: fn_role_function_role_idfunction_cd; type: constraint
+--
+alter table fn_role_function
+    add constraint fn_role_function_role_idfunction_cd primary key (role_id, function_cd);
+--
+-- name: fn_tab_tab_cd; type: constraint
+--
+alter table fn_tab
+    add constraint fn_tab_tab_cd primary key (tab_cd);
+--
+-- name: fn_tab_selected_selected_tab_cdtab_uri; type: constraint
+--
+alter table fn_tab_selected
+    add constraint fn_tab_selected_selected_tab_cdtab_uri primary key (selected_tab_cd, tab_uri);
+--
+-- name: fn_user_pseudo_role_pseudo_role_iduser_id; type: constraint
+--
+alter table fn_user_pseudo_role
+    add constraint fn_user_pseudo_role_pseudo_role_iduser_id primary key (pseudo_role_id, user_id);
+--
+-- name: fn_user_role_user_idrole_id; type: constraint
+--
+alter table fn_user_role
+    add constraint fn_user_role_user_idrole_id primary key (user_id, role_id, app_id);
+-- ------------------ create index section
+--
+-- name: cr_report_create_idpublic_yntitle; type: index
+--
+create index cr_report_create_idpublic_yntitle using btree on cr_report (create_id, public_yn, title);
+--
+-- name: cr_table_join_dest_table_name; type: index
+--
+create index cr_table_join_dest_table_name using btree on cr_table_join (dest_table_name);
+--
+-- name: cr_table_join_src_table_name; type: index
+--
+create index cr_table_join_src_table_name using btree on cr_table_join (src_table_name);
+--
+-- name: fn_audit_log_activity_cd; type: index
+--
+create index fn_audit_log_activity_cd using btree on fn_audit_log (activity_cd);
+--
+-- name: fn_audit_log_user_id; type: index
+--
+create index fn_audit_log_user_id using btree on fn_audit_log (user_id);
+--
+-- name: fn_org_access_cd; type: index
+--
+create index fn_org_access_cd using btree on fn_org (access_cd);
+--
+-- name: fn_role_function_function_cd; type: index
+--
+create index fn_role_function_function_cd using btree on fn_role_function (function_cd);
+--
+-- name: fn_role_function_role_id; type: index
+--
+create index fn_role_function_role_id using btree on fn_role_function (role_id);
+--
+-- name: fn_user_address_id; type: index
+--
+create index fn_user_address_id using btree on fn_user (address_id); 
+--
+-- name: fn_user_alert_method_cd; type: index
+--
+create index fn_user_alert_method_cd using btree on fn_user (alert_method_cd); 
+--
+-- name: fn_user_hrid; type: index
+--
+create unique index fn_user_hrid using btree on fn_user (hrid); 
+--
+-- name: fn_user_login_id; type: index
+--
+create unique index fn_user_login_id using btree on fn_user (login_id); 
+--
+-- name: fn_user_org_id; type: index
+--
+create index fn_user_org_id using btree on fn_user (org_id); 
+--
+-- name: fn_user_role_role_id; type: index
+--
+create index fn_user_role_role_id using btree on fn_user_role (role_id);
+--
+-- name: fn_user_role_user_id; type: index
+--
+create index fn_user_role_user_id using btree on fn_user_role (user_id);
+--
+-- name: fk_fn_user__ref_178_fn_app_idx; type: index
+--
+create index fk_fn_user__ref_178_fn_app_idx on fn_user_role (app_id);
+ --
+ -- name: fn_role_name_app_id_idx; type: index
+ --
+ create unique index fn_role_name_app_id_idx using btree on fn_role (role_name,app_id);
+ 
+-- new for 1707
+ 
+create index ep_notif_recv_user_id_idx using btree on ep_role_notification (recv_user_id);
+  
+-- end new for 1707
+
+-- ------------------ alter table add constraint foreign key section
+--
+-- name: fk_fn_user__ref_178_fn_app; type: fk constraint
+--
+alter table fn_user_role
+	add constraint fk_fn_user__ref_178_fn_app foreign key (app_id) references fn_app(app_id);
+--
+-- name: fk_cr_repor_ref_14707_cr_repor; type: fk constraint
+--
+alter table cr_report_schedule
+    add constraint fk_cr_repor_ref_14707_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_repor_ref_14716_cr_repor; type: fk constraint
+--
+alter table cr_report_schedule_users
+    add constraint fk_cr_repor_ref_14716_cr_repor foreign key (schedule_id) references cr_report_schedule(schedule_id);
+--
+-- name: fk_cr_repor_ref_17645_cr_repor; type: fk constraint
+--
+alter table cr_report_log
+    add constraint fk_cr_repor_ref_17645_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_repor_ref_8550_cr_repor; type: fk constraint
+--
+alter table cr_report_access
+    add constraint fk_cr_repor_ref_8550_cr_repor foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_report_rep_id; type: fk constraint
+--
+alter table cr_report_email_sent_log
+    add constraint fk_cr_report_rep_id foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: fk_cr_table_ref_311_cr_tab; type: fk constraint
+--
+alter table cr_table_join
+    add constraint fk_cr_table_ref_311_cr_tab foreign key (src_table_name) references cr_table_source(table_name);
+--
+-- name: fk_cr_table_ref_315_cr_tab; type: fk constraint
+--
+alter table cr_table_join
+    add constraint fk_cr_table_ref_315_cr_tab foreign key (dest_table_name) references cr_table_source(table_name);
+--
+-- name: fk_cr_table_ref_32384_cr_table; type: fk constraint
+--
+alter table cr_table_role
+    add constraint fk_cr_table_ref_32384_cr_table foreign key (table_name) references cr_table_source(table_name);
+--
+-- name: fk_fn_tab_function_cd; type: fk constraint
+--
+alter table fn_tab
+    add constraint fk_fn_tab_function_cd foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fk_fn_tab_selected_tab_cd; type: fk constraint
+--
+alter table fn_tab_selected
+    add constraint fk_fn_tab_selected_tab_cd foreign key (selected_tab_cd) references fn_tab(tab_cd);
+--
+-- name: fk_fn_tab_set_cd; type: fk constraint
+--
+alter table fn_tab
+    add constraint fk_fn_tab_set_cd foreign key (tab_set_cd) references fn_lu_tab_set(tab_set_cd);
+--
+-- name: fk_fn_user_ref_110_fn_org; type: fk constraint
+-- 
+alter table fn_user
+    add constraint fk_fn_user_ref_110_fn_org foreign key (org_id) references fn_org(org_id); 
+--
+-- name: fk_fn_user_ref_123_fn_lu_al; type: fk constraint
+--
+alter table fn_user
+    add constraint fk_fn_user_ref_123_fn_lu_al foreign key (alert_method_cd) references fn_lu_alert_method(alert_method_cd); 
+--
+-- name: fk_fn_user_ref_197_fn_user; type: fk constraint
+--
+ alter table fn_user
+    add constraint fk_fn_user_ref_197_fn_user foreign key (manager_id) references fn_user(user_id); 
+--
+-- name: fk_fn_user_ref_198_fn_user; type: fk constraint
+--
+alter table fn_user  
+    add constraint fk_fn_user_ref_198_fn_user foreign key (created_id) references fn_user(user_id); 
+--
+-- name: fk_fn_user_ref_199_fn_user; type: fk constraint
+--
+alter table fn_user  
+    add constraint fk_fn_user_ref_199_fn_user foreign key (modified_id) references fn_user(user_id); 
+--
+-- name: fk_parent_key_cr_folder; type: fk constraint
+--
+alter table cr_folder
+    add constraint fk_parent_key_cr_folder foreign key (parent_folder_id) references cr_folder(folder_id);
+--
+-- name: fk_pseudo_role_pseudo_role_id; type: fk constraint
+--
+alter table fn_user_pseudo_role 
+    add constraint fk_pseudo_role_pseudo_role_id foreign key (pseudo_role_id) references fn_role(role_id);
+--
+-- name: fk_pseudo_role_user_id; type: fk constraint
+--
+alter table fn_user_pseudo_role 
+    add constraint fk_pseudo_role_user_id foreign key (user_id) references fn_user(user_id);
+--
+-- name: fk_restricted_url_function_cd; type: fk constraint
+--
+alter table fn_restricted_url
+    add constraint fk_restricted_url_function_cd foreign key (function_cd) references fn_function(function_cd);
+--
+-- name: fk_timezone; type: fk constraint
+--
+alter table fn_user
+    add constraint fk_timezone foreign key (timezone) references fn_lu_timezone(timezone_id); 
+--
+-- name: sys_c0014614; type: fk constraint
+--
+alter table cr_report_file_history
+    add constraint sys_c0014614 foreign key (file_type_id) references cr_lu_file_type(lookup_id);
+--
+-- name: sys_c0014615; type: fk constraint
+--
+alter table cr_report_file_history
+    add constraint sys_c0014615 foreign key (rep_id) references cr_report(rep_id);
+--
+-- name: sys_c0014616; type: fk constraint
+--
+alter table cr_hist_user_map  
+    add constraint sys_c0014616 foreign key (hist_id) references cr_report_file_history(hist_id);
+--
+-- name: sys_c0014617; type: fk constraint
+--
+alter table cr_hist_user_map  
+    add constraint sys_c0014617 foreign key (user_id) references fn_user(user_id);
+--
+-- name: sys_c0014618; type: fk constraint
+--
+alter table fn_menu_favorites
+add constraint sys_c0014618 foreign key (user_id) references fn_user(user_id);  
+    
+--
+-- name: sys_c0014619; type: fk constraint
+--
+alter table fn_menu_favorites
+add constraint sys_c0014619 foreign key (menu_id) references fn_menu_functional(menu_id);
+
+commit;
\ No newline at end of file
diff --git a/ecomp-portal-DB-common/PortalDMLMySql_2_5_Common.sql b/ecomp-portal-DB-common/PortalDMLMySql_2_5_Common.sql
new file mode 100644
index 0000000..7b13984
--- /dev/null
+++ b/ecomp-portal-DB-common/PortalDMLMySql_2_5_Common.sql
@@ -0,0 +1,276 @@
+-- --------------------------------------------------------------------------------------------
+-- This is the common default data for 2.1.0 Version of Portal database called portal 
+
+USE portal;
+
+set foreign_key_checks=1; 
+
+-- FN_FUNCTION
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_process','Process List');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job','Job Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job_create','Job Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job_designer','Process in Designer view');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_task','Task Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_task_search','Task Search');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_map','Map Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_sample','Sample Pages Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('login','Login');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_home','Home Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_customer','Customer Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_reports','Reports Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile','Profile Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_admin','Admin Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_feedback','Feedback Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_help','Help Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_logout','Logout Menu'); 
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_notes','Notes Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_ajax','Ajax Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_customer_create','Customer Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile_create','Profile Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile_import','Profile Import');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_tab','Sample Tab Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('view_reports','View Raptor reports');
+
+-- new 1702
+Insert into fn_function (function_cd,function_name) values ('edit_notification','User Notification');
+Insert INTO fn_function (function_cd,function_name) values ('getAdminNotifications', 'Admin Notifications');
+Insert INTO fn_function (function_cd,function_name) values ('saveNotification', 'publish notifications');
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_function	(function_cd, function_name) VALUES ('menu_web_analytics', 'Web Analytics');
+-- end new 1707
+
+-- FN_LU_ACTIVITY
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_role','add_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_role','remove_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_user_role','add_user_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_user_role','remove_user_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_role_function','add_role_function');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_role_function','remove_role_function');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_child_role','add_child_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_child_role','remove_child_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('mobile_login','Mobile Login');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('mobile_logout','Mobile Logout');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('login','Login');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('logout','Logout');
+
+-- new 1610.2
+insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values('guest_login','Guest Login');  
+-- end new 1610.2
+
+-- new 1702
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('tab_access','Tab Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('app_access','App Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values('functional_access','Functional Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('left_menu_access','Left Menu Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('search','Search');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('apa','Add Portal Admin');                            
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('dpa','Delete Portal Admin');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('uaa','Update Account Admin');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('uu','Update User');
+
+-- FN_LU_MENU_SET
+Insert into fn_lu_menu_set (MENU_SET_CD,MENU_SET_NAME) values ('APP','Application Menu');
+
+-- FN_MENU   Ecomp Portal now uses the left menu entries from fn_menu
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(1,'root',NULL,10,NULL,'menu_home','N','APP','N',NULL);
+                               
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(2,'Home',1,10,'root.applicationsHome','menu_home','Y','APP','N','icon-building-home');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(3,'Application Catalog',1,15,'root.appCatalog','menu_home','Y','APP','N','icon-retail-gallery');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(4,'Widget Catalog',1,20,'root.widgetCatalog','menu_home','Y','APP','N','icon-retail-gallery');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(5,'Admins',1,40,'root.admins','menu_admin','Y','APP','N','icon-content-star');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(6,'Roles',1,45,'root.roles','menu_acc_admin','Y','APP','N','icon-people-groupcollaboration');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(7,'Users',1,50,'root.users','menu_acc_admin','Y','APP','N','icon-people-groupcollaboration');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(8,'Portal Admins',1,60,'root.portalAdmins','menu_admin','Y','APP','N','icon-controls-settingsconnectedactivity');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(9,'Application Onboarding',1,70,'root.applications','menu_app_onboarding','Y','APP','N','icon-content-grid2');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(10,'Widget Onboarding',1,80,'root.widgetOnboarding','menu_admin','Y','APP','N','icon-content-grid2');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(11,'Edit Functional Menu',1,90,'root.functionalMenu','menu_admin','Y','APP','N','icon-misc-pen');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(12,'User Notifications',1,100,'root.userNotifications','edit_notification','Y','APP','N','icon-controls-settingsconnectedactivity');
+                               
+-- end new 1702
+
+-- new 1707
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+								values (13,'Microservice Onboarding', 1, 110, 'root.microserviceOnboarding', 'menu_admin', 'Y', 'APP', 'N', 'icon-content-grid2');
+Insert into fn_menu (menu_id, label, parent_id, sort_order, action, function_cd, active_yn, menu_set_cd, separator_yn, image_src)
+								values(15,'App Account Management', 1, 130, 'root.accountOnboarding', 'menu_admin', 'Y', 'App', 'N', 'icon-content-grid2');  
+
+-- end new 1707
+
+-- FN_LU_ALERT_METHOD
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('PHONE','Phone');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('FAX','Fax');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('PAGER','Pager');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('EMAIL','Email');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('SMS','SMS');
+
+-- FN_LU_PRIORITY
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (10,'Low','Y',10);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (20,'Normal','Y',20);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (30,'High','Y',30);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (40,'Urgent','Y',40);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (50,'Fatal','Y',50);
+
+-- FN_LU_TAB_SET
+Insert into fn_lu_tab_set (TAB_SET_CD,TAB_SET_NAME) values ('APP','Application Tabs');
+
+-- FN_LU_TIMEZONE
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (10,'US/Eastern','US/Eastern');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (20,'US/Central','US/Central');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (30,'US/Mountain','US/Mountain');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (40,'US/Arizona','America/Phoenix');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (50,'US/Pacific','US/Pacific');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (60,'US/Alaska','US/Alaska');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (70,'US/Hawaii','US/Hawaii');
+
+-- FN_RESTRICTED_URL
+Insert into fn_restricted_url (restricted_url, function_cd) values ('attachment.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('broadcast.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('file_upload.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('job.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('role.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('role_function.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('test.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('async_test.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('chatWindow.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('contact_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('customer_dynamic_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('event.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('event_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('mobile_welcome.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('template.jsp','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('jbpm_designer.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('jbpm_drools.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('process_job.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('profile.htm','menu_profile_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor2.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_blob_extract.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_email_attachment.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_search.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('report_list.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gauge.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gmap_controller.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gmap_frame.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map_download.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map_grid_search.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_animated_map.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map_2.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map_3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub1.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub2_link1.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub2_link2.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab4.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor.htm','view_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_blob_extract.htm','view_reports');
+
+-- FN_ROLE
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (1,'System Administrator','Y',1,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (16,'Standard User','Y',5,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (999,'Account Administrator','Y',1,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (900,'Restricted App Role','Y','1',NULL,NULL);
+
+-- new 1702
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (950,'Portal Notification Admin','Y','1',NULL,NULL);
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_role (role_id, role_name, active_yn, priority) VALUES ('1010', 'Usage Analyst', 'Y', '1');
+INSERT INTO fn_role (role_id, role_name, active_yn, priority) VALUES ('2115', 'Portal Usage Analyst', 'Y', '6');
+-- end new 1707
+
+-- FN_ROLE_Composite
+Insert into fn_role_composite (PARENT_ROLE_ID,CHILD_ROLE_ID) values (1,16);
+
+-- FN_ROLE_FUNCTION
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'login');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_admin');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_ajax');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_customer');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_customer_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_feedback');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_help');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_home');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_job');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_job_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_logout');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_notes');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_process');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile_import');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_reports');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_sample');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_tab');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'login');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_ajax');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_customer');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_customer_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_home');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_logout');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_map');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_profile');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_reports');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_tab');
+
+-- new 1702
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (950,'edit_notification');
+Insert INTO fn_role_function (ROLE_ID,FUNCTION_CD) values (950, 'getAdminNotifications');
+Insert INTO fn_role_function (ROLE_ID,FUNCTION_CD) values (950, 'saveNotification');
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_role_function (role_id, function_cd) VALUES ('1010', 'menu_web_analytics');
+INSERT INTO fn_role_function (role_id, function_cd) VALUES ('2115', 'menu_web_analytics');
+-- end new 1707
+
+-- FN_TAB
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB1_S1','Left Tab 1','Sub - Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2_SUB1','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB1','Tab 1','Tab 1 Information','tab1.htm','menu_tab','Y',10,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2','Tab 2','Tab 2 Information','tab2_sub1.htm','menu_tab','Y',20,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB3','Tab 3','Tab 3 Information','tab3.htm','menu_tab','Y',30,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB4','Tab 4','Tab 4 Information','tab4.htm','menu_tab','Y',40,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB1','Sub Tab 1','Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB2','Sub Tab 2','Sub Tab 2 Information','tab2_sub2.htm','menu_tab','Y',20,'TAB2','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB3','Sub Tab 3','Sub Tab 3 Information','tab2_sub3.htm','menu_tab','Y',30,'TAB2','APP');
+
+-- FN_TAB_SELECTED
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB1','tab1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub2');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB1','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB1_S1','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB2','tab2_sub2');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB3','tab2_sub3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB3','tab3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB4','tab4');
+
+commit;
\ No newline at end of file
diff --git a/ecomp-portal-DB-common/PortalDMLMySql_2_6_Common.sql b/ecomp-portal-DB-common/PortalDMLMySql_2_6_Common.sql
new file mode 100644
index 0000000..9a59639
--- /dev/null
+++ b/ecomp-portal-DB-common/PortalDMLMySql_2_6_Common.sql
@@ -0,0 +1,308 @@
+-- --------------------------------------------------------------------------------------------
+-- This is the common default data for 2.1.0 Version of Portal database called portal 
+
+USE portal;
+
+set foreign_key_checks=1; 
+
+
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,2,'Home');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,3,'Application Catalog');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,4,'Widget Catalog');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,5,'Admins');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,6,'Roles');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,7,'Users');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,8,'Portal Admins');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,9,'Application Onboarding');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,10,'Widget Onboarding');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,11,'Edit Functional Menu');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,12,'User Notifications');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,13,'Microservice Onboarding');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (1,15,'App Account Management');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,2,'主页');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,3,'应用目录');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,4,'部件目录');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,5,'管理员');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,6,'角色');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,7,'用户');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,8,'门户管理员');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,9,'应用管理');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,10,'部件管理');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,11,'编辑功能菜单');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,12,'用户通知');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,13,'微服务管理');
+INSERT INTO fn_display_text (language_id,text_id,text_label) VALUES (2,15,'应用账户管理');
+
+INSERT INTO fn_language (language_name,language_alias) VALUES ('English','EN');
+INSERT INTO fn_language (language_name,language_alias) VALUES ('简体中文','CN');
+
+
+-- FN_FUNCTION
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_process','Process List');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job','Job Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job_create','Job Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_job_designer','Process in Designer view');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_task','Task Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_task_search','Task Search');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_map','Map Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_sample','Sample Pages Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('login','Login');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_home','Home Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_customer','Customer Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_reports','Reports Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile','Profile Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_admin','Admin Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_feedback','Feedback Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_help','Help Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_logout','Logout Menu'); 
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_notes','Notes Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_ajax','Ajax Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_customer_create','Customer Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile_create','Profile Create');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_profile_import','Profile Import');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_tab','Sample Tab Menu');
+Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('view_reports','View Raptor reports');
+
+-- new 1702
+Insert into fn_function (function_cd,function_name) values ('edit_notification','User Notification');
+Insert INTO fn_function (function_cd,function_name) values ('getAdminNotifications', 'Admin Notifications');
+Insert INTO fn_function (function_cd,function_name) values ('saveNotification', 'publish notifications');
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_function	(function_cd, function_name) VALUES ('menu_web_analytics', 'Web Analytics');
+-- end new 1707
+
+-- FN_LU_ACTIVITY
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_role','add_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_role','remove_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_user_role','add_user_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_user_role','remove_user_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_role_function','add_role_function');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_role_function','remove_role_function');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('add_child_role','add_child_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('remove_child_role','remove_child_role');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('mobile_login','Mobile Login');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('mobile_logout','Mobile Logout');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('login','Login');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('logout','Logout');
+
+-- new 1610.2
+insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values('guest_login','Guest Login');  
+-- end new 1610.2
+
+-- new 1702
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('tab_access','Tab Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('app_access','App Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values('functional_access','Functional Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('left_menu_access','Left Menu Access');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('search','Search');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('apa','Add Portal Admin');                            
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('dpa','Delete Portal Admin');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('uaa','Update Account Admin');
+Insert into fn_lu_activity (ACTIVITY_CD,ACTIVITY) values ('uu','Update User');
+
+-- FN_LU_MENU_SET
+Insert into fn_lu_menu_set (MENU_SET_CD,MENU_SET_NAME) values ('APP','Application Menu');
+
+-- FN_MENU   Ecomp Portal now uses the left menu entries from fn_menu
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(1,'root',NULL,10,NULL,'menu_home','N','APP','N',NULL);
+                               
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(2,'Home',1,10,'root.applicationsHome','menu_home','Y','APP','N','icon-building-home');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(3,'Application Catalog',1,15,'root.appCatalog','menu_home','Y','APP','N','icon-retail-gallery');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(4,'Widget Catalog',1,20,'root.widgetCatalog','menu_home','Y','APP','N','icon-retail-gallery');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(5,'Admins',1,40,'root.admins','menu_admin','Y','APP','N','icon-content-star');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(6,'Roles',1,45,'root.roles','menu_acc_admin','Y','APP','N','icon-people-groupcollaboration');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(7,'Users',1,50,'root.users','menu_acc_admin','Y','APP','N','icon-people-groupcollaboration');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(8,'Portal Admins',1,60,'root.portalAdmins','menu_admin','Y','APP','N','icon-controls-settingsconnectedactivity');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(9,'Application Onboarding',1,70,'root.applications','menu_app_onboarding','Y','APP','N','icon-content-grid2');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(10,'Widget Onboarding',1,80,'root.widgetOnboarding','menu_admin','Y','APP','N','icon-content-grid2');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(11,'Edit Functional Menu',1,90,'root.functionalMenu','menu_admin','Y','APP','N','icon-misc-pen');
+
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+                               values(12,'User Notifications',1,100,'root.userNotifications','edit_notification','Y','APP','N','icon-controls-settingsconnectedactivity');
+                               
+-- end new 1702
+
+-- new 1707
+Insert into fn_menu(MENU_ID,LABEL,PARENT_ID,SORT_ORDER,ACTION,FUNCTION_CD,ACTIVE_YN,MENU_SET_CD,SEPARATOR_YN,IMAGE_SRC)
+								values (13,'Microservice Onboarding', 1, 110, 'root.microserviceOnboarding', 'menu_admin', 'Y', 'APP', 'N', 'icon-content-grid2');
+Insert into fn_menu (menu_id, label, parent_id, sort_order, action, function_cd, active_yn, menu_set_cd, separator_yn, image_src)
+								values(15,'App Account Management', 1, 130, 'root.accountOnboarding', 'menu_admin', 'Y', 'App', 'N', 'icon-content-grid2');  
+
+-- end new 1707
+
+-- FN_LU_ALERT_METHOD
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('PHONE','Phone');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('FAX','Fax');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('PAGER','Pager');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('EMAIL','Email');
+Insert into fn_lu_alert_method (ALERT_METHOD_CD,ALERT_METHOD) values ('SMS','SMS');
+
+-- FN_LU_PRIORITY
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (10,'Low','Y',10);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (20,'Normal','Y',20);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (30,'High','Y',30);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (40,'Urgent','Y',40);
+Insert into fn_lu_priority (PRIORITY_ID,PRIORITY,ACTIVE_YN,SORT_ORDER) values (50,'Fatal','Y',50);
+
+-- FN_LU_TAB_SET
+Insert into fn_lu_tab_set (TAB_SET_CD,TAB_SET_NAME) values ('APP','Application Tabs');
+
+-- FN_LU_TIMEZONE
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (10,'US/Eastern','US/Eastern');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (20,'US/Central','US/Central');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (30,'US/Mountain','US/Mountain');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (40,'US/Arizona','America/Phoenix');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (50,'US/Pacific','US/Pacific');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (60,'US/Alaska','US/Alaska');
+Insert into fn_lu_timezone (TIMEZONE_ID,TIMEZONE_NAME,TIMEZONE_VALUE) values (70,'US/Hawaii','US/Hawaii');
+
+-- FN_RESTRICTED_URL
+Insert into fn_restricted_url (restricted_url, function_cd) values ('attachment.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('broadcast.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('file_upload.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('job.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('role.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('role_function.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('test.htm','menu_admin');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('async_test.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('chatWindow.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('contact_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('customer_dynamic_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('event.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('event_list.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('mobile_welcome.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map.htm','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('template.jsp','menu_home');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('jbpm_designer.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('jbpm_drools.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('process_job.htm','menu_job_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('profile.htm','menu_profile_create');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor2.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_blob_extract.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_email_attachment.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_search.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('report_list.htm','menu_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gauge.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gmap_controller.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('gmap_frame.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map_download.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('map_grid_search.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_animated_map.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map_2.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('sample_map_3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub1.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub2_link1.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub2_link2.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab2_sub3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab3.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('tab4.htm','menu_tab');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor.htm','view_reports');
+Insert into fn_restricted_url (restricted_url, function_cd) values ('raptor_blob_extract.htm','view_reports');
+
+-- FN_ROLE
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (1,'System Administrator','Y',1,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (16,'Standard User','Y',5,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (999,'Account Administrator','Y',1,NULL,NULL);
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (900,'Restricted App Role','Y','1',NULL,NULL);
+
+-- new 1702
+Insert into fn_role (ROLE_ID, ROLE_NAME, ACTIVE_YN, PRIORITY, APP_ID, APP_ROLE_ID) values (950,'Portal Notification Admin','Y','1',NULL,NULL);
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_role (role_id, role_name, active_yn, priority) VALUES ('1010', 'Usage Analyst', 'Y', '1');
+INSERT INTO fn_role (role_id, role_name, active_yn, priority) VALUES ('2115', 'Portal Usage Analyst', 'Y', '6');
+-- end new 1707
+
+-- FN_ROLE_Composite
+Insert into fn_role_composite (PARENT_ROLE_ID,CHILD_ROLE_ID) values (1,16);
+
+-- FN_ROLE_FUNCTION
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'login');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_admin');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_ajax');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_customer');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_customer_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_feedback');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_help');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_home');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_job');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_job_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_logout');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_notes');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_process');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_profile_import');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_reports');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_sample');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (1,'menu_tab');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'login');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_ajax');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_customer');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_customer_create');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_home');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_logout');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_map');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_profile');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_reports');
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (16,'menu_tab');
+
+-- new 1702
+Insert into fn_role_function (ROLE_ID,FUNCTION_CD) values (950,'edit_notification');
+Insert INTO fn_role_function (ROLE_ID,FUNCTION_CD) values (950, 'getAdminNotifications');
+Insert INTO fn_role_function (ROLE_ID,FUNCTION_CD) values (950, 'saveNotification');
+-- end new 1702
+
+-- new 1707
+INSERT INTO fn_role_function (role_id, function_cd) VALUES ('1010', 'menu_web_analytics');
+INSERT INTO fn_role_function (role_id, function_cd) VALUES ('2115', 'menu_web_analytics');
+-- end new 1707
+
+-- FN_TAB
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB1_S1','Left Tab 1','Sub - Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2_SUB1','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB1','Tab 1','Tab 1 Information','tab1.htm','menu_tab','Y',10,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2','Tab 2','Tab 2 Information','tab2_sub1.htm','menu_tab','Y',20,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB3','Tab 3','Tab 3 Information','tab3.htm','menu_tab','Y',30,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB4','Tab 4','Tab 4 Information','tab4.htm','menu_tab','Y',40,null,'APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB1','Sub Tab 1','Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB2','Sub Tab 2','Sub Tab 2 Information','tab2_sub2.htm','menu_tab','Y',20,'TAB2','APP');
+Insert into fn_tab (TAB_CD,TAB_NAME,TAB_DESCR,ACTION,FUNCTION_CD,ACTIVE_YN,SORT_ORDER,PARENT_TAB_CD,TAB_SET_CD) values ('TAB2_SUB3','Sub Tab 3','Sub Tab 3 Information','tab2_sub3.htm','menu_tab','Y',30,'TAB2','APP');
+
+-- FN_TAB_SELECTED
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB1','tab1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub2');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2','tab2_sub3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB1','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB1_S1','tab2_sub1');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB2','tab2_sub2');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB2_SUB3','tab2_sub3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB3','tab3');
+Insert into fn_tab_selected (SELECTED_TAB_CD,TAB_URI) values ('TAB4','tab4');
+
+commit;
\ No newline at end of file
diff --git a/ecomp-portal-DB-os/PortalDDLMySql_2_5_OS.sql b/ecomp-portal-DB-os/PortalDDLMySql_2_5_OS.sql
new file mode 100644
index 0000000..8099aad
--- /dev/null
+++ b/ecomp-portal-DB-os/PortalDDLMySql_2_5_OS.sql
@@ -0,0 +1,12 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This script adds tables for the OPEN-SOURCE 2.1.0 version of the Portal database.
+-- The COMMON DDL script must be executed first!
+-- ---------------------------------------------------------------------------------------------------------------
+
+SET FOREIGN_KEY_CHECKS=1; 
+
+USE portal;
+
+-- No additional tables required at this time
+
+commit;
diff --git a/ecomp-portal-DB-os/PortalDDLMySql_2_6_OS.sql b/ecomp-portal-DB-os/PortalDDLMySql_2_6_OS.sql
new file mode 100644
index 0000000..8099aad
--- /dev/null
+++ b/ecomp-portal-DB-os/PortalDDLMySql_2_6_OS.sql
@@ -0,0 +1,12 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This script adds tables for the OPEN-SOURCE 2.1.0 version of the Portal database.
+-- The COMMON DDL script must be executed first!
+-- ---------------------------------------------------------------------------------------------------------------
+
+SET FOREIGN_KEY_CHECKS=1; 
+
+USE portal;
+
+-- No additional tables required at this time
+
+commit;
diff --git a/ecomp-portal-DB-os/PortalDMLMySql_2_5_OS.sql b/ecomp-portal-DB-os/PortalDMLMySql_2_5_OS.sql
new file mode 100644
index 0000000..f0359ae
--- /dev/null
+++ b/ecomp-portal-DB-os/PortalDMLMySql_2_5_OS.sql
@@ -0,0 +1,153 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This is the default data for the 2.1.0 Version of Portal database called portal - the Opensource project
+-- First run the common Opensource DML; then run this file to add The Opensource only data
+USE portal;
+
+set foreign_key_checks=1;
+
+--- update fn_menu for roles
+UPDATE fn_menu
+SET function_cd = 'menu_acc_admin'
+WHERE  label = 'Roles';
+
+--- update fn_menu for users
+UPDATE fn_menu
+SET function_cd = 'menu_acc_admin'
+WHERE label = 'Users';
+
+
+-- fn_user
+Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS,is_system_user) values (1,NULL,NULL,'Demo',NULL,'User',NULL,NULL,NULL,'demo@openecomp.org',NULL,NULL,NULL,'demo',NULL,'demo','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,'N');
+
+-- fn_appokYTaDrhzibcbGVq5mjkVQ==
+Insert INTO fn_app (APP_ID, APP_NAME, APP_IMAGE_URL, APP_DESCRIPTION, APP_NOTES, APP_URL, APP_ALTERNATE_URL, APP_REST_ENDPOINT, ML_APP_NAME, ML_APP_ADMIN_ID, MOTS_ID, APP_PASSWORD, OPEN, ENABLED, THUMBNAIL, APP_USERNAME, UEB_KEY, UEB_SECRET, UEB_TOPIC_NAME, APP_TYPE, AUTH_CENTRAL, AUTH_NAMESPACE) values (1,'Default','assets/images/tmp/portal1.png','Some Default Description','Some Default Note','http://localhost','http://localhost','http://localhost:8080/ecompportal','EcompPortal','',NULL,'dR2NABMkxPaFbIbym87ZwQ==','N','N',NULL,'m00468@portal.onap.org','EkrqsjQqZt4ZrPh6',NULL,NULL,1,'Y',NULL);
+
+-- fn_user_role
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,1,NULL,1);
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,950,NULL,1);
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,999,NULL,1);
+
+INSERT INTO cr_report 
+	(rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+	VALUES  (
+	15,     
+	'Application Usage Report Wid', 
+	'',    
+	'Y',       
+	'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<customReport pageSize="200" reportType="Linear">\n    <reportName>Application Usage Report Wid</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>BarChart3D</chartType>\n    <chartWidth>700</chartWidth>\n    <chartHeight>500</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>false</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n	l.date audit_date, \n	app_id app_id, \n	IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n	IFNULL(r.ct,0) ct \nfrom\n(\n	select a.Date, app_id, app_name\n	from (\n	    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n	    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n	    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n	    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n	) a, \n	(\n		SELECT  \n			app_id, app_name\n		from\n		(\n			select @rn := @rn+1 AS rowId, app_id, app_name from \n				(\n					select app_id, app_name, ct from \n					(\n						select affected_record_id, count(*) ct\n						from fn_audit_log l\n						where audit_date &gt; date_add( curdate(), interval -6 day)\n						and affected_record_id not in ( 1, -1)\n						and activity_cd in (\'tab_access\', \'app_access\')\n						and user_id = [USER_ID]\n						group by affected_record_id\n					) a, fn_app f\n					where a.affected_record_id = f.app_id\n					order by ct desc \n				) b,\n				(SELECT @rn := 0) t2\n		) mm where rowId &lt;= 4\n	)b\n	where a.Date between date_add( curdate(), interval -6 day) and  curdate()\n) l left outer join\n(\n	select app_name,  DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n	where user_id = [USER_ID]\n	and audit_date &gt; date_add( curdate(), interval -6 day)\n	and activity_cd in (\'tab_access\', \'app_access\')\n	and a.affected_record_id = b.app_id\n	and b.app_id &lt;&gt; 1\n	and b.app_id in \n	(\n		SELECT  \n			app_id\n		from\n		(\n			select @rn := @rn+1 AS rowId, app_id from \n				(\n					select app_id, ct from \n					(\n						select affected_record_id app_id, count(*) ct\n						from fn_audit_log \n						where audit_date &gt; date_add( curdate(), interval -6 day)\n						and affected_record_id not in ( 1, -1)\n						and activity_cd in (\'tab_access\', \'app_access\')\n						and user_id = [USER_ID]\n						group by affected_record_id\n					) a\n					order by ct desc \n				) b,\n				(SELECT @rn := 0) t2\n		) mm \n	)\n	group by app_name,  DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId="du0">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId="audit_date">\n                    <tableId>du0</tableId>\n                    <dbColName>l.date</dbColName>\n                    <colName>l.date</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n                <dataColumn colId="app_id">\n                    <tableId>du0</tableId>\n                    <dbColName>app_id</dbColName>\n                    <colName>app_id</colName>\n                    <displayName>app_id</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <dbColType>VARCHAR2</dbColType>\n                </dataColumn>\n                <dataColumn colId="app_name">\n                    <tableId>du0</tableId>\n                    <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n                    <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n                    <displayName>app_name</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <chartSeq>2</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>true</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n                <dataColumn colId="ct">\n                    <tableId>du0</tableId>\n                    <dbColName>IFNULL(r.ct,0)</dbColName>\n                    <colName>IFNULL(r.ct,0)</colName>\n                    <displayName>ct</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>4</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>up90</labelAngle>\n        <rangeAxisUpperLimit></rangeAxisUpperLimit>\n        <rangeAxisLowerLimit></rangeAxisLowerLimit>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <logScale>false</logScale>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n', 
+	1, 
+	now(), 
+	1, 
+	now(), 
+	'', 
+	'N', 
+	(select user_id from fn_user where org_user_id = 'demo'), 
+	NULL, 
+	'N', 
+	'N'
+	);
+
+-- new for 1707
+INSERT INTO cr_report 
+	(rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+	VALUES  (
+	18,     
+	'Application Usage bar Wid',
+	'',    
+	'Y',       
+	'<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n    <reportName>Application Usage Line Wid</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>TimeSeriesChart</chartType>\n    <chartMultiSeries>N</chartMultiSeries>\n    <chartWidth>700</chartWidth>\n    <chartHeight>300</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>false</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n	l.date audit_date, \n	IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n	IFNULL(r.ct,0) ct \nfrom\n(\n	select a.Date, app_id, app_name\n	from (\n	    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n	    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n	    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n	    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n	) a, \n	(\n		SELECT  \n			app_id, app_name\n		from\n		(\n			select @rn := @rn+1 AS rowId, app_id, app_name from \n				(\n					select app_id, app_name, ct from \n					(\n						select affected_record_id, count(*) ct\n						from fn_audit_log l\n						where audit_date &gt; date_add( curdate(), interval -30 day)\n						and affected_record_id not in ( 1, -1)\n						and activity_cd in (\'tab_access\', \'app_access\')\n						and user_id = [USER_ID]\n						group by affected_record_id\n					) a, fn_app f\n					where a.affected_record_id = f.app_id\n					order by ct desc \n				) b,\n				(SELECT @rn := 0) t2\n		) mm where rowId &lt;= 4\n	)b\n	where a.Date between date_add( curdate(), interval -30 day) and  curdate()\n) l left outer join\n(\n	select app_name,  DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n	where user_id = [USER_ID]\n	and audit_date &gt; date_add( curdate(), interval -30 day)\n	and activity_cd in (\'tab_access\', \'app_access\')\n	and a.affected_record_id = b.app_id\n	and b.app_id &lt;&gt; 1\n	and b.app_id in \n	(\n		SELECT  \n			app_id\n		from\n		(\n			select @rn := @rn+1 AS rowId, app_id from \n				(\n					select app_id, ct from \n					(\n						select affected_record_id app_id, count(*) ct\n						from fn_audit_log \n						where audit_date &gt; date_add( curdate(), interval -30 day)\n						and affected_record_id not in ( 1, -1)\n						and activity_cd in (\'tab_access\', \'app_access\')\n						and user_id = [USER_ID]\n						group by affected_record_id\n					) a\n					order by ct desc \n				) b,\n				(SELECT @rn := 0) t2\n		) mm \n	)\n	group by app_name,  DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId=\"du0\">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId=\"audit_date\">\n                    <tableId>du0</tableId>\n                    <dbColName>l.date</dbColName>\n                    <colName>l.date</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"app_name\">\n                    <tableId>du0</tableId>\n                    <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n                    <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n                    <displayName>app_name</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>2</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>true</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"ct\">\n                    <tableId>du0</tableId>\n                    <dbColName>IFNULL(r.ct,0)</dbColName>\n                    <colName>IFNULL(r.ct,0)</colName>\n                    <displayName>ct</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>down45</labelAngle>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <timeSeriesRender>line</timeSeriesRender>\n        <multiSeries>false</multiSeries>\n        <showXAxisLabel>false</showXAxisLabel>\n        <addXAxisTickers>false</addXAxisTickers>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',
+	1, 
+	now(), 
+	1, 
+	now(), 
+	'', 
+	'N', 
+	(select user_id from fn_user where org_user_id = 'demo'), 
+	NULL, 
+	'N', 
+	'N'
+	);
+	
+INSERT INTO cr_report 
+	(rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+	VALUES  (
+	20,     
+	'Average time spend on portal',
+	'',    
+	'Y',       
+	'<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n    <reportName>Average time spend on portal</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>TimeSeriesChart</chartType>\n    <chartMultiSeries>N</chartMultiSeries>\n    <chartWidth>700</chartWidth>\n    <chartHeight>300</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>true</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n	d.dat audit_date, \n	\'# of Minutes\' app, \n	coalesce(diff, null, 0) mins \nfrom\n(\n	select * from\n	(\n	select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as dat\n	from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n	cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n	cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c \n	) d where d.dat between date_add( curdate(), interval -30 day) and  curdate()\n) d left outer join\n(\n	select dat, mi, mx, TIMESTAMPDIFF(MINUTE, coalesce(mi, null, 0), coalesce(mx, null, 0)) + 30  diff\n	from\n	(\n		select DATE(audit_date) dat, coalesce(min(audit_date), null, 0) mi, coalesce(max(audit_date), null, 0) mx\n		from fn_audit_log \n		where user_id = [USER_ID] and DATE(audit_date) between CURDATE()-300 and CURDATE()\n		group by DATE(audit_date)\n	) a\n) a\non a.dat = d.dat\norder by 1</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId=\"du0\">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId=\"audit_date\">\n                    <tableId>du0</tableId>\n                    <dbColName>d.dat</dbColName>\n                    <colName>d.dat</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"app\">\n                    <tableId>du0</tableId>\n                    <dbColName>\'# of Minutes\'</dbColName>\n                    <colName>\'# of Minutes\'</colName>\n                    <displayName>app</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <chartSeries>true</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                </dataColumn>\n                <dataColumn colId=\"mins\">\n                    <tableId>du0</tableId>\n                    <dbColName>coalesce(diff, null, 0)</dbColName>\n                    <colName>coalesce(diff, null, 0)</colName>\n                    <displayName>mins</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>down45</labelAngle>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <timeSeriesRender>line</timeSeriesRender>\n        <multiSeries>false</multiSeries>\n        <showXAxisLabel>false</showXAxisLabel>\n        <addXAxisTickers>false</addXAxisTickers>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',
+	1, 
+	now(), 
+	1, 
+	now(), 
+	'', 
+	'N', 
+	(select user_id from fn_user where org_user_id = 'demo'), 
+	NULL, 
+	'N', 
+	'N'
+	);
+    
+    
+insert into ep_app_function (app_id, function_cd, function_name) values
+(1,	'url|edit_notification|*',	'User Notification'),
+(1,	'url|getAdminNotifications|*',	'Admin Notifications'),
+(1,	'url|login|*',	'Login'),
+(1,	'menu|menu_admin|*','Admin Menu'),
+(1,'menu|menu_home|*','Home Menu'),
+(1,	'menu|menu_logout|*','Logout Menu'),
+(1,	'menu|menu_web_analytics|*','Web Analytics'),
+(1,	'url|saveNotification|*','publish notifications'),
+(1,	'url|url_role.htm|*','role page'),
+(1,	'url|url_welcome.htm|*','welcome page'),
+(1, 'menu|menu_acc_admin|*','Admin Account Menu'),
+(1,'url|addWebAnalyticsReport|*','Add Web Analytics Report'), 
+(1,'url|appsFullList|*','Apps Full List'),
+(1,'url|centralizedApps|*','Centralized Apps'),
+(1,'url|functionalMenu|*','Functional Menu'),
+(1,'url|getAllWebAnalytics|*','Get All Web Analytics'),
+(1,'url|getFunctionalMenuRole|*','Get Functional Menu Role'),
+(1,'url|getNotificationAppRoles|*','Get Notification App Roles'),
+(1,'url|getUserAppsWebAnalytics|*','Get User Apps Web Analytics'),
+(1,'url|getUserJourneyAnalyticsReport|*','Get User Journey Report'),
+(1,'url|get_roles%2f%2a|*','getRolesOfApp'),
+(1,'url|get_role_functions%2f%2a|*','Get Role Functions'),
+(1,'url|notification_code|*','Notification Code'),
+(1,'url|role_function_list%2fsaveRoleFunction%2f%2a|*','Save Role Function'),
+(1,'url|syncRoles|*','SyncRoles'),
+(1,'url|userAppRoles|*','userAppRoles'),
+(1,'url|userApps|*','User Apps')
+;
+
+
+insert into ep_app_role_function (id, app_id, role_id, function_cd, role_app_id) values
+(1, 1, 1, 'url|login|*', null),
+(2, 1, 1, 'menu|menu_admin|*', null),
+(3, 1, 1, 'menu|menu_home|*', null),
+(4, 1, 1, 'menu|menu_logout|*', null),
+(5, 1, 16, 'url|login|*', null),
+(6, 1, 16, 'menu|menu_home|*', null),
+(7, 1, 16, 'menu|menu_logout|*', null),
+(8, 1, 950, 'url|edit_notification|*', null),
+(9, 1, 950, 'url|getAdminNotifications|*', null),
+(10,1, 950, 'url|saveNotification|*', null),
+(11,1, 999,'url|userAppRoles|*', null),
+(12,1, 999, 'url|getAdminNotifications|*', null),
+(13,1, 999,'url|userApps|*', null),
+(14,1, 1010, 'menu|menu_web_analytics|*', null),
+(15, 1, 2115, 'menu|menu_web_analytics|*', null),
+(16, 1 , 1, 'menu|menu_acc_admin|*' , null),
+(17, 1 , 999 ,'menu|menu_acc_admin|*', null),
+(18,1,999,'url|centralizedApps|*', null),
+(19,1,999,'url|getAllWebAnalytics|*', null),
+(20,1,999,'url|getFunctionalMenuRole|*', null),
+(21,1,999,'url|getNotificationAppRoles|*', null),
+(22,1,999,'url|getUserAppsWebAnalytics|*', null),
+(23,1,999,'url|getUserJourneyAnalyticsReport|*', null),
+(24,1,999,'url|get_roles%2f%2a|*', null),
+(25,1,999,'url|get_role_functions%2f%2a|*', null),
+(26,1,999,'url|notification_code|*', null),
+(27,1,999,'url|role_function_list%2fsaveRoleFunction%2f%2a|*', null),
+(28,1,999,'url|syncRoles|*', null);
+
+commit;    
\ No newline at end of file
diff --git a/ecomp-portal-DB-os/PortalDMLMySql_2_6_OS.sql b/ecomp-portal-DB-os/PortalDMLMySql_2_6_OS.sql
new file mode 100644
index 0000000..f0359ae
--- /dev/null
+++ b/ecomp-portal-DB-os/PortalDMLMySql_2_6_OS.sql
@@ -0,0 +1,153 @@
+-- ---------------------------------------------------------------------------------------------------------------
+-- This is the default data for the 2.1.0 Version of Portal database called portal - the Opensource project
+-- First run the common Opensource DML; then run this file to add The Opensource only data
+USE portal;
+
+set foreign_key_checks=1;
+
+--- update fn_menu for roles
+UPDATE fn_menu
+SET function_cd = 'menu_acc_admin'
+WHERE  label = 'Roles';
+
+--- update fn_menu for users
+UPDATE fn_menu
+SET function_cd = 'menu_acc_admin'
+WHERE label = 'Users';
+
+
+-- fn_user
+Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS,is_system_user) values (1,NULL,NULL,'Demo',NULL,'User',NULL,NULL,NULL,'demo@openecomp.org',NULL,NULL,NULL,'demo',NULL,'demo','4Gl6WL1bmwviYm+XZa6pS1vC0qKXWtn9wcZWdLx61L0=','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,'N');
+
+-- fn_appokYTaDrhzibcbGVq5mjkVQ==
+Insert INTO fn_app (APP_ID, APP_NAME, APP_IMAGE_URL, APP_DESCRIPTION, APP_NOTES, APP_URL, APP_ALTERNATE_URL, APP_REST_ENDPOINT, ML_APP_NAME, ML_APP_ADMIN_ID, MOTS_ID, APP_PASSWORD, OPEN, ENABLED, THUMBNAIL, APP_USERNAME, UEB_KEY, UEB_SECRET, UEB_TOPIC_NAME, APP_TYPE, AUTH_CENTRAL, AUTH_NAMESPACE) values (1,'Default','assets/images/tmp/portal1.png','Some Default Description','Some Default Note','http://localhost','http://localhost','http://localhost:8080/ecompportal','EcompPortal','',NULL,'dR2NABMkxPaFbIbym87ZwQ==','N','N',NULL,'m00468@portal.onap.org','EkrqsjQqZt4ZrPh6',NULL,NULL,1,'Y',NULL);
+
+-- fn_user_role
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,1,NULL,1);
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,950,NULL,1);
+Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,999,NULL,1);
+
+INSERT INTO cr_report 
+	(rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+	VALUES  (
+	15,     
+	'Application Usage Report Wid', 
+	'',    
+	'Y',       
+	'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<customReport pageSize="200" reportType="Linear">\n    <reportName>Application Usage Report Wid</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>BarChart3D</chartType>\n    <chartWidth>700</chartWidth>\n    <chartHeight>500</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>false</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n	l.date audit_date, \n	app_id app_id, \n	IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n	IFNULL(r.ct,0) ct \nfrom\n(\n	select a.Date, app_id, app_name\n	from (\n	    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n	    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n	    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n	    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n	) a, \n	(\n		SELECT  \n			app_id, app_name\n		from\n		(\n			select @rn := @rn+1 AS rowId, app_id, app_name from \n				(\n					select app_id, app_name, ct from \n					(\n						select affected_record_id, count(*) ct\n						from fn_audit_log l\n						where audit_date &gt; date_add( curdate(), interval -6 day)\n						and affected_record_id not in ( 1, -1)\n						and activity_cd in (\'tab_access\', \'app_access\')\n						and user_id = [USER_ID]\n						group by affected_record_id\n					) a, fn_app f\n					where a.affected_record_id = f.app_id\n					order by ct desc \n				) b,\n				(SELECT @rn := 0) t2\n		) mm where rowId &lt;= 4\n	)b\n	where a.Date between date_add( curdate(), interval -6 day) and  curdate()\n) l left outer join\n(\n	select app_name,  DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n	where user_id = [USER_ID]\n	and audit_date &gt; date_add( curdate(), interval -6 day)\n	and activity_cd in (\'tab_access\', \'app_access\')\n	and a.affected_record_id = b.app_id\n	and b.app_id &lt;&gt; 1\n	and b.app_id in \n	(\n		SELECT  \n			app_id\n		from\n		(\n			select @rn := @rn+1 AS rowId, app_id from \n				(\n					select app_id, ct from \n					(\n						select affected_record_id app_id, count(*) ct\n						from fn_audit_log \n						where audit_date &gt; date_add( curdate(), interval -6 day)\n						and affected_record_id not in ( 1, -1)\n						and activity_cd in (\'tab_access\', \'app_access\')\n						and user_id = [USER_ID]\n						group by affected_record_id\n					) a\n					order by ct desc \n				) b,\n				(SELECT @rn := 0) t2\n		) mm \n	)\n	group by app_name,  DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId="du0">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId="audit_date">\n                    <tableId>du0</tableId>\n                    <dbColName>l.date</dbColName>\n                    <colName>l.date</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n                <dataColumn colId="app_id">\n                    <tableId>du0</tableId>\n                    <dbColName>app_id</dbColName>\n                    <colName>app_id</colName>\n                    <displayName>app_id</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <dbColType>VARCHAR2</dbColType>\n                </dataColumn>\n                <dataColumn colId="app_name">\n                    <tableId>du0</tableId>\n                    <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n                    <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n                    <displayName>app_name</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <chartSeq>2</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>true</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n                <dataColumn colId="ct">\n                    <tableId>du0</tableId>\n                    <dbColName>IFNULL(r.ct,0)</dbColName>\n                    <colName>IFNULL(r.ct,0)</colName>\n                    <displayName>ct</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>4</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>up90</labelAngle>\n        <rangeAxisUpperLimit></rangeAxisUpperLimit>\n        <rangeAxisLowerLimit></rangeAxisLowerLimit>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <logScale>false</logScale>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n', 
+	1, 
+	now(), 
+	1, 
+	now(), 
+	'', 
+	'N', 
+	(select user_id from fn_user where org_user_id = 'demo'), 
+	NULL, 
+	'N', 
+	'N'
+	);
+
+-- new for 1707
+INSERT INTO cr_report 
+	(rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+	VALUES  (
+	18,     
+	'Application Usage bar Wid',
+	'',    
+	'Y',       
+	'<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n    <reportName>Application Usage Line Wid</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>TimeSeriesChart</chartType>\n    <chartMultiSeries>N</chartMultiSeries>\n    <chartWidth>700</chartWidth>\n    <chartHeight>300</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>false</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n	l.date audit_date, \n	IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name) app_name, \n	IFNULL(r.ct,0) ct \nfrom\n(\n	select a.Date, app_id, app_name\n	from (\n	    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date\n	    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n	    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n	    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c\n	) a, \n	(\n		SELECT  \n			app_id, app_name\n		from\n		(\n			select @rn := @rn+1 AS rowId, app_id, app_name from \n				(\n					select app_id, app_name, ct from \n					(\n						select affected_record_id, count(*) ct\n						from fn_audit_log l\n						where audit_date &gt; date_add( curdate(), interval -30 day)\n						and affected_record_id not in ( 1, -1)\n						and activity_cd in (\'tab_access\', \'app_access\')\n						and user_id = [USER_ID]\n						group by affected_record_id\n					) a, fn_app f\n					where a.affected_record_id = f.app_id\n					order by ct desc \n				) b,\n				(SELECT @rn := 0) t2\n		) mm where rowId &lt;= 4\n	)b\n	where a.Date between date_add( curdate(), interval -30 day) and  curdate()\n) l left outer join\n(\n	select app_name,  DATE(audit_date) audit_date_1 ,count(*) ct from fn_audit_log a, fn_app b\n	where user_id = [USER_ID]\n	and audit_date &gt; date_add( curdate(), interval -30 day)\n	and activity_cd in (\'tab_access\', \'app_access\')\n	and a.affected_record_id = b.app_id\n	and b.app_id &lt;&gt; 1\n	and b.app_id in \n	(\n		SELECT  \n			app_id\n		from\n		(\n			select @rn := @rn+1 AS rowId, app_id from \n				(\n					select app_id, ct from \n					(\n						select affected_record_id app_id, count(*) ct\n						from fn_audit_log \n						where audit_date &gt; date_add( curdate(), interval -30 day)\n						and affected_record_id not in ( 1, -1)\n						and activity_cd in (\'tab_access\', \'app_access\')\n						and user_id = [USER_ID]\n						group by affected_record_id\n					) a\n					order by ct desc \n				) b,\n				(SELECT @rn := 0) t2\n		) mm \n	)\n	group by app_name,  DATE(audit_date)\n) r\non l.Date = r.audit_date_1\nand l.app_name = r.app_name</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId=\"du0\">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId=\"audit_date\">\n                    <tableId>du0</tableId>\n                    <dbColName>l.date</dbColName>\n                    <colName>l.date</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"app_name\">\n                    <tableId>du0</tableId>\n                    <dbColName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</dbColName>\n                    <colName>IF(CHAR_LENGTH(l.app_name) &gt;14, CONCAT(CONCAT(SUBSTR(l.app_name,1,7),\'...\'), SUBSTR(l.app_name, CHAR_LENGTH(l.app_name)-3,CHAR_LENGTH(l.app_name))) , l.app_name)</colName>\n                    <displayName>app_name</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>2</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>true</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"ct\">\n                    <tableId>du0</tableId>\n                    <dbColName>IFNULL(r.ct,0)</dbColName>\n                    <colName>IFNULL(r.ct,0)</colName>\n                    <displayName>ct</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>down45</labelAngle>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <timeSeriesRender>line</timeSeriesRender>\n        <multiSeries>false</multiSeries>\n        <showXAxisLabel>false</showXAxisLabel>\n        <addXAxisTickers>false</addXAxisTickers>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',
+	1, 
+	now(), 
+	1, 
+	now(), 
+	'', 
+	'N', 
+	(select user_id from fn_user where org_user_id = 'demo'), 
+	NULL, 
+	'N', 
+	'N'
+	);
+	
+INSERT INTO cr_report 
+	(rep_id, title, descr, public_yn, report_xml, create_id, create_date, maint_id, maint_date, menu_id, menu_approved_yn, owner_id, folder_id, dashboard_type_yn, dashboard_yn) 
+	VALUES  (
+	20,     
+	'Average time spend on portal',
+	'',    
+	'Y',       
+	'<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<customReport pageSize=\"200\" reportType=\"Linear\">\n    <reportName>Average time spend on portal</reportName>\n    <reportDescr></reportDescr>\n    <dbInfo>local</dbInfo>\n    <dbType>mysql</dbType>\n    <chartType>TimeSeriesChart</chartType>\n    <chartMultiSeries>N</chartMultiSeries>\n    <chartWidth>700</chartWidth>\n    <chartHeight>300</chartHeight>\n    <showChartTitle>false</showChartTitle>\n    <public>true</public>\n    <hideFormFieldAfterRun>false</hideFormFieldAfterRun>\n    <createId>27</createId>\n    <createDate>2017-01-28-05:00</createDate>\n    <reportSQL>SELECT \n	d.dat audit_date, \n	\'# of Minutes\' app, \n	coalesce(diff, null, 0) mins \nfrom\n(\n	select * from\n	(\n	select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as dat\n	from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a\n	cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b\n	cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c \n	) d where d.dat between date_add( curdate(), interval -30 day) and  curdate()\n) d left outer join\n(\n	select dat, mi, mx, TIMESTAMPDIFF(MINUTE, coalesce(mi, null, 0), coalesce(mx, null, 0)) + 30  diff\n	from\n	(\n		select DATE(audit_date) dat, coalesce(min(audit_date), null, 0) mi, coalesce(max(audit_date), null, 0) mx\n		from fn_audit_log \n		where user_id = [USER_ID] and DATE(audit_date) between CURDATE()-300 and CURDATE()\n		group by DATE(audit_date)\n	) a\n) a\non a.dat = d.dat\norder by 1</reportSQL>\n    <reportTitle></reportTitle>\n    <reportSubTitle></reportSubTitle>\n    <reportHeader></reportHeader>\n    <frozenColumns>0</frozenColumns>\n    <emptyMessage>Your Search didn\'t yield any results.</emptyMessage>\n    <dataGridAlign>left</dataGridAlign>\n    <reportFooter></reportFooter>\n    <numFormCols>1</numFormCols>\n    <displayOptions>NNNNNNN</displayOptions>\n    <dataContainerHeight>100</dataContainerHeight>\n    <dataContainerWidth>100</dataContainerWidth>\n    <allowSchedule>N</allowSchedule>\n    <multiGroupColumn>N</multiGroupColumn>\n    <topDown>N</topDown>\n    <sizedByContent>N</sizedByContent>\n    <comment>N|</comment>\n    <dataSourceList>\n        <dataSource tableId=\"du0\">\n            <tableName>DUAL</tableName>\n            <tablePK></tablePK>\n            <displayName>DUAL</displayName>\n            <dataColumnList>\n                <dataColumn colId=\"audit_date\">\n                    <tableId>du0</tableId>\n                    <dbColName>d.dat</dbColName>\n                    <colName>d.dat</colName>\n                    <displayName>audit_date_1</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>1</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>LEGEND</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartSeries>false</chartSeries>\n                    <isRangeAxisFilled>false</isRangeAxisFilled>\n                    <drillinPoPUp>false</drillinPoPUp>\n                    <dbColType>VARCHAR2</dbColType>\n                    <enhancedPagination>false</enhancedPagination>\n                </dataColumn>\n                <dataColumn colId=\"app\">\n                    <tableId>du0</tableId>\n                    <dbColName>\'# of Minutes\'</dbColName>\n                    <colName>\'# of Minutes\'</colName>\n                    <displayName>app</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>2</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <chartSeries>true</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                </dataColumn>\n                <dataColumn colId=\"mins\">\n                    <tableId>du0</tableId>\n                    <dbColName>coalesce(diff, null, 0)</dbColName>\n                    <colName>coalesce(diff, null, 0)</colName>\n                    <displayName>mins</displayName>\n                    <displayWidth>10</displayWidth>\n                    <displayWidthInPxls>nullpxpx</displayWidthInPxls>\n                    <displayAlignment>Left</displayAlignment>\n                    <orderSeq>3</orderSeq>\n                    <visible>true</visible>\n                    <calculated>true</calculated>\n                    <colType>VARCHAR2</colType>\n                    <groupBreak>false</groupBreak>\n                    <colOnChart>0</colOnChart>\n                    <chartSeq>1</chartSeq>\n                    <chartColor></chartColor>\n                    <chartLineType></chartLineType>\n                    <chartSeries>false</chartSeries>\n                    <dbColType>VARCHAR2</dbColType>\n                    <chartGroup></chartGroup>\n                    <yAxis></yAxis>\n                </dataColumn>\n            </dataColumnList>\n        </dataSource>\n    </dataSourceList>\n    <reportInNewWindow>false</reportInNewWindow>\n    <displayFolderTree>false</displayFolderTree>\n    <maxRowsInExcelDownload>500</maxRowsInExcelDownload>\n    <chartAdditionalOptions>\n        <chartOrientation>vertical</chartOrientation>\n        <hidechartLegend>N</hidechartLegend>\n        <legendPosition>bottom</legendPosition>\n        <labelAngle>down45</labelAngle>\n        <animate>true</animate>\n        <animateAnimatedChart>true</animateAnimatedChart>\n        <stacked>true</stacked>\n        <barControls>false</barControls>\n        <xAxisDateType>false</xAxisDateType>\n        <lessXaxisTickers>false</lessXaxisTickers>\n        <timeAxis>true</timeAxis>\n        <timeSeriesRender>line</timeSeriesRender>\n        <multiSeries>false</multiSeries>\n        <showXAxisLabel>false</showXAxisLabel>\n        <addXAxisTickers>false</addXAxisTickers>\n        <topMargin>30</topMargin>\n        <bottomMargin>50</bottomMargin>\n        <rightMargin>60</rightMargin>\n        <leftMargin>100</leftMargin>\n    </chartAdditionalOptions>\n    <folderId>NULL</folderId>\n    <drillURLInPoPUpPresent>false</drillURLInPoPUpPresent>\n    <isOneTimeScheduleAllowed>N</isOneTimeScheduleAllowed>\n    <isHourlyScheduleAllowed>N</isHourlyScheduleAllowed>\n    <isDailyScheduleAllowed>N</isDailyScheduleAllowed>\n    <isDailyMFScheduleAllowed>N</isDailyMFScheduleAllowed>\n    <isWeeklyScheduleAllowed>N</isWeeklyScheduleAllowed>\n    <isMonthlyScheduleAllowed>N</isMonthlyScheduleAllowed>\n</customReport>\n',
+	1, 
+	now(), 
+	1, 
+	now(), 
+	'', 
+	'N', 
+	(select user_id from fn_user where org_user_id = 'demo'), 
+	NULL, 
+	'N', 
+	'N'
+	);
+    
+    
+insert into ep_app_function (app_id, function_cd, function_name) values
+(1,	'url|edit_notification|*',	'User Notification'),
+(1,	'url|getAdminNotifications|*',	'Admin Notifications'),
+(1,	'url|login|*',	'Login'),
+(1,	'menu|menu_admin|*','Admin Menu'),
+(1,'menu|menu_home|*','Home Menu'),
+(1,	'menu|menu_logout|*','Logout Menu'),
+(1,	'menu|menu_web_analytics|*','Web Analytics'),
+(1,	'url|saveNotification|*','publish notifications'),
+(1,	'url|url_role.htm|*','role page'),
+(1,	'url|url_welcome.htm|*','welcome page'),
+(1, 'menu|menu_acc_admin|*','Admin Account Menu'),
+(1,'url|addWebAnalyticsReport|*','Add Web Analytics Report'), 
+(1,'url|appsFullList|*','Apps Full List'),
+(1,'url|centralizedApps|*','Centralized Apps'),
+(1,'url|functionalMenu|*','Functional Menu'),
+(1,'url|getAllWebAnalytics|*','Get All Web Analytics'),
+(1,'url|getFunctionalMenuRole|*','Get Functional Menu Role'),
+(1,'url|getNotificationAppRoles|*','Get Notification App Roles'),
+(1,'url|getUserAppsWebAnalytics|*','Get User Apps Web Analytics'),
+(1,'url|getUserJourneyAnalyticsReport|*','Get User Journey Report'),
+(1,'url|get_roles%2f%2a|*','getRolesOfApp'),
+(1,'url|get_role_functions%2f%2a|*','Get Role Functions'),
+(1,'url|notification_code|*','Notification Code'),
+(1,'url|role_function_list%2fsaveRoleFunction%2f%2a|*','Save Role Function'),
+(1,'url|syncRoles|*','SyncRoles'),
+(1,'url|userAppRoles|*','userAppRoles'),
+(1,'url|userApps|*','User Apps')
+;
+
+
+insert into ep_app_role_function (id, app_id, role_id, function_cd, role_app_id) values
+(1, 1, 1, 'url|login|*', null),
+(2, 1, 1, 'menu|menu_admin|*', null),
+(3, 1, 1, 'menu|menu_home|*', null),
+(4, 1, 1, 'menu|menu_logout|*', null),
+(5, 1, 16, 'url|login|*', null),
+(6, 1, 16, 'menu|menu_home|*', null),
+(7, 1, 16, 'menu|menu_logout|*', null),
+(8, 1, 950, 'url|edit_notification|*', null),
+(9, 1, 950, 'url|getAdminNotifications|*', null),
+(10,1, 950, 'url|saveNotification|*', null),
+(11,1, 999,'url|userAppRoles|*', null),
+(12,1, 999, 'url|getAdminNotifications|*', null),
+(13,1, 999,'url|userApps|*', null),
+(14,1, 1010, 'menu|menu_web_analytics|*', null),
+(15, 1, 2115, 'menu|menu_web_analytics|*', null),
+(16, 1 , 1, 'menu|menu_acc_admin|*' , null),
+(17, 1 , 999 ,'menu|menu_acc_admin|*', null),
+(18,1,999,'url|centralizedApps|*', null),
+(19,1,999,'url|getAllWebAnalytics|*', null),
+(20,1,999,'url|getFunctionalMenuRole|*', null),
+(21,1,999,'url|getNotificationAppRoles|*', null),
+(22,1,999,'url|getUserAppsWebAnalytics|*', null),
+(23,1,999,'url|getUserJourneyAnalyticsReport|*', null),
+(24,1,999,'url|get_roles%2f%2a|*', null),
+(25,1,999,'url|get_role_functions%2f%2a|*', null),
+(26,1,999,'url|notification_code|*', null),
+(27,1,999,'url|role_function_list%2fsaveRoleFunction%2f%2a|*', null),
+(28,1,999,'url|syncRoles|*', null);
+
+commit;    
\ No newline at end of file
diff --git a/ecomp-portal-FE-common/client/app/services/users/users.service.js b/ecomp-portal-FE-common/client/app/services/users/users.service.js
index 045c674..ed95bdd 100644
--- a/ecomp-portal-FE-common/client/app/services/users/users.service.js
+++ b/ecomp-portal-FE-common/client/app/services/users/users.service.js
@@ -201,7 +201,7 @@
                 // this.$log.debug('getUserAppRoles response: ', JSON.stringify(res))
                 // If response comes back as a redirected HTML page which IS NOT a success
                 if (this.utilsService.isValidJSON(res)== false ||  res.data.httpStatusCode == '500' || res.data.status == 'ERROR') {
-                    deferred.reject('UsersService::updateUserAppRoles: Failed'  + res.data.message);
+                    deferred.reject(' Error:'  + res.data.message);
                 } else {
                     // this.$log.info('UsersService::updateUserAppRoles: Succeeded');
                     deferred.resolve(res.data);
@@ -283,4 +283,4 @@
     }
     UsersService.$inject = ['$q', '$log', '$http', 'conf','uuid4', 'utilsService'];
     angular.module('ecompApp').service('usersService', UsersService)
-})();
+})();
\ No newline at end of file
diff --git a/ecomp-portal-FE-common/client/app/views/header/header.less b/ecomp-portal-FE-common/client/app/views/header/header.less
index 8d275a4..2da81f3 100644
--- a/ecomp-portal-FE-common/client/app/views/header/header.less
+++ b/ecomp-portal-FE-common/client/app/views/header/header.less
@@ -40,6 +40,12 @@
   z-index: 999;
 }
 
+.language {
+    float: left;
+    margin-top: -8px;
+}
+
+
 .logo-image {
           .portal-logo;
           display: inline-block;
diff --git a/ecomp-portal-FE-common/client/app/views/header/header.tpl.html b/ecomp-portal-FE-common/client/app/views/header/header.tpl.html
index ed240b9..d0a87d7 100644
--- a/ecomp-portal-FE-common/client/app/views/header/header.tpl.html
+++ b/ecomp-portal-FE-common/client/app/views/header/header.tpl.html
@@ -36,235 +36,287 @@
   
   -->
 <div class="header-position">
-    <header class="b2b-header-tabs" b2b-header-responsive>
-        <ul class="header__items" role="navigation">
-<!-- Menu Icon and name -->
-            <li class="header__item icon__item" onclick="window.location = 'applicationsHome'">
-                <div ng-include class="profile-detail-extension" src="'app/views/header/header-logo.html'"></div>             
-                <span id="portal-title" class="portal-title" ng-bind="ecompTitle"></span>           	
-            </li>
-<!-- First Level menu -->
-            <li b2b-header-menu 
-            	id="megaMenu-{{item.text.split(' ').join('-')}}" 
-            	class="header__item b2b-headermenu" 
-            	ng-repeat="item in megaMenuDataObject" 
-            	ng-mousedown="loadFavorites(item.text)"  
-            	role="presentation">
-            	
-                <a href="javascript:void(0);" 
-                id="parentmenu-{{item.text.split(' ').join('-')}}-tabs"
-                class="menu__item" 
-                role="menuitem">{{item.text}}</a>
-                
-                <div class="header-secondary-wrapper" ng-if="item.active_yn=='Y'" ng-hide="hideMenus">
-                    <ul class="header-secondary" role="menu">
-<!-- Second Level menu -->
-                        <li class="header-subitem" 
-                        id="subItem-{{subItem.text.split(' ').join('-')}}"
-                        b2b-header-submenu 
-                        ng-repeat="i in item.children | orderBy : 'column'" 
-                        ng-mousemove="submenuLevelAction(i.text,i.column)" 
-                        role="presentation">
-           <!-- Favorites -->
-                        	<div ng-if="i.text=='Favorites'" >                       		
-                        		<a href="javascript:void(0);" class="menu__item" role="menuitem">{{i.text}}</a>                
-                        		<i id="favorite-star" data-size="large"  class="icon-star favorites-icon-active"></i>      		
-                        		<div class="header-columns-div" ng-show='favoritesWindow' ng-mouseleave="hideFavoritesWindow()" >
-                        			<div class="header-tertiary-wrapper" id="header-favorites">
-			                            <ul class="header-tertiary" role="menu">
-			                                <li role="presentation">
-			                                	<div                                                   
-                                                     ng-repeat="subItem in favoritesMenuItems"
-                                                     ng-show="showFavorites"
-                                                     
-                                                     id="favoritesMenuItems-{{subItem.text.split(' ').join('-')}}">
-                                                    <div class="fav-links">
-                                                        <i id="favorite-selector-favorites-list"
-                                                           class="icon-star favorites-icon-active"                                                       
-                                                           data-ng-click="removeAsFavoriteItem($event, subItem.menuId)"
-                                                           ng-mousedown="removeAsFavoriteItem($event, subItem.menuId)">
-                                                        </i>
-                                                        <a id="favorites-list" aria-label="{{subItem.text}}" ng-click="goToUrl(subItem)">{{subItem.text}}</a>
-                                                    </div>
-                                                </div>	
-                                                	                                	
-			                                    <div id="favorites-empty"  class="favorites-window-empty"   ng-show="emptyFavorites">
-			                                        <p id="p-no-favs-icon" class="no-fav-icon">
-			                                        	<span class="icon-star" ></span>
-			                                        </p>
-							                    	<p id="p-no-favs" class="largeText">{{'No Favorites'|T}}</p>
-							                        <p id="p-no-favs-desc"  class="normal">{{'Add your favorite items for quick access'|T}}.</p>
-				                                </div>
-			                                </li>
-			                            </ul>
-		                            </div>
-                        		</div>             	
-                        	</div>
-            <!-- Support or Help -->
-                        	<div ng-if="item.text=='Support' || item.text=='Help'" id="second-level-menus-help">                      	
-                        		<a id="second-level-menus-{{i.text.split(' ').join('-')}}-help" href="javascript:void(0);" ng-click="goToUrl(i);auditLog(i,'Support')" class="menu__item" role="menuitem">{{i.text| elipsis: 50}}</a>         	
-                        	</div>
-       		<!-- Others -->
-                        	<div ng-if="i.text!='Favorites' && (item.text!='Support' && item.text!='Help')" >
-                        		<a href="javascript:void(0);" class="menu__item" role="menuitem">{{i.text| elipsis: 50}}</a>
-	                            <div class="header-tertiary-wrapper" >
-		                            <ul class="third-level-menu"  role="menu" id="third-level-menus">
-<!-- Third Level menu -->	                 
-										
-			                                <li b2b-header-tertiarymenu ng-repeat="link in i.children | orderBy : 'column'" role="presentation" >
-			                                    <i id="level3-star-inactive-{{link.menuId}}" ng-cloak
-                                                    class="icon-star favorites-icon-inactive"  data-size="large"
-                                                    data-ng-click="setAsFavoriteItem($event, link.menuId)"
-                                                    ng-if="link.url.length > 1 && isUrlFavorite(link.menuId)==false">
-                                                </i>
-                                                <i id="level3-star-active-{{link.menuId}}" ng-cloak
-                                                   ng-if="link.url.length > 1 && isUrlFavorite(link.menuId)"
-                                                   class="icon-star favorites-icon-active ng-cloak"  data-size="large"
-                                                   data-ng-click="removeAsFavoriteItem($event, link.menuId)">
-                                                </i>                                              
-                                                
-			                                    <a class="third-level-title"
-                                                          aria-label="{{link.text | elipsis: 50}}"
-                                                          ng-click="goToUrl(link);auditLog(link,'application')">{{link.text| elipsis: 50}}</a>
-<!-- Fourth Level menu -->
-			                                    <div b2b-tertiary-link ng-repeat="title in link.children"  >
-			                                    	<i id="level4-star-inactive-{{title.menuId}}" ng-cloak
-		                                               class="icon-star favorites-icon-inactive"
-		                                               data-ng-click="setAsFavoriteItem($event, title.menuId)"
-		                                               ng-if="title.url.length > 1 && isUrlFavorite(title.menuId)==false">
-		                                            </i>
-		                                            <i id="level4-star-active-{{title.menuId}}" ng-cloak
-		                                               class="icon-star favorites-icon-active"
-		                                               data-ng-click="removeAsFavoriteItem($event, title.menuId)"
-		                                               ng-if="title.url.length > 1 && isUrlFavorite(title.menuId)">
-		                                            </i>
-			                                    	<a href="javascript:void(0);" class="header-tertiaryitem"  ng-class="{'disabled': title.disabled}" role="menuitem" ng-click="goToUrl(title);auditLog(title,'functional')">{{title.text | elipsis: 50}}</a>                                 	
-			                                    </div>
-			                                </li>	
-			                                
-			                                   
-		                              
-		                                                 
-		                            </ul>
-	                            </div>
-                        	</div>
-           
-                        </li>                        
-                    </ul>
-                </div>
-            </li>
-<!-- Right side of the Menu - User Icon and Notification flag -->
-            <div class="login-section">
-        <!-- Language Select -->
-				<select ng-controller="HeaderCtrl" ng-model="cur_lang" ng-change="switching(cur_lang)" style="float:right">
-					<option value="{{x.languageAlias}}" ng-repeat="x in langList">{{x.languageName}}</option>
-				</select>
-     <!-- User Icon -->
-            <li class="header__item profile" aria-haspopup="true">
-				<b2b-flyout>
-					<div b2b-flyout-toggler >
-						<div class="icon-people-oneperson" id="header-user-icon" tabindex="0" b2b-accessibility-click="13,32" aria-label="notifications" aria-haspopup="true" aria-expanded="{{flyoutOpened}}" role="button"></div>
-		          		<div id="login-snippet-text" class="login-snippet-text">{{header.isGuest ? 'Guest' : header.firstName}}</div>                  
-					</div>					
-		            <b2b-flyout-content horizontal-placement="center" vertical-placement="below">
-						<div  ng-controller="loginSnippetCtrl" >
-							<div id="reg-header-snippet">
-								<div tabindex="0" class="reg-profileDetails" id="reg-profiledetails-id">
-									<ul class="reg-Details-table">
-										<li>
-					                        <div class="reg-userName-table">
-					                            <div id="reg-userName-table-row">
-					                                <div id="reg-userName-table-cell">
-                              							<h3 >{{firstName}} {{lastName}}&nbsp;</h3>
-					                                    <span>&nbsp;</span>
-					                                </div>
-					                            </div>
-					                        </div>
-					                    </li>
-										<li><div class="reg-userEmail-label"><span class="reg-userEmail-label-spn reg-common-label-spn-txt" >{{'Email'|T}}<span class="visuallyhidden">:
-					                    </span></span></div></li>
-										<li><div class="reg-userEmail-value"><span class="reg-userEmail-value-spn">
-					                        {{loginSnippetEmail}}</span></div></li>
-					                    <li>&nbsp;</li>
-										<li><div class="reg-userRole-label"><span class="reg-userRole-label-spn reg-common-label-spn-txt">
-					                        {{'User Id'|T}}<span class="visuallyhidden">:</span></span></div></li>
-										<li><div class="reg-userRole-value"><span class="reg-userRole-value-spn">
-					                        {{loginSnippetUserid}}<span class="visuallyhidden"></span></span></div></li>
-					                    <li>&nbsp;</li>
-										<li><div class="reg-userLastLogin-label"><span class="reg-userLastLogin-label-spn reg-common-label-spn-txt">
-					                        {{'Last login'|T}}<span class="visuallyhidden">:</span></span></div></li>
-										<li><div class="reg-userLastLogin-value"><span class="reg-userLastLogin-value-spn">
-					                        {{ lastLogin | date : 'medium' }}<span class="visuallyhidden"></span></span></div></li>
-						                <li>&nbsp;</li>
-					 					<li>
-					               			<div class="display-userAppRoles-label">
-					                			<a href="javascript:void(0);"  ng-click="getUserApplicationRoles()"  class="icon-primary-accordion-plus" ng-class="{true: 'icon-primary-accordion-plus', false: 'icon-primary-accordion-minus'}[ !displayUserAppRoles]" ><span class="business-card-app-role">{{'Applications and Roles'|T}}</span></a>
-					                 		</div>
-					                 		<br>
-					                        <div class="display-userAppRoles-label display-userAppRoles-label-txt" ng-show="displayUserAppRoles">
-					                             <div ng-repeat="ua in userapproles track by  $index">
-				                                    <div class="reg-userApp-value">
-				                                    	<span class="reg-userApp-value-spn reg-common-label-spn-txt">{{ua.App}}<span class="visuallyhidden">:</span></span>
-													</div>							           
-					                                <div ng-repeat="role in ua.Roles track by  $index" class="reg-userAppRoles-value" >
-					              				 <span  ng-if="role.indexOf('global_')!=-1" id="required" style="color: Red;" visible="false"> *</span>
-					                           	<span class="reg-userAppRoles-value-spn">{{role}}</span>
-					                                </div>
-					                                <br>
-					                        	</div>
-					                     	</div>
-					                	</li>
+	<header class="b2b-header-tabs" b2b-header-responsive>
+		<ul class="header__items" role="navigation">
+			<!-- Menu Icon and name -->
+			<li class="header__item icon__item"
+				onclick="window.location = 'applicationsHome'">
+				<div ng-include class="profile-detail-extension"
+					src="'app/views/header/header-logo.html'"></div> <span
+				id="portal-title" class="portal-title" ng-bind="ecompTitle"></span>
+			</li>
+			<!-- First Level menu -->
+			<li b2b-header-menu id="megaMenu-{{item.text.split(' ').join('-')}}"
+				class="header__item b2b-headermenu"
+				ng-repeat="item in megaMenuDataObject"
+				ng-mousedown="loadFavorites(item.text)" role="presentation"><a
+				href="javascript:void(0);"
+				id="parentmenu-{{item.text.split(' ').join('-')}}-tabs"
+				class="menu__item" role="menuitem">{{item.text}}</a>
+
+				<div class="header-secondary-wrapper" ng-if="item.active_yn=='Y'"
+					ng-hide="hideMenus">
+					<ul class="header-secondary" role="menu">
+						<!-- Second Level menu -->
+						<li class="header-subitem"
+							id="subItem-{{subItem.text.split(' ').join('-')}}"
+							b2b-header-submenu
+							ng-repeat="i in item.children | orderBy : 'column'"
+							ng-mousemove="submenuLevelAction(i.text,i.column)"
+							role="presentation">
+							<!-- Favorites -->
+							<div ng-if="i.text=='Favorites'">
+								<a href="javascript:void(0);" class="menu__item" role="menuitem">{{i.text}}</a>
+								<i id="favorite-star" data-size="large"
+									class="icon-star favorites-icon-active"></i>
+								<div class="header-columns-div" ng-show='favoritesWindow'
+									ng-mouseleave="hideFavoritesWindow()">
+									<div class="header-tertiary-wrapper" id="header-favorites">
+										<ul class="header-tertiary" role="menu">
+											<li role="presentation">
+												<div ng-repeat="subItem in favoritesMenuItems"
+													ng-show="showFavorites"
+													id="favoritesMenuItems-{{subItem.text.split(' ').join('-')}}">
+													<div class="fav-links">
+														<i id="favorite-selector-favorites-list"
+															class="icon-star favorites-icon-active"
+															data-ng-click="removeAsFavoriteItem($event, subItem.menuId)"
+															ng-mousedown="removeAsFavoriteItem($event, subItem.menuId)">
+														</i> <a id="favorites-list" aria-label="{{subItem.text}}"
+															ng-click="goToUrl(subItem)">{{subItem.text}}</a>
+													</div>
+												</div>
+
+												<div id="favorites-empty" class="favorites-window-empty"
+													ng-show="emptyFavorites">
+													<p id="p-no-favs-icon" class="no-fav-icon">
+														<span class="icon-star"></span>
+													</p>
+													<p id="p-no-favs" class="largeText">{{'No
+														Favorites'|T}}</p>
+													<p id="p-no-favs-desc" class="normal">{{'Add your
+														favorite items for quick access'|T}}.</p>
+												</div>
+											</li>
+										</ul>
+									</div>
+								</div>
+							</div> <!-- Support or Help -->
+							<div ng-if="item.text=='Support' || item.text=='Help'"
+								id="second-level-menus-help">
+								<a id="second-level-menus-{{i.text.split(' ').join('-')}}-help"
+									href="javascript:void(0);"
+									ng-click="goToUrl(i);auditLog(i,'Support')" class="menu__item"
+									role="menuitem">{{i.text| elipsis: 50}}</a>
+							</div> <!-- Others -->
+							<div
+								ng-if="i.text!='Favorites' && (item.text!='Support' && item.text!='Help')">
+								<a href="javascript:void(0);" class="menu__item" role="menuitem">{{i.text|
+									elipsis: 50}}</a>
+								<div class="header-tertiary-wrapper">
+									<ul class="third-level-menu" role="menu" id="third-level-menus">
+										<!-- Third Level menu -->
+
+										<li b2b-header-tertiarymenu
+											ng-repeat="link in i.children | orderBy : 'column'"
+											role="presentation"><i
+											id="level3-star-inactive-{{link.menuId}}" ng-cloak
+											class="icon-star favorites-icon-inactive" data-size="large"
+											data-ng-click="setAsFavoriteItem($event, link.menuId)"
+											ng-if="link.url.length > 1 && isUrlFavorite(link.menuId)==false">
+										</i> <i id="level3-star-active-{{link.menuId}}" ng-cloak
+											ng-if="link.url.length > 1 && isUrlFavorite(link.menuId)"
+											class="icon-star favorites-icon-active ng-cloak"
+											data-size="large"
+											data-ng-click="removeAsFavoriteItem($event, link.menuId)">
+										</i> <a class="third-level-title"
+											aria-label="{{link.text | elipsis: 50}}"
+											ng-click="goToUrl(link);auditLog(link,'application')">{{link.text|
+												elipsis: 50}}</a> <!-- Fourth Level menu -->
+											<div b2b-tertiary-link ng-repeat="title in link.children">
+												<i id="level4-star-inactive-{{title.menuId}}" ng-cloak
+													class="icon-star favorites-icon-inactive"
+													data-ng-click="setAsFavoriteItem($event, title.menuId)"
+													ng-if="title.url.length > 1 && isUrlFavorite(title.menuId)==false">
+												</i> <i id="level4-star-active-{{title.menuId}}" ng-cloak
+													class="icon-star favorites-icon-active"
+													data-ng-click="removeAsFavoriteItem($event, title.menuId)"
+													ng-if="title.url.length > 1 && isUrlFavorite(title.menuId)">
+												</i> <a href="javascript:void(0);" class="header-tertiaryitem"
+													ng-class="{'disabled': title.disabled}" role="menuitem"
+													ng-click="goToUrl(title);auditLog(title,'functional')">{{title.text
+													| elipsis: 50}}</a>
+											</div></li>
+
+
+
+
 									</ul>
-					                <div ng-include class="profile-detail-extension" src="'app/views/header/header-extension.tpl.html'"></div>				                							
-					                <div id="reg-logout-div" class="logout-btn-div">
-					                     <button href="javascript:void(0)" id="allLogout" ng-click="allAppsLogout()" class="btn btn-alt btn-small">
-											{{'Log out'|T}}
-										</button>
-					                </div>
-						        </div>
-							</div>
-						</div>		
-		            </b2b-flyout-content>
-	       		</b2b-flyout>
-            </li> 
-    <!-- Notification flag -->
-            <li class="header__item notification" aria-haspopup="true" class="notification-li">
-            	<b2b-flyout>
-            		<div b2b-flyout-toggler class="notification-div">
-	            		<div class="notifications-count" ng-hide="notificationCount.count==0" ng-bind="notificationCount.count"></div>      	
-						<div id="megamenu-notification-button" class="icon-content-flag megamenu-notification-overrides" class="b2b-flyout-icon" tabindex="0" b2b-accessibility-click="13,32" aria-label="notifications" aria-haspopup="true" aria-expanded="{{flyoutOpened}}" role="button"></div>
-		            </div>
-		            <b2b-flyout-content horizontal-placement="center" vertical-placement="below">
-						<div class="notification-content" ng-controller="notificationCtrl" >
-							<div class="ng-scope">
-								<div id="notification" class="notificationBox ">
-									<div align ="right">
-					 					 <a id="notification-history-link" ui-sref="root.notificationHistory" class="notification-history-link-txt"> View All Recent Notifications </a>
-									</div>
-									<div class="notification-header">
-										<div class="notification-common-position">
-      										<p class="notification-heading">{{'Notifications'| T}}</p>
-										</div>
-										<div class="notification-common-space"></div>
-									</div>
-									<div ng-show="notifications.length==0">
-										<div class="notification-main">
-											<div class="notification-main-ht">
-												<div align="center" class="icon-information notification-info-icon"></div>
-											</div>
-										<div>
-										<p class="notification-text">{{'No New Notifications'| T}}.</p>
-									</div>
-									
 								</div>
 							</div>
-							<div class="notification-main" ng-show="notifications.length>0">
-								<ul class="notifications-list">
-									<li class="item" data-id="5" ng-repeat="item in notifications">
-										<div class="icon">
-											<span class="important" ng-show="item.priority==2"/>
-											<span class="normal" ng-show="item.priority==1"/>
+
+						</li>
+					</ul>
+				</div></li>
+			<!-- Right side of the Menu - User Icon and Notification flag -->
+			<div class="login-section">
+					<!-- Language Select -->
+					<div ng-if="langList" class="language">
+						<select style="font: normal 12px Omnes-ECOMP-W02, Arial;" id="dropdown1" name="dropdown1" placeholder-text="Select Language" ng-model="cur_lang" ng-change="switching(cur_lang)">
+				            	<option ng-repeat="x in langList" value="{{x.languageAlias}}">{{x.languageName}}</option>
+				            </select>
+					</div>
+				<!-- User Icon -->
+				<li class="header__item profile" aria-haspopup="true"><b2b-flyout>
+					<div b2b-flyout-toggler>
+						<div class="icon-people-oneperson" id="header-user-icon"
+							tabindex="0" b2b-accessibility-click="13,32"
+							aria-label="notifications" aria-haspopup="true"
+							aria-expanded="{{flyoutOpened}}" role="button"></div>
+						<div id="login-snippet-text" class="login-snippet-text">{{header.isGuest
+							? 'Guest' : header.firstName}}</div>
+					</div>
+					<b2b-flyout-content horizontal-placement="center"
+						vertical-placement="below">
+					<div ng-controller="loginSnippetCtrl">
+						<div id="reg-header-snippet">
+							<div tabindex="0" class="reg-profileDetails"
+								id="reg-profiledetails-id">
+								<ul class="reg-Details-table">
+									<li>
+										<div class="reg-userName-table">
+											<div id="reg-userName-table-row">
+												<div id="reg-userName-table-cell">
+													<h3>{{firstName}} {{lastName}}&nbsp;</h3>
+													<span>&nbsp;</span>
+												</div>
+											</div>
 										</div>
+									</li>
+									<li><div class="reg-userEmail-label">
+											<span
+												class="reg-userEmail-label-spn reg-common-label-spn-txt">{{'Email'|T}}<span
+												class="visuallyhidden">: </span></span>
+										</div></li>
+									<li><div class="reg-userEmail-value">
+											<span class="reg-userEmail-value-spn">
+												{{loginSnippetEmail}}</span>
+										</div></li>
+									<li>&nbsp;</li>
+									<li><div class="reg-userRole-label">
+											<span class="reg-userRole-label-spn reg-common-label-spn-txt">
+												{{'User Id'|T}}<span class="visuallyhidden">:</span>
+											</span>
+										</div></li>
+									<li><div class="reg-userRole-value">
+											<span class="reg-userRole-value-spn">
+												{{loginSnippetUserid}}<span class="visuallyhidden"></span>
+											</span>
+										</div></li>
+									<li>&nbsp;</li>
+									<li><div class="reg-userLastLogin-label">
+											<span
+												class="reg-userLastLogin-label-spn reg-common-label-spn-txt">
+												{{'Last login'|T}}<span class="visuallyhidden">:</span>
+											</span>
+										</div></li>
+									<li><div class="reg-userLastLogin-value">
+											<span class="reg-userLastLogin-value-spn"> {{
+												lastLogin | date : 'medium' }}<span class="visuallyhidden"></span>
+											</span>
+										</div></li>
+									<li>&nbsp;</li>
+									<li>
+										<div class="display-userAppRoles-label">
+											<a href="javascript:void(0);"
+												ng-click="getUserApplicationRoles()"
+												class="icon-primary-accordion-plus"
+												ng-class="{true: 'icon-primary-accordion-plus', false: 'icon-primary-accordion-minus'}[ !displayUserAppRoles]"><span
+												class="business-card-app-role">{{'Applications and
+													Roles'|T}}</span></a>
+										</div> <br>
+										<div
+											class="display-userAppRoles-label display-userAppRoles-label-txt"
+											ng-show="displayUserAppRoles">
+											<div ng-repeat="ua in userapproles track by  $index">
+												<div class="reg-userApp-value">
+													<span
+														class="reg-userApp-value-spn reg-common-label-spn-txt">{{ua.App}}<span
+														class="visuallyhidden">:</span></span>
+												</div>
+												<div ng-repeat="role in ua.Roles track by  $index"
+													class="reg-userAppRoles-value">
+													<span ng-if="role.indexOf('global_')!=-1" id="required"
+														style="color: Red;" visible="false"> *</span> <span
+														class="reg-userAppRoles-value-spn">{{role}}</span>
+												</div>
+												<br>
+											</div>
+										</div>
+									</li>
+								</ul>
+								<div ng-include class="profile-detail-extension"
+									src="'app/views/header/header-extension.tpl.html'"></div>
+								<div id="reg-logout-div" class="logout-btn-div">
+									<button href="javascript:void(0)" id="allLogout"
+										ng-click="allAppsLogout()" class="btn btn-alt btn-small">
+										{{'Log out'|T}}</button>
+								</div>
+							</div>
+						</div>
+					</div>
+					</b2b-flyout-content> </b2b-flyout></li>
+				<!-- Notification flag -->
+				<li class="header__item notification" aria-haspopup="true"
+					class="notification-li"><b2b-flyout>
+					<div b2b-flyout-toggler class="notification-div">
+						<div class="notifications-count"
+							ng-hide="notificationCount.count==0"
+							ng-bind="notificationCount.count"></div>
+						<div id="megamenu-notification-button"
+							class="icon-content-flag megamenu-notification-overrides"
+							class="b2b-flyout-icon" tabindex="0"
+							b2b-accessibility-click="13,32" aria-label="notifications"
+							aria-haspopup="true" aria-expanded="{{flyoutOpened}}"
+							role="button"></div>
+					</div>
+					<b2b-flyout-content horizontal-placement="center"
+						vertical-placement="below">
+					<div class="notification-content" ng-controller="notificationCtrl">
+						<div class="ng-scope">
+							<div id="notification" class="notificationBox ">
+								<div align="right">
+									<a id="notification-history-link"
+										ui-sref="root.notificationHistory"
+										class="notification-history-link-txt"> View All Recent
+										Notifications </a>
+								</div>
+								<div class="notification-header">
+									<div class="notification-common-position">
+										<p class="notification-heading">{{'Notifications'| T}}</p>
+									</div>
+									<div class="notification-common-space"></div>
+								</div>
+								<div ng-show="notifications.length==0">
+									<div class="notification-main">
+										<div class="notification-main-ht">
+											<div align="center"
+												class="icon-information notification-info-icon"></div>
+										</div>
+										<div>
+											<p class="notification-text">{{'No New Notifications'|
+												T}}.</p>
+										</div>
+
+									</div>
+								</div>
+								<div class="notification-main" ng-show="notifications.length>0">
+									<ul class="notifications-list">
+										<li class="item" data-id="5" ng-repeat="item in notifications">
+											<div class="icon">
+												<span class="important" ng-show="item.priority==2" /> <span
+													class="normal" ng-show="item.priority==1" />
+											</div>
 											<div class="details" ng-click="showDetailedJsonMessage(item)">
 												<span class="title" ng-bind="item.msgSource"></span> <span
 													class="title" ng-bind="item.msgHeader"></span> <span
@@ -273,28 +325,29 @@
 													ng-if="item.msgSource!=='EP'"
 													ng-bind="item.message| elipsis: 27"> </span>
 												<!-- <span class="date" ng-bind="item.time" ></span> -->
-												<mydate>{{item.time | date:'MM/dd/yyyy hh:mm:ss a Z'}}</mydate>
+												<mydate>{{item.time | date:'MM/dd/yyyy hh:mm:ss a
+												Z'}}</mydate>
 
 											</div>
-										<button type="button" ng-click="deleteNotification($index)" class="button-default button-dismiss js-dismiss">x</button>
-									</li>
-								</ul>
-							</div>
-							<div class="notification-footer">
-								<div class="notification-links">
-									<div class="notification-common-space"></div>
+											<button type="button" ng-click="deleteNotification($index)"
+												class="button-default button-dismiss js-dismiss">x</button>
+										</li>
+									</ul>
+								</div>
+								<div class="notification-footer">
+									<div class="notification-links">
+										<div class="notification-common-space"></div>
+									</div>
 								</div>
 							</div>
-						</div>					
-		            </b2b-flyout-content>
-		        </b2b-flyout>
-            </li>
-
-            <li class="header__item recommendation" aria-haspopup="true"
-							class="recommendation-li">
-            <div ng-include class="recommendation-detail-extension" src="'app/views/headerRecommendation/headerRecommendations.tpl.html'"></div> 
-            </li>            
-            </div>
-        </ul>
+						</div>
+					</div>
+					</b2b-flyout-content> </b2b-flyout></li>
+					<li class="header__item recommendation" aria-haspopup="true"
+						class="recommendation-li">
+						<div ng-include class="recommendation-detail-extension"
+							src="'app/views/headerRecommendation/headerRecommendations.tpl.html'"></div>
+					</li>
+		</ul>
 	</header>
 </div>
diff --git a/ecomp-portal-FE-common/client/app/views/role/popup_createedit_role.html b/ecomp-portal-FE-common/client/app/views/role/popup_createedit_role.html
index 5d4fc4d..0429967 100644
--- a/ecomp-portal-FE-common/client/app/views/role/popup_createedit_role.html
+++ b/ecomp-portal-FE-common/client/app/views/role/popup_createedit_role.html
@@ -130,7 +130,7 @@
 	 
 	 <div class="b2b-modal-footer">
 	 	<div class="cta-button-group in">	
-	 		<button id="button-app-save" class="btn btn-alt btn-small" size="small" ng-click="saveRole(role, editRoleFunction);" href="javascript:void(0)">Save</button>
+	 		<button id="button-app-save" class="btn btn-alt btn-small" size="small" ng-disabled="!(role.name)" ng-click="saveRole(role, editRoleFunction);" href="javascript:void(0)">Save</button>
 						
 			<button id="button-app-cancel" class="btn btn-alt btn-small" ng-click="$dismiss('cancel')" role="button" tabindex="0" href="javascript:void(0)">Cancel</button>
 		</div>
diff --git a/ecomp-portal-FE-common/client/app/views/role/role-list-controller.js b/ecomp-portal-FE-common/client/app/views/role/role-list-controller.js
index b481311..8765149 100644
--- a/ecomp-portal-FE-common/client/app/views/role/role-list-controller.js
+++ b/ecomp-portal-FE-common/client/app/views/role/role-list-controller.js
@@ -152,11 +152,9 @@
             	   $scope.centralizedApps = res;
             	   for(var i = 0; i<res.length; i++){
             		      if(res[i].appId == 1){
-            		    	  $scope.getRolesForSelectedCentralizedApp(res[i].appId);
             		    	  $scope.apps.selectedCentralizedApp = res[i].appId;
             		    	  return;
             		      }  
-            		      $scope.getRolesForSelectedCentralizedApp(res[0].appId);
             		      $scope.apps.selectedCentralizedApp = res[0].appId;
             	   }
                 }
diff --git a/ecomp-portal-FE-common/client/app/views/users/new-user-dialogs/new-user.controller.js b/ecomp-portal-FE-common/client/app/views/users/new-user-dialogs/new-user.controller.js
index 3df58da..8c04fa5 100644
--- a/ecomp-portal-FE-common/client/app/views/users/new-user-dialogs/new-user.controller.js
+++ b/ecomp-portal-FE-common/client/app/views/users/new-user-dialogs/new-user.controller.js
@@ -46,8 +46,8 @@
             var isSystemUser = false;
 
             $scope.ngRepeatDemo = [
-		        {id: 'userButton', value: 'true', labelvalue: 'user'},
-		        {id: 'systemUserButton', value: 'false', labelvalue: 'system'}
+		        {id: 'userButton', value: 'true', labelvalue: 'User'},
+		        {id: 'systemUserButton', value: 'false', labelvalue: 'System'}
 		    ]
             
             $scope.selectedvalueradioButtonGroup = {
diff --git a/ecomp-portal-FE-common/client/app/views/users/new-user-dialogs/new-user.modal.html b/ecomp-portal-FE-common/client/app/views/users/new-user-dialogs/new-user.modal.html
index dc93006..eab95f4 100644
--- a/ecomp-portal-FE-common/client/app/views/users/new-user-dialogs/new-user.modal.html
+++ b/ecomp-portal-FE-common/client/app/views/users/new-user-dialogs/new-user.modal.html
@@ -77,7 +77,7 @@
 						</div>
 					</fieldset>
 		  <div class="systemUser" ng-show="selectedvalueradioButtonGroup.type =='false'" style="color: #5a5a5a;
-        font-family: Omnes-ECOMP-W02, Arial;font-size: 14px;margin-bottom: 8px; padding-left: 30px;">Enter system UserId</div>
+        font-family: Omnes-ECOMP-W02, Arial;font-size: 14px;margin-bottom: 8px; padding-left: 30px;">Enter system userId</div>
           <div ng-show="selectedvalueradioButtonGroup.type =='false'">
 				<input id="action-property-input"
 					class="adminForm-name-property-input" placeholder="xxxxxx@org.com"
@@ -158,4 +158,4 @@
 $(document).ready(function(){
     $(".ngdialog-close").attr('id','dialog-close');
 });
-</script>
+</script>
\ No newline at end of file
diff --git a/ecomp-portal-FE-common/client/app/views/users/users.tpl.html b/ecomp-portal-FE-common/client/app/views/users/users.tpl.html
index 4017581..538899d 100644
--- a/ecomp-portal-FE-common/client/app/views/users/users.tpl.html
+++ b/ecomp-portal-FE-common/client/app/views/users/users.tpl.html
@@ -52,7 +52,7 @@
 						<div>
 							<input id="input-table-search" placeholder="Search" class="table-search-field" type="text" data-ng-model="users.searchString">
 						</div>
-						<button class="btn btn-alt btn-small" id="users-button-add"  ng-click="users.openAddNewUserModal()"><i class="icon-people-userbookmark" aria-hidden="true"></i>&nbsp;Add User</button> 
+						<button class="btn btn-alt btn-small" id="users-button-add"  ng-click="users.openAddNewUserModal()"><i class="icon-people-userbookmark" aria-hidden="true"></i>&nbsp;Add</button> 
 	                   	<button class="btn btn-alt btn-small" id="users-bulk-upload-button-add"  ng-click="users.openBulkUserUploadModal()"><i class="icon-arrows-upload" aria-hidden="true"></i>&nbsp;Bulk Upload</button>
 					</div>
                 </div>
@@ -113,4 +113,4 @@
         </div>
     </div>
 
-</div>
+</div>
\ No newline at end of file
diff --git a/ecomp-portal-FE-os/client/configurations/dev.json b/ecomp-portal-FE-os/client/configurations/dev.json
index 78e3a20..eb95861 100644
--- a/ecomp-portal-FE-os/client/configurations/dev.json
+++ b/ecomp-portal-FE-os/client/configurations/dev.json
@@ -100,7 +100,7 @@
 		"centralizedApps": "http://localhost:8080/ecompportal/portalApi/centralizedApps",
 		"uploadRoleFunction":"http://localhost:8080/ecompportal/portalApi/uploadRoleFunction/:appId",
 	    "checkIfUserIsSuperAdmin":"http://localhost:8080/ecompportal/portalApi/checkIfUserIsSuperAdmin",
-	    "getCurrentLang": "http://localhost:8080/ecompportal/auxapi/languageSetting/user/:loginId",
+		"getCurrentLang": "http://localhost:8080/ecompportal/auxapi/languageSetting/user/:loginId",
 		"getLanguages": "http://localhost:8080/ecompportal/auxapi/language",
 		"updateLang": "http://localhost:8080/ecompportal/auxapi/languageSetting/user/:loginId"
 	},
diff --git a/ecomp-portal-FE-os/pom.xml b/ecomp-portal-FE-os/pom.xml
index d5014a9..2a43f83 100644
--- a/ecomp-portal-FE-os/pom.xml
+++ b/ecomp-portal-FE-os/pom.xml
@@ -185,7 +185,7 @@
 						<phase>generate-resources</phase>
 
 						<configuration>
-							<arguments>build --env=integ</arguments>
+							<arguments>build --env=integ --force</arguments>
 						</configuration>
 					</execution>
 
diff --git a/ecomp-portal-widget-ms/widget-ms/pom.xml b/ecomp-portal-widget-ms/widget-ms/pom.xml
index 95b06ad..d0849df 100644
--- a/ecomp-portal-widget-ms/widget-ms/pom.xml
+++ b/ecomp-portal-widget-ms/widget-ms/pom.xml
@@ -98,6 +98,11 @@
 			<artifactId>jasypt-spring-boot-starter</artifactId>
 			<version>1.9</version>
 		</dependency>
+		<dependency>
+			<groupId>org.jsoup</groupId>
+			<artifactId>jsoup</artifactId>
+			<version>1.12.1</version>
+       </dependency>
 		<!-- hibernate-core depends on dom4j, which has optional dependencies. 
 			On jenkins, contrary to doc, mvn 3.0.5 packages the optional dependencies 
 			in the war. Workaround: exclude them explicitly. -->
diff --git a/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/StorageServiceImpl.java b/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/StorageServiceImpl.java
index 1861172..7a35ba4 100644
--- a/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/StorageServiceImpl.java
+++ b/ecomp-portal-widget-ms/widget-ms/src/main/java/org/onap/portalapp/widget/service/impl/StorageServiceImpl.java
@@ -39,6 +39,7 @@
 public class StorageServiceImpl implements StorageService {
 
 	private static final Logger logger = LoggerFactory.getLogger(StorageServiceImpl.class);
+	private final String TMP_PATH = "/tmp/";
 
 	@Autowired
 	private SessionFactory sessionFactory;
@@ -98,13 +99,14 @@
 				throw new StorageException(
 						"StorageServiceImpl.checkZipFile: Failed to store empty file " + file.getOriginalFilename());
 			}
-			String fileLocation = file.getOriginalFilename();
+
+			String fileLocation = TMP_PATH+file.getOriginalFilename();
 			logger.debug("StorageServiceImpl.checkZipFile: store the widget to:" + fileLocation);
 			convFile = new File(fileLocation);
 			try(FileOutputStream fos = new FileOutputStream(convFile)){
 				fos.write(file.getBytes());
 			}
-			map = unzipper.unzip_db(fileLocation, ".", "tempWidgets");
+			map = unzipper.unzip_db(fileLocation, TMP_PATH, "tempWidgets");
 			convFile.delete();
 		} catch (IOException e) {
 			logger.error("StorageServiceImpl.checkZipFile: Failed to store file " + file.getOriginalFilename(), e);
diff --git a/pom.xml b/pom.xml
index 9e136c0..a6e369b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,8 @@
 		<!-- Jenkins should invoke mvn with argument -Dbuild.number=${BUILD_NUMBER} -->
 		<build.number>0</build.number>
 		<epsdk.version>2.6.0-SNAPSHOT</epsdk.version>
-		<springframework.version>4.2.3.RELEASE</springframework.version>
+		<springframework.version>4.3.24.RELEASE</springframework.version>
+		<springframework.security.version>4.2.13.RELEASE</springframework.security.version>
 		<hibernate.version>4.3.11.Final</hibernate.version>
 		<fasterxml.version>2.8.10</fasterxml.version>
 		<eelf.version>1.0.0</eelf.version>