OSAM infra seed code - merge with osam-core side-by-side - fixed warnings in onap-enabler POMs

Change-Id: I0cd9ea39d4b7c1dc088ab0ecd6fb787c7f490e5e
Signed-off-by: Aharoni, Pavel (pa0916) <pavel.aharoni@intl.att.com>
diff --git a/onap-enabler-infra/README.md b/onap-enabler-infra/README.md
new file mode 100644
index 0000000..2d4f567
--- /dev/null
+++ b/onap-enabler-infra/README.md
@@ -0,0 +1,60 @@
+# ECOMP SDK Web Application for Open Source

+

+## Overview

+

+This is a Maven project with the ECOMP SDK web application for public release,

+containing files specific to requirements of the open-source version.  This 

+project uses the Maven war plugin to copy in ("overlay") the contents of the 

+ECOMP SDK web application overlay files distribution at package time.

+

+Use Apache Maven to build, package and deploy this webapp to a web container

+like Apache Tomcat.  Eclipse users must install the M2E-WTP connector, see 

+https://www.eclipse.org/m2e-wtp/

+

+## Release Notes

+

+All of the release notes in the epsdk-app-common and epsdk-app-overlay areas apply here!

+

+Build 1.2.6, 23 Mar 2017

+- DE270905 Removed total page/current page text boxes from bottom of Profile Search page

+- DE273128 Revise left menu to have unique IDs

+- DE271378 fixed Camunda Page link in fn_menu; additional links were updated: Notebook

+- US847688 Abstraction of support page content for AT&T vs Open Source in SQL Scripts

+- Add sample defs/definitions.xml file for partner applications to configure jsp pages

+- DE272154 SDK-App ATT: self profile page, changes on drop downs not saved

+- Downgrade angularJS from 1.5.0 to 1.4.8

+

+Build 1.2.5, 16 Mar 2017

+- DE272709 Update icon names from DS1 to DS2 in database load script

+- Upgrade to EPSDK libraries version 1.2.5

+

+Build 1.2.4, 10 Mar 2017

+- DE272042 Add missing includes so left menu appears on collaborate and notebook pages

+- DE272193 Fix class/icon name to restore role icon on Self Profile page

+- Restore spinners by changing class name from icon-spinner to icon-primary-spinner

+- DE272202 updated ionicon.css for open source version of report search page

+- Removed unused js files from samplePage.html in epsdk-app-onap

+- Upgrade to EPSDK libraries version 1.2.4

+

+Build 1.2.3, 8 Mar 2017

+- DE271038 Remove references to famous telecommunications company from system.properties

+- Upgrade to EPSDK libraries version 1.2.3

+

+Build 1.2.2, 6 Mar 2017

+- DE270658 EPSDK-app-onap header is covering part of left menu.

+- DE271510 Pages not loading in IE and FF properly. Drop page-resource-ds2.js; load scripts in HTML directly

+- Remove references to famous telecommunications company hosts from fusion.properties, portal.properties

+- Upgrade to EPSDK libraries version 1.2.2

+

+Build 1.2.1, 2 Mar 2017

+- DE269231 Separated footer files on OS module displaying black footer with no content

+- US847688 Split database scripts; include full set in distributions

+- US847706 Refactored AdminAuthExtension to implement interface expected in OnboardingApiServiceImpl 

+- Added class conf/HibernateMappingLocations - moved out of common to apps

+- Added file logback.xml to src/main/resources with appropriate logger names

+- Extend HibernateMappingLocations with method that returns list of package names to scan

+- Remove references to famous telecommunications company hosts from system.properties file

+- Upgrade to EPSDK libraries version 1.2.1

+

+Build 1.2.0, 9 Feb 2017

+- Initial release

diff --git a/onap-enabler-infra/pom.xml b/onap-enabler-infra/pom.xml
new file mode 100644
index 0000000..35cc6bb
--- /dev/null
+++ b/onap-enabler-infra/pom.xml
@@ -0,0 +1,495 @@
+<?xml version="1.0"?>

+<!--/*-

+        * ============LICENSE_START=======================================================

+        * OSAM Core

+        * ================================================================================

+        * Copyright (C) 2018 AT&T

+        * ================================================================================

+        * Licensed under the Apache License, Version 2.0 (the "License");

+        * you may not use this file 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.

+        * ============LICENSE_END=========================================================

+        */-->

+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+	<modelVersion>4.0.0</modelVersion>

+

+	<!-- This is the Maven project object model (POM) file for the open-source 

+		SDK web app. This is NOT the Portal - but it is developed and supported by 

+		the Portal team. -->

+	<groupId>org.onap.osam</groupId>

+	<artifactId>onap-enabler-infra</artifactId>

+	<version>0.0.1-SNAPSHOT</version>

+	<packaging>war</packaging>

+

+	<properties>

+		<encoding>UTF-8</encoding>

+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

+		<epsdk.version>2.4.0</epsdk.version>

+		<springframework.version>4.2.9.RELEASE</springframework.version>

+		<hibernate.version>4.3.11.Final</hibernate.version>

+		<!-- Skip assembling the zip; assemble via mvn -Dskipassembly=false .. -->

+		<skipassembly>true</skipassembly>

+		<!-- Tests usually require some setup that maven cannot do, so skip. -->

+<!--

+		<skiptests>false</skiptests>

+-->

+		<nexusproxy>https://nexus.onap.org</nexusproxy>

+		<snapshotNexusPath>/content/repositories/snapshots/</snapshotNexusPath>

+		<releaseNexusPath>/content/repositories/releases/</releaseNexusPath>

+		<stagingNexusPath>/content/repositories/staging/</stagingNexusPath>

+		<sitePath>/content/sites/site/org/onap/vid/${project.version}</sitePath>

+

+		<!-- SONAR -->

+		<sonar.language>java</sonar.language>

+		<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>

+		<sonar.surefire.reportsPath>${project.build.directory}/surefire-reports</sonar.surefire.reportsPath>

+		<sonar.projectVersion>${project.version}</sonar.projectVersion>

+	</properties>

+

+	<repositories>

+		<repository>

+			<id>ecomp-releases</id>

+			<name>VID Release Repository</name>

+			<url>${nexusproxy}${releaseNexusPath}</url>

+		</repository>

+		<repository>

+			<id>ecomp-snapshots</id>

+			<name>VID Snapshot Repository</name>

+			<url>${nexusproxy}${snapshotNexusPath}</url>

+		</repository>

+		<repository>

+			<id>ecomp-staging</id>

+			<name>VID Staging Repository</name>

+			<url>${nexusproxy}${stagingNexusPath}</url>

+		</repository>

+		<repository>

+			<!-- Snapshots repository has ECOMP snapshot artifacts -->

+			<id>oss-snapshots</id>

+			<name>oss Central - Snapshots</name>

+			<url>https://oss.sonatype.org/service/local/repositories/releases/content/</url>

+		</repository>

+	</repositories>

+	<distributionManagement>

+		<repository>

+			<id>ecomp-releases</id>

+			<name>VID Release Repository</name>

+			<url>${nexusproxy}/${releaseNexusPath}</url>

+		</repository>

+		<snapshotRepository>

+			<id>ecomp-snapshots</id>

+			<name>VID Snapshot Repository</name>

+			<url>${nexusproxy}/${snapshotNexusPath}</url>

+		</snapshotRepository>

+		<!-- added for javadoc -->

+		<site>

+			<id>ecomp-site</id>

+			<url>dav:${nexusproxy}${sitePath}</url>

+		</site>

+	</distributionManagement>

+

+	<profiles>

+		<!-- disable doclint, a new feature in Java 8, when generating javadoc -->

+		<profile>

+			<id>doclint-java8-disable</id>

+			<activation>

+				<jdk>[1.8,)</jdk>

+			</activation>

+			<build>

+				<plugins>

+					<plugin>

+						<groupId>org.apache.maven.plugins</groupId>

+						<artifactId>maven-javadoc-plugin</artifactId>

+						<version>2.10.4</version>

+						<configuration>

+							<additionalparam>-Xdoclint:none</additionalparam>

+						</configuration>

+					</plugin>

+				</plugins>

+			</build>

+		</profile>

+	</profiles>

+

+	<build>

+		<finalName>onap-enabler</finalName>

+		<plugins>

+            <!-- License plugin should only run once at the start of the project.

+                 For new classes, the header should be added manually by the company which creates it.-->

+

+            <!--<plugin>

+                <groupId>org.codehaus.mojo</groupId>

+                <artifactId>license-maven-plugin</artifactId>

+                <version>1.16</version>

+                <configuration>

+                    <addJavaLicenseAfterPackage>false</addJavaLicenseAfterPackage>

+                    <processStartTag>============LICENSE_START=======================================================</processStartTag>

+                    <processEndTag>============LICENSE_END=========================================================</processEndTag>

+                    <sectionDelimiter>================================================================================</sectionDelimiter>

+                    <licenseName>apache_v2</licenseName>

+                    <inceptionYear>2018</inceptionYear>

+                    <organizationName>AT&amp;T</organizationName>

+                    <projectName>OSAM</projectName>

+                    <canUpdateCopyright>true</canUpdateCopyright>

+                    <canUpdateDescription>true</canUpdateDescription>

+                    <canUpdateLicense>true</canUpdateLicense>

+                    <emptyLineAfterHeader>true</emptyLineAfterHeader>

+                    <verbose>false</verbose>

+                    <includes>

+                        <include>**/*.java</include>

+                    </includes>

+                </configuration>

+                <executions>

+                    <execution>

+                        <id>first</id>

+                        <goals>

+                            <goal>update-file-header</goal>

+                        </goals>

+                        <phase>process-sources</phase>

+                    </execution>

+                </executions>

+            </plugin>-->

+			<plugin>

+				<groupId>org.sonatype.plugins</groupId>

+				<artifactId>nexus-staging-maven-plugin</artifactId>

+				<version>1.6.7</version>

+				<extensions>true</extensions>

+				<configuration>

+					<nexusUrl>${nexusproxy}</nexusUrl>

+					<stagingProfileId>176c31dfe190a</stagingProfileId>

+					<serverId>ecomp-staging</serverId>

+				</configuration>

+			</plugin>

+

+			<!-- Compile to Java 1.8 class output format -->

+			<plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-compiler-plugin</artifactId>

+				<version>3.1</version>

+				<configuration>

+					<source>1.8</source>

+					<target>1.8</target>

+				</configuration>

+			</plugin>

+

+			<plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-surefire-plugin</artifactId>

+				<version>2.19.1</version>

+				<configuration>

+<!--

+					<skipTests>${skiptests}</skipTests>

+-->

+					<includes>

+						<include>**/Test*.java</include>

+						<include>**/*Test.java</include>

+						<include>**/*TestCase.java</include>

+					</includes>

+					<additionalClasspathElements>

+						<additionalClasspathElement>${basedir}/war</additionalClasspathElement>

+					</additionalClasspathElements>

+					<systemPropertyVariables>

+						<container.classpath>classpath:</container.classpath>

+					</systemPropertyVariables>

+				</configuration>

+			</plugin>

+

+			<!-- add version number to manifest -->

+			<plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-war-plugin</artifactId>

+				<version>2.0.2</version>

+				<configuration>

+					<archive>

+						<manifest>

+							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>

+						</manifest>

+						<manifestEntries>

+							<Build-Number>${project.version}</Build-Number>

+							<Build-Time>${maven.build.timestamp}</Build-Time>

+						</manifestEntries>

+					</archive>

+				</configuration>

+			</plugin>

+

+			<plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-assembly-plugin</artifactId>

+				<version>3.0.0</version>

+				<configuration>

+					<skipAssembly>${skipassembly}</skipAssembly>

+					<descriptors>

+						<descriptor>${basedir}/distribution.xml</descriptor>

+					</descriptors>

+				</configuration>

+				<executions>

+					<execution>

+						<id>make-assembly</id>

+						<phase>package</phase>

+						<goals>

+							<goal>single</goal>

+						</goals>

+					</execution>

+				</executions>

+			</plugin>

+			<plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-site-plugin</artifactId>

+				<version>3.6</version>

+				<dependencies>

+					<dependency>

+						<groupId>org.apache.maven.wagon</groupId>

+						<artifactId>wagon-webdav-jackrabbit</artifactId>

+						<version>2.10</version>

+					</dependency>

+				</dependencies>

+			</plugin>

+			<plugin>

+				<groupId>org.sonarsource.scanner.maven</groupId>

+				<artifactId>sonar-maven-plugin</artifactId>

+				<version>3.3.0.603</version>

+			</plugin>

+			<plugin>

+				<groupId>org.jacoco</groupId>

+				<artifactId>jacoco-maven-plugin</artifactId>

+				<version>0.7.9</version>

+				<executions>

+					<execution>

+						<id>default-prepare-agent</id>

+						<goals>

+							<goal>prepare-agent</goal>

+						</goals>

+					</execution>

+					<execution>

+						<id>default-report</id>

+						<goals>

+							<goal>report</goal>

+						</goals>

+					</execution>

+				</executions>

+			</plugin>

+

+		</plugins>

+	</build>

+

+	<reporting>

+		<plugins>

+			<plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-javadoc-plugin</artifactId>

+				<version>2.10.4</version>

+				<configuration>

+					<failOnError>false</failOnError>

+					<doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>

+					<docletArtifact>

+						<groupId>org.umlgraph</groupId>

+						<artifactId>umlgraph</artifactId>

+						<version>5.6</version>

+					</docletArtifact>

+					<additionalparam>-views</additionalparam>

+					<useStandardDocletOptions>true</useStandardDocletOptions>

+				</configuration>

+			</plugin>

+		</plugins>

+	</reporting>

+	<dependencies>

+		<!-- SDK overlay war -->

+		 <dependency>

+			<groupId>org.onap.portal.sdk</groupId>

+			<artifactId>epsdk-app-overlay</artifactId>

+			<version>${epsdk.version}</version>

+			<type>war</type>

+		</dependency>

+		<dependency>

+			<groupId>org.onap.portal.sdk</groupId>

+			<artifactId>epsdk-app-common</artifactId>

+			<version>${epsdk.version}</version>

+			<type>jar</type>

+			<exclusions>

+				<exclusion>

+					<groupId>com.fasterxml.jackson.core</groupId>

+					<artifactId>jackson-core</artifactId>

+				</exclusion>

+			</exclusions>

+		</dependency>

+		<dependency>

+			<groupId>org.onap.osam</groupId>

+			<artifactId>onap-enabler-be</artifactId>

+			<version>${project.version}</version>

+			<type>war</type>

+			<exclusions>

+				<exclusion>

+					<groupId>com.fasterxml.jackson.core</groupId>

+					<artifactId>jackson-core</artifactId>

+				</exclusion>

+			</exclusions>

+		</dependency>

+		<dependency>

+			<groupId>org.onap.osam</groupId>

+			<artifactId>onap-enabler-be</artifactId>

+			<version>${project.version}</version>

+			<type>jar</type>

+			<classifier>classes</classifier>

+		</dependency>

+		<!-- SDK components -->

+		<dependency>

+			<groupId>org.onap.portal.sdk</groupId>

+			<artifactId>epsdk-core</artifactId>

+			<version>${epsdk.version}</version>

+			<exclusions>

+				<exclusion>

+					<groupId>com.fasterxml.jackson.core</groupId>

+					<artifactId>jackson-core</artifactId>

+				</exclusion>

+			</exclusions>

+		</dependency>

+		<dependency>

+			<groupId>org.onap.portal.sdk</groupId>

+			<artifactId>epsdk-analytics</artifactId>

+			<version>${epsdk.version}</version>

+			<exclusions>

+				<exclusion>

+					<groupId>com.fasterxml.jackson.core</groupId>

+					<artifactId>jackson-core</artifactId>

+				</exclusion>

+			</exclusions>

+		</dependency>

+		<dependency>

+			<groupId>org.onap.portal.sdk</groupId>

+			<artifactId>epsdk-workflow</artifactId>

+			<version>${epsdk.version}</version>

+			<exclusions>

+				<exclusion>

+					<groupId>com.fasterxml.jackson.core</groupId>

+					<artifactId>jackson-core</artifactId>

+				</exclusion>

+			</exclusions>

+		</dependency>

+		<dependency>

+			<groupId>com.att.eelf</groupId>

+			<artifactId>eelf-core</artifactId>

+			<version>1.0.0</version>

+		</dependency>

+

+		<!-- Mapper -->

+		<dependency>

+			<groupId>com.fasterxml.jackson.core</groupId>

+			<artifactId>jackson-annotations</artifactId>

+			<version>2.6.3</version>

+		</dependency>

+		<dependency>

+			<groupId>com.fasterxml.jackson.core</groupId>

+			<artifactId>jackson-core</artifactId>

+			<version>2.8.6</version>

+		</dependency>

+		<dependency>

+			<groupId>com.fasterxml.jackson.core</groupId>

+			<artifactId>jackson-databind</artifactId>

+			<version>2.6.7.1</version>

+			<exclusions>

+				<exclusion>

+					<groupId>com.fasterxml.jackson.core</groupId>

+					<artifactId>jackson-core</artifactId>

+				</exclusion>

+			</exclusions>

+		</dependency>

+		<dependency>

+			<groupId>com.mchange</groupId>

+			<artifactId>c3p0</artifactId>

+			<version>0.9.5.2</version>

+		</dependency>

+		<dependency>

+			<groupId>io.searchbox</groupId>

+			<artifactId>jest</artifactId>

+			<version>2.0.0</version>

+			<exclusions>

+				<exclusion>

+					<groupId>commons-logging</groupId>

+					<artifactId>commons-logging</artifactId>

+				</exclusion>

+			</exclusions>

+		</dependency>

+		<dependency>

+			<groupId>javax.servlet</groupId>

+			<artifactId>javax.servlet-api</artifactId>

+			<version>3.1.0</version>

+		</dependency>

+		<dependency>

+			<groupId>junit</groupId>

+			<artifactId>junit</artifactId>

+			<version>4.12</version>

+		</dependency>

+		<dependency>

+			<groupId>org.json</groupId>

+			<artifactId>json</artifactId>

+			<version>20160212</version>

+		</dependency>

+		<dependency>

+			<groupId>org.quartz-scheduler</groupId>

+			<artifactId>quartz</artifactId>

+			<version>2.2.1</version>

+			<exclusions>

+				<!-- exclude 0.9.1.1 to avoid dupe of com.mchange:c3p0:0.9.2.1 -->

+				<exclusion>

+					<groupId>c3p0</groupId>

+					<artifactId>c3p0</artifactId>

+				</exclusion>

+			</exclusions>

+		</dependency>

+		<!-- bridge to implement commons-logging using slf4j -->

+		<dependency>

+			<groupId>org.slf4j</groupId>

+			<artifactId>jcl-over-slf4j</artifactId>

+			<version>1.7.12</version>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>spring-context-support</artifactId>

+			<version>${springframework.version}</version>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>spring-core</artifactId>

+			<version>${springframework.version}</version>

+			<exclusions>

+				<exclusion>

+					<groupId>commons-logging</groupId>

+					<artifactId>commons-logging</artifactId>

+				</exclusion>

+			</exclusions>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>spring-aop</artifactId>

+			<version>${springframework.version}</version>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>spring-test</artifactId>

+			<version>${springframework.version}</version>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>spring-tx</artifactId>

+			<version>${springframework.version}</version>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>spring-web</artifactId>

+			<version>${springframework.version}</version>

+		</dependency>

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>spring-webmvc</artifactId>

+			<version>${springframework.version}</version>

+		</dependency>

+	</dependencies>

+</project>

diff --git a/onap-enabler-infra/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java b/onap-enabler-infra/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java
new file mode 100644
index 0000000..da07bba
--- /dev/null
+++ b/onap-enabler-infra/src/main/java/org/onap/portalapp/conf/ExternalAppConfig.java
@@ -0,0 +1,239 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.conf;

+

+import javax.sql.DataSource;

+

+import org.onap.portalapp.login.LoginStrategyImpl;

+import org.onap.portalapp.scheduler.RegistryAdapter;

+import org.onap.portalsdk.core.auth.LoginStrategy;

+import org.onap.portalsdk.core.conf.AppConfig;

+import org.onap.portalsdk.core.conf.Configurable;

+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;

+import org.onap.portalsdk.core.objectcache.AbstractCacheManager;

+import org.onap.portalsdk.core.service.DataAccessService;

+import org.onap.portalsdk.core.util.CacheManager;

+import org.onap.portalsdk.core.util.SystemProperties;

+import org.springframework.beans.factory.annotation.Autowired;

+import org.springframework.beans.factory.annotation.Value;

+import org.springframework.context.annotation.Bean;

+import org.springframework.context.annotation.ComponentScan;

+import org.springframework.context.annotation.Configuration;

+import org.springframework.context.annotation.DependsOn;

+import org.springframework.context.annotation.Import;

+import org.springframework.context.annotation.Profile;

+import org.springframework.context.annotation.PropertySource;

+import org.springframework.scheduling.annotation.EnableAsync;

+import org.springframework.scheduling.annotation.EnableScheduling;

+import org.springframework.scheduling.quartz.SchedulerFactoryBean;

+import org.springframework.scheduling.quartz.SpringBeanJobFactory;

+import org.springframework.web.multipart.commons.CommonsMultipartResolver;

+import org.springframework.web.servlet.ViewResolver;

+import org.springframework.web.servlet.config.annotation.EnableWebMvc;

+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;

+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

+import org.springframework.core.io.Resource;

+import org.springframework.jdbc.datasource.init.DataSourceInitializer;

+import org.springframework.jdbc.datasource.init.DatabasePopulator;

+import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;

+

+/**

+ * ONAP Portal SDK sample application. Extends core AppConfig class to

+ * reuse interceptors, view resolvers and other features defined there.

+ */

+@Configuration

+@EnableWebMvc

+@ComponentScan(basePackages = {"org.onap"})

+@PropertySource(value = { "${container.classpath:}/WEB-INF/conf/app/test.properties" }, ignoreResourceNotFound = true)

+@Profile("src")

+@EnableAsync

+@EnableScheduling

+public class ExternalAppConfig extends AppConfig implements Configurable {

+

+	private RegistryAdapter schedulerRegistryAdapter;

+    /** The Constant LOG. */

+    private static final EELFLoggerDelegate LOG = EELFLoggerDelegate.getLogger(ExternalAppConfig.class);

+ 

+    /** The vid schema script. */

+    @Value("classpath:osam-core-schema.sql")

+    private Resource osamCoreSchemaScript;

+

+    /** The vid data script. */

+    @Value("classpath:osam-core-data.sql")

+    private Resource osamCoreDataScript;

+    

+    /**

+     * The Class InnerConfiguration.

+     */

+	@Configuration

+	@Import(SystemProperties.class)

+	static class InnerConfiguration {

+	}

+

+	/**

+	 * @see org.onap.portalsdk.core.conf.AppConfig#viewResolver()

+	 */

+	@Override

+	public ViewResolver viewResolver() {

+		return super.viewResolver();

+	}

+

+	/**

+	 * @see org.onap.portalsdk.core.conf.AppConfig#addResourceHandlers(ResourceHandlerRegistry)

+	 * 

+	 * @param registry

+	 */

+	@Override

+	public void addResourceHandlers(ResourceHandlerRegistry registry) {

+		super.addResourceHandlers(registry);

+	}

+

+	/**

+	 * @see org.onap.portalsdk.core.conf.AppConfig#dataAccessService()

+	 */

+	@Override

+	public DataAccessService dataAccessService() {

+		// Echo the JDBC URL to assist developers when starting the app.

+		System.out.println("ExternalAppConfig: " + SystemProperties.DB_CONNECTIONURL + " is "

+				+ SystemProperties.getProperty(SystemProperties.DB_CONNECTIONURL));

+		return super.dataAccessService();

+	}

+

+	/**

+	 * Creates a new list with a single entry that is the external app

+	 * definitions.xml path.

+	 * 

+	 * @return List of String, size 1

+	 */

+	/*@Override

+	public List<String> addTileDefinitions() {

+		List<String> definitions = new ArrayList<>();

+		definitions.add("/WEB-INF/defs/definitions.xml");

+		return definitions;

+	}*/

+

+	/**

+	 * Adds request interceptors to the specified registry by calling

+	 * {@link AppConfig#addInterceptors(InterceptorRegistry)}, but excludes

+	 * certain paths from the session timeout interceptor.

+	 */

+//	@Override

+	//public void addInterceptors(InterceptorRegistry registry) {

+//		super.setExcludeUrlPathsForSessionTimeout("/login_external", "*/login_external.htm", "login", "/login.htm",

+//				"/api*", "/single_signon.htm", "/single_signon");

+//		super.addInterceptors(registry);

+//	}

+

+	/**

+	 * Creates and returns a new instance of a {@link CacheManager} class.

+	 * 

+	 * @return New instance of {@link CacheManager}

+	 */

+	@Bean

+	public AbstractCacheManager cacheManager() {

+		return new CacheManager();

+	}

+

+	/**

+	 * Creates and returns a new instance of a {@link SchedulerFactoryBean} and

+	 * populates it with triggers.

+	 * 

+	 * @return New instance of {@link SchedulerFactoryBean}

+	 * @throws Exception

+	 */

+	@Bean // ANNOTATION COMMENTED OUT

+	// APPLICATIONS REQUIRING QUARTZ SHOULD RESTORE ANNOTATION

+	@DependsOn("dataSourceInitializer")

+	public SchedulerFactoryBean schedulerFactoryBean() throws Exception {

+		SchedulerFactoryBean scheduler = new SchedulerFactoryBean();

+		scheduler.setTriggers(schedulerRegistryAdapter.getTriggers());

+		scheduler.setConfigLocation(appApplicationContext.getResource("WEB-INF/conf/quartz.properties"));

+		scheduler.setDataSource(dataSource());

+	    scheduler.setJobFactory(new SpringBeanJobFactory());

+		return scheduler;

+	}

+

+	

+	/**

+     * Data source initializer.

+     *

+     * @param dataSource the data source

+     * @return the data source initializer

+     */

+    @Bean

+    public DataSourceInitializer dataSourceInitializer(DataSource dataSource) {

+        

+        LOG.info("Initializing OSAM CORE data source");

+        

+        final DataSourceInitializer initializer = new DataSourceInitializer();

+        initializer.setDataSource(dataSource);

+        initializer.setDatabasePopulator(databasePopulator());

+        return initializer;

+    }

+    

+    /**

+     * Database populator.

+     *

+     * @return the database populator

+     */

+    public DatabasePopulator databasePopulator() {

+        LOG.info("Populating OSAM CORE data source");

+        

+        final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();

+        populator.addScript(osamCoreSchemaScript);

+        populator.addScript(osamCoreDataScript);

+        return populator;

+    }

+	

+

+	/*@Bean

+	public SpringLiquibase liquibaseBean(DataSource dataSource) {

+		SpringLiquibase springLiquibase = new SpringLiquibase();

+		springLiquibase.setDataSource(dataSource);

+		springLiquibase.setChangeLog("classpath:db-master-changelog.xml");

+		return springLiquibase;

+	}*/

+	

+	/**

+	 * Sets the scheduler registry adapter.

+	 * 

+	 * @param schedulerRegistryAdapter

+	 */

+	@Autowired

+	public void setSchedulerRegistryAdapter(final RegistryAdapter schedulerRegistryAdapter) {

+		this.schedulerRegistryAdapter = schedulerRegistryAdapter;

+	}

+

+	@Bean

+	public LoginStrategy loginStrategy() {

+		return new LoginStrategyImpl();

+	}

+

+	@Bean

+	public CommonsMultipartResolver multipartResolver() {

+		CommonsMultipartResolver resolver=new CommonsMultipartResolver();

+		resolver.setDefaultEncoding("utf-8");

+		return resolver;

+	}

+

+}

diff --git a/onap-enabler-infra/src/main/java/org/onap/portalapp/conf/ExternalAppInitializer.java b/onap-enabler-infra/src/main/java/org/onap/portalapp/conf/ExternalAppInitializer.java
new file mode 100644
index 0000000..2f97736
--- /dev/null
+++ b/onap-enabler-infra/src/main/java/org/onap/portalapp/conf/ExternalAppInitializer.java
@@ -0,0 +1,69 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.conf;

+

+import org.onap.portalsdk.core.conf.AppInitializer;

+import javax.servlet.ServletContext;

+import javax.servlet.ServletException;

+import java.util.TimeZone;

+

+public class ExternalAppInitializer extends AppInitializer {

+

+	@Override

+	protected Class<?>[] getRootConfigClasses() {

+		return super.getRootConfigClasses();

+	}

+

+	@Override

+	protected Class<?>[] getServletConfigClasses() {

+		Class<?> appConfigClass = ExternalAppConfig.class;

+		// Show something on stdout to indicate the app is starting.

+		System.out.println("ExternalAppInitializer: servlet configuration class is " + appConfigClass.getName());

+		return new Class[] { appConfigClass };

+	}

+

+	/*

+	 * URL request will direct to the Spring dispatcher for processing

+	 */

+	@Override

+	protected String[] getServletMappings() {

+		return super.getServletMappings();

+	}

+

+//	@Override

+//	public void onStartup(ServletContext servletContext) throws ServletException {

+//		super.onStartup(servletContext);

+//		setDefaultTimeZoneToUTC();

+//		servletContext.addFilter("requestFromLocalhost", LocalhostFilter.class)

+//				.addMappingForUrlPatterns(null, false,

+//						String.format("/%s/%s/*", ChangeManagementController.CHANGE_MANAGEMENT, ChangeManagementController.VNF_WORKFLOW_RELATION),

+//						String.format("/%s/*", RoleGeneratorController.GENERATE_ROLE_SCRIPT),

+//						String.format("/%s/*", MaintenanceController.MAINTENANCE));

+//	}

+

+	//set time zone to UTC so Dates would be written to DB in UTC timezone

+	private void setDefaultTimeZoneToUTC() {

+		System.setProperty("user.timezone", "UTC");

+		TimeZone.setDefault(TimeZone.getTimeZone("UTC")); //since TimeZone cache previous user.timezone

+	}

+}

diff --git a/onap-enabler-infra/src/main/java/org/onap/portalapp/conf/HibernateMappingLocations.java b/onap-enabler-infra/src/main/java/org/onap/portalapp/conf/HibernateMappingLocations.java
new file mode 100644
index 0000000..d6d8f62
--- /dev/null
+++ b/onap-enabler-infra/src/main/java/org/onap/portalapp/conf/HibernateMappingLocations.java
@@ -0,0 +1,47 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.conf;

+

+import org.onap.portalsdk.core.conf.HibernateMappingLocatable;

+import org.springframework.context.annotation.Profile;

+import org.springframework.core.io.ClassPathResource;

+import org.springframework.core.io.Resource;

+import org.springframework.stereotype.Component;

+

+@Component

+@Profile("src")

+public class HibernateMappingLocations implements HibernateMappingLocatable {

+

+	@Override

+	public Resource[] getMappingLocations() {

+		return new Resource[] { new ClassPathResource("../fusion/orm/Fusion.hbm.xml"),

+				new ClassPathResource("../fusion/orm/Workflow.hbm.xml"),

+				new ClassPathResource("../fusion/orm/RNoteBookIntegration.hbm.xml") };

+	}

+

+	@Override

+	public String[] getPackagesToScan() {

+		return new String[] { "org.onap" };

+	}

+

+}

diff --git a/onap-enabler-infra/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java b/onap-enabler-infra/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java
new file mode 100644
index 0000000..e2f8d3d
--- /dev/null
+++ b/onap-enabler-infra/src/main/java/org/onap/portalapp/filter/SecurityXssFilter.java
@@ -0,0 +1,92 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.filter;

+

+import java.io.IOException;

+import java.io.UnsupportedEncodingException;

+

+import javax.servlet.FilterChain;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import org.apache.commons.lang.StringUtils;

+import org.onap.portalapp.util.SecurityXssValidator;

+import org.springframework.web.filter.OncePerRequestFilter;

+import org.springframework.web.util.ContentCachingRequestWrapper;

+import org.springframework.web.util.ContentCachingResponseWrapper;

+import org.springframework.web.util.WebUtils;

+

+public class SecurityXssFilter extends OncePerRequestFilter {

+

+	private static final String BAD_REQUEST = "BAD_REQUEST";

+

+	private SecurityXssValidator validator = SecurityXssValidator.getInstance();

+

+	private static String getRequestData(final HttpServletRequest request) throws UnsupportedEncodingException {

+		String payload = null;

+		ContentCachingRequestWrapper wrapper = WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class);

+		if (wrapper != null) {

+			byte[] buf = wrapper.getContentAsByteArray();

+			if (buf.length > 0) {

+				payload = new String(buf, 0, buf.length, wrapper.getCharacterEncoding());

+			}

+		}

+		return payload;

+	}

+

+	private static String getResponseData(final HttpServletResponse response) throws IOException {

+		String payload = null;

+		ContentCachingResponseWrapper wrapper = WebUtils.getNativeResponse(response,

+				ContentCachingResponseWrapper.class);

+		if (wrapper != null) {

+			byte[] buf = wrapper.getContentAsByteArray();

+			if (buf.length > 0) {

+				payload = new String(buf, 0, buf.length, wrapper.getCharacterEncoding());

+				wrapper.copyBodyToResponse();

+			}

+		}

+		return payload;

+	}

+

+	@Override

+	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)

+			throws ServletException, IOException {

+

+		if (request.getMethod().equalsIgnoreCase("POST") || request.getMethod().equalsIgnoreCase("PUT")) {

+

+			HttpServletRequest requestToCache = new ContentCachingRequestWrapper(request);

+			HttpServletResponse responseToCache = new ContentCachingResponseWrapper(response);

+			filterChain.doFilter(requestToCache, responseToCache);

+			String requestData = getRequestData(requestToCache);

+			String responseData = getResponseData(responseToCache);

+			if (StringUtils.isNotBlank(requestData) && validator.denyXSS(requestData)) {

+				throw new SecurityException(BAD_REQUEST);

+			}

+

+		} else {

+			filterChain.doFilter(request, response);

+		}

+

+	}

+}

diff --git a/onap-enabler-infra/src/main/java/org/onap/portalapp/login/LoginStrategyImpl.java b/onap-enabler-infra/src/main/java/org/onap/portalapp/login/LoginStrategyImpl.java
new file mode 100644
index 0000000..3b20cb1
--- /dev/null
+++ b/onap-enabler-infra/src/main/java/org/onap/portalapp/login/LoginStrategyImpl.java
@@ -0,0 +1,115 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+

+package org.onap.portalapp.login;

+

+import javax.servlet.http.Cookie;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import org.onap.portalsdk.core.auth.LoginStrategy;

+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;

+import org.onap.portalsdk.core.onboarding.exception.CipherUtilException;

+import org.onap.portalsdk.core.onboarding.exception.PortalAPIException;

+import org.onap.portalsdk.core.onboarding.util.CipherUtil;

+import org.onap.portalsdk.core.util.SystemProperties;

+import org.springframework.web.servlet.ModelAndView;

+

+/**

+ * Implements basic single-signon login strategy for open-source applications

+ * when users start at Portal. Extracts an encrypted user ID sent by Portal.

+ */

+public class LoginStrategyImpl extends LoginStrategy {

+

+	private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(LoginStrategyImpl.class);

+

+	/**

+	 * login for open source is same as external login in the non-open-source

+	 * version.

+	 */

+	@Override

+	public ModelAndView doLogin(HttpServletRequest request, HttpServletResponse response) throws Exception {

+		return doExternalLogin(request, response);

+	}

+

+	@Override

+	public String getUserId(HttpServletRequest request) throws PortalAPIException {

+		// Check ECOMP Portal cookie

+		Cookie ep = getCookie(request, EP_SERVICE);

+		if (ep == null) {

+			logger.debug(EELFLoggerDelegate.debugLogger, "getUserId: no EP_SERVICE cookie, returning null");

+			return null;

+		}

+

+		String userid = null;

+		try {

+			userid = getUserIdFromCookie(request);

+		} catch (Exception e) {

+			logger.error(EELFLoggerDelegate.errorLogger, "getUserId failed", e);

+		}

+		return userid;

+	}

+

+	/**

+	 * Searches the request for the user-ID cookie and decrypts the value using a

+	 * key configured in properties

+	 * 

+	 * @param request

+	 *            HttpServletRequest

+	 * @return User ID

+	 * @throws CipherUtilException

+	 *             On any failure to decrypt

+	 */

+	private String getUserIdFromCookie(HttpServletRequest request) throws CipherUtilException {

+		String userId = "";

+		Cookie userIdCookie = getCookie(request, USER_ID);

+		if (userIdCookie != null) {

+			final String cookieValue = userIdCookie.getValue();

+			if (!SystemProperties.containsProperty(SystemProperties.Decryption_Key))

+				throw new IllegalStateException("Failed to find property " + SystemProperties.Decryption_Key);

+			final String decryptionKey = SystemProperties.getProperty(SystemProperties.Decryption_Key);

+			userId = CipherUtil.decrypt(cookieValue, decryptionKey);

+			logger.debug(EELFLoggerDelegate.debugLogger, "getUserIdFromCookie: decrypted as {}", userId);

+		}

+		return userId;

+	}

+

+	/**

+	 * Searches the request for the named cookie.

+	 * 

+	 * @param request

+	 *            HttpServletRequest

+	 * @param cookieName

+	 *            Name of desired cookie

+	 * @return Cookie if found; otherwise null.

+	 */

+	private Cookie getCookie(HttpServletRequest request, String cookieName) {

+		Cookie[] cookies = request.getCookies();

+		if (cookies != null)

+			for (Cookie cookie : cookies)

+				if (cookie.getName().equals(cookieName))

+					return cookie;

+		return null;

+	}

+

+}

diff --git a/onap-enabler-infra/src/main/java/org/onap/portalapp/scheduler/Register.java b/onap-enabler-infra/src/main/java/org/onap/portalapp/scheduler/Register.java
new file mode 100644
index 0000000..6a97fd9
--- /dev/null
+++ b/onap-enabler-infra/src/main/java/org/onap/portalapp/scheduler/Register.java
@@ -0,0 +1,71 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.scheduler;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;

+import org.onap.portalsdk.core.scheduler.Registerable;

+import org.onap.portalsdk.core.util.SystemProperties;

+import org.quartz.Trigger;

+import org.springframework.beans.factory.annotation.Autowired;

+import org.springframework.context.annotation.DependsOn;

+import org.springframework.stereotype.Component;

+

+@Component

+@DependsOn({ "logRegistry", "systemProperties" })

+public class Register implements Registerable {

+

+	private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(Register.class);

+

+	private List<Trigger> scheduleTriggers = new ArrayList<>();

+	Trigger[] trigger = new Trigger[1];

+

+	@Autowired

+	private LogRegistry logRegistry;

+

+	@Override

+	public Trigger[] getTriggers() {

+		return getScheduleTriggers().toArray(trigger);

+	}

+

+	@Override

+	public void registerTriggers() {

+		// if the property value is not available; the cron will not be added.

+		if (SystemProperties.containsProperty(SystemProperties.LOG_CRON)) {

+			logger.debug(EELFLoggerDelegate.debugLogger,

+					"Adding log registry for cron property {}", SystemProperties.getProperty(SystemProperties.LOG_CRON));

+			getScheduleTriggers().add(logRegistry.getTrigger());

+		}

+	}

+

+	public List<Trigger> getScheduleTriggers() {

+		return scheduleTriggers;

+	}

+

+	public void setScheduleTriggers(List<Trigger> scheduleTriggers) {

+		this.scheduleTriggers = scheduleTriggers;

+	}

+

+}

diff --git a/onap-enabler-infra/src/main/java/org/onap/portalapp/scheduler/RegistryAdapter.java b/onap-enabler-infra/src/main/java/org/onap/portalapp/scheduler/RegistryAdapter.java
new file mode 100644
index 0000000..0a3f2a1
--- /dev/null
+++ b/onap-enabler-infra/src/main/java/org/onap/portalapp/scheduler/RegistryAdapter.java
@@ -0,0 +1,90 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.scheduler;

+

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.util.List;

+

+import org.onap.portalsdk.core.scheduler.Registerable;

+import org.onap.portalsdk.workflow.services.WorkflowScheduleService;

+import org.quartz.Trigger;

+import org.springframework.beans.factory.annotation.Autowired;

+import org.springframework.scheduling.quartz.SchedulerFactoryBean;

+import org.springframework.stereotype.Component;

+

+@Component

+public class RegistryAdapter {

+

+	@Autowired

+	private Registerable registry;

+

+	@Autowired

+	private WorkflowScheduleService workflowScheduleService;

+

+	private SchedulerFactoryBean schedulerBean;

+

+	Trigger [] trigger = new Trigger[1];

+

+	public Trigger[] getTriggers() {

+		registry.registerTriggers();

+		List<Trigger> allTriggers = new ArrayList<>();

+		List<Trigger> coreTriggers = addCoreTriggers();

+		final Trigger[] extTriggerArray = registry.getTriggers();

+		allTriggers.addAll(Arrays.asList(extTriggerArray));

+		allTriggers.addAll(coreTriggers);

+		return allTriggers.toArray(trigger);

+	}

+

+	public List<Trigger> addCoreTriggers() {

+		// On startup of the application after crash recovery, invoke workflow

+		// schedule trigger

+		List<Trigger> triggers = getWorkflowScheduleService().triggerWorkflowScheduling();

+		return triggers;

+	}

+

+	public void setSchedulerBean(final SchedulerFactoryBean schedulerBean) {

+		this.schedulerBean = schedulerBean;

+	}

+

+	public SchedulerFactoryBean getSchedulerBean() {

+		return schedulerBean;

+	}

+

+	public Registerable getRegistry() {

+		return registry;

+	}

+

+	public void setRegistry(Registerable registry) {

+		this.registry = registry;

+	}

+

+	public WorkflowScheduleService getWorkflowScheduleService() {

+		return workflowScheduleService;

+	}

+

+	public void setWorkflowScheduleService(WorkflowScheduleService workflowScheduleService) {

+		this.workflowScheduleService = workflowScheduleService;

+	}

+

+}

diff --git a/onap-enabler-infra/src/main/java/org/onap/portalapp/service/AdminAuthExtension.java b/onap-enabler-infra/src/main/java/org/onap/portalapp/service/AdminAuthExtension.java
new file mode 100644
index 0000000..6bed47d
--- /dev/null
+++ b/onap-enabler-infra/src/main/java/org/onap/portalapp/service/AdminAuthExtension.java
@@ -0,0 +1,58 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.service;

+

+import java.util.Set;

+

+import org.onap.portalsdk.core.domain.Role;

+import org.onap.portalsdk.core.domain.User;

+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;

+import org.springframework.stereotype.Service;

+import org.springframework.transaction.annotation.Transactional;

+

+

+@Service("adminAuthExtension")

+@Transactional

+/**

+ * Provides empty implementations of the methods in IAdminAuthExtension.

+ */

+public class AdminAuthExtension implements IAdminAuthExtension {

+

+	private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(AdminAuthExtension.class);

+

+	@Override

+	public void saveUserExtension(User user) {

+		logger.debug(EELFLoggerDelegate.debugLogger, "saveUserExtension");

+	}

+

+	@Override

+	public void editUserExtension(User user) {

+		logger.debug(EELFLoggerDelegate.debugLogger, "editUserExtension");

+	}

+

+	@Override

+	public void saveUserRoleExtension(Set<Role> roles, User user) {

+		logger.debug(EELFLoggerDelegate.debugLogger, "saveUserRoleExtension");

+	}

+

+}

diff --git a/onap-enabler-infra/src/main/resources/cache.ccf b/onap-enabler-infra/src/main/resources/cache.ccf
new file mode 100644
index 0000000..22cace1
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/cache.ccf
@@ -0,0 +1,52 @@
+#<!--/*-

+#        * ============LICENSE_START=======================================================

+#        * OSAM Core

+#        * ================================================================================

+#        * Copyright (C) 2018 AT&T

+#        * ================================================================================

+#        * Licensed under the Apache License, Version 2.0 (the "License");

+#        * you may not use this file 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.

+#        * ============LICENSE_END=========================================================

+#        */

+#-->

+

+

+# DEFAULT CACHE REGION

+jcs.default=DC

+jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

+jcs.default.cacheattributes.MaxObjects=1000

+jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

+jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes

+jcs.default.elementattributes.IsEternal=true

+jcs.default.elementattributes.IsSpool=true

+

+

+# MEMORY SHRINKING CONFIGURATION (Commented)

+#jcs.default.cacheattributes.UseMemoryShrinker=true

+#jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=3600

+#jcs.default.cacheattributes.ShrinkerIntervalSeconds=60

+#jcs.default.cacheattributes.MaxSpoolPerRun=500

+#jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes

+#jcs.default.elementattributes.IsEternal=false

+

+

+# AUXILLARY CACHE CONFIGURATION

+jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory

+jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes

+jcs.auxiliary.DC.attributes.DiskPath=/tmp

+

+

+# PRE-DEFINED REGION FOR LOOKUP DATA

+jcs.region.lookUpObjectCache=DC

+jcs.region.lookUpObjectCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

+jcs.region.lookUpObjectCache.cacheattributes.MaxObjects=4000

+jcs.region.lookUpObjectCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

diff --git a/onap-enabler-infra/src/main/resources/cache_template.ccf b/onap-enabler-infra/src/main/resources/cache_template.ccf
new file mode 100644
index 0000000..19c36bb
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/cache_template.ccf
@@ -0,0 +1,52 @@
+#<!--/*-

+#        * ============LICENSE_START=======================================================

+#        * OSAM Core

+#        * ================================================================================

+#        * Copyright (C) 2018 AT&T

+#        * ================================================================================

+#        * Licensed under the Apache License, Version 2.0 (the "License");

+#        * you may not use this file 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.

+#        * ============LICENSE_END=========================================================

+#        */

+#-->

+

+

+# DEFAULT CACHE REGION

+jcs.default=DC

+jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

+jcs.default.cacheattributes.MaxObjects=1000

+jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

+jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes

+jcs.default.elementattributes.IsEternal=true

+jcs.default.elementattributes.IsSpool=true

+

+

+# MEMORY SHRINKING CONFIGURATION (Commented)

+#jcs.default.cacheattributes.UseMemoryShrinker=true

+#jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=3600

+#jcs.default.cacheattributes.ShrinkerIntervalSeconds=60

+#jcs.default.cacheattributes.MaxSpoolPerRun=500

+#jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes

+#jcs.default.elementattributes.IsEternal=false

+

+

+# AUXILLARY CACHE CONFIGURATION

+jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory

+jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes

+jcs.auxiliary.DC.attributes.DiskPath=${CACHE_DIRECTORY}

+

+

+# PRE-DEFINED REGION FOR LOOKUP DATA

+jcs.region.lookUpObjectCache=DC

+jcs.region.lookUpObjectCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

+jcs.region.lookUpObjectCache.cacheattributes.MaxObjects=4000

+jcs.region.lookUpObjectCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

diff --git a/onap-enabler-infra/src/main/resources/catalog.json b/onap-enabler-infra/src/main/resources/catalog.json
new file mode 100644
index 0000000..e5fb521
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/catalog.json
@@ -0,0 +1,174 @@
+{

+	"services": {

+		"0346aa9f-57b7-458a-9681-daf5b19d52b0": {

+			"uuid": "0346aa9f-57b7-458a-9681-daf5b19d52b0",

+			"name": "The Worst Service",

+			"version": "1.0",

+			"toscaModelURL": "sampleTosca.csar",

+			"category": "Bad Services",

+			"lifecycleState": "NOT_CERTIFIED_CHECKOUT",

+			"lastUpdaterUserId": "example@example.org",

+			"lastUpdaterFullName": "Example User",

+			"distributionStatus": "DISTRIBUTION_REJECTED",

+			"artifacts": [],

+			"resources": []

+		},

+		"1346aa9f-57b7-458a-9681-daf5b19d52b1": {

+			"uuid": "1346aa9f-57b7-458a-9681-daf5b19d52b1",

+			"name": "The Worst Service",

+			"version": "1.1",

+			"toscaModelURL": "sampleTosca.csar",

+			"category": "Bad Services",

+			"lifecycleState": "CERTIFIED",

+			"lastUpdaterUserId": "example@example.org",

+			"lastUpdaterFullName": "Example User",

+			"distributionStatus": "DISTRIBUTED",

+			"artifacts": [],

+			"resources": []

+		},

+		"3346aa9f-57b7-458a-9681-daf5b19d52b3": {

+			"uuid": "3346aa9f-57b7-458a-9681-daf5b19d52b3",

+			"name": "Bland Service",

+			"version": "1.9",

+			"toscaModelURL": "sampleTosca.csar",

+			"category": "Neutral Services",

+			"lifecycleState": "CERTIFIED",

+			"lastUpdaterUserId": "example@example.org",

+			"lastUpdaterFullName": "Example User",

+			"distributionStatus": "DISTRIBUTION_NOT_APPROVED",

+			"artifacts": [],

+			"resources": []

+		},

+		"2346aa9f-57b7-458a-9681-daf5b19d52b2": {

+			"uuid": "2346aa9f-57b7-458a-9681-daf5b19d52b2",

+			"name": "The Best Service",

+			"version": "1.3",

+			"toscaModelURL": "sampleTosca.csar",

+			"category": "Good Services",

+			"lifecycleState": "CERTIFIED",

+			"lastUpdaterUserId": "example@example.org",

+			"lastUpdaterFullName": "Example User",

+			"distributionStatus": "DISTRIBUTION_APPROVED",

+			"artifacts": [

+					{

+						"artifactUUID": "0cf78c81-1246-45e7-a190-eaa309ee5680",

+						"generatedFromUUID": "3cf78c81-1246-45e7-a190-eaa309ee5680",

+						"artifactName": "The Worst Artifact",

+						"artifactType": "HEAT",

+						"artifactDescription": "This is the worst artifact",

+						"artifactURL": "http://www.openecomp.org/",

+						"artifactTimeout": "60",

+						"artifactChecksum": "A worthy checksum",

+						"artifactVersion": "0.1",

+					},

+					{

+						"artifactUUID": "1cf78c81-1246-45e7-a190-eaa309ee5681",

+						"generatedFromUUID": "3cf78c81-1246-45e7-a190-eaa309ee5680",

+						"artifactName": "The Worst Artifact",

+						"artifactType": "HEAT",

+						"artifactDescription": "This is the worst artifact",

+						"artifactURL": "http://www.openecomp.org/",

+						"artifactTimeout": "60",

+						"artifactChecksum": "A worthy checksum",

+						"artifactVersion": "0.1",

+					},

+					{

+						"artifactUUID": "2cf78c81-1246-45e7-a190-eaa309ee5682",

+						"generatedFromUUID": "3cf78c81-1246-45e7-a190-eaa309ee5680",

+						"artifactName": "The Worst Artifact",

+						"artifactType": "HEAT",

+						"artifactDescription": "This is the worst artifact",

+						"artifactURL": "http://www.openecomp.org/",

+						"artifactTimeout": "60",

+						"artifactChecksum": "A worthy checksum",

+						"artifactVersion": "0.1",

+					}

+			],

+			"resources": []

+		}

+	},

+	"resources": {

+		"2f92b5b0-10ff-4cf4-9531-88546fe88a42": {

+			"uuid": "2f92b5b0-10ff-4cf4-9531-88546fe88a42",

+			"invariantUUID": "df92b5b0-10ff-4cf4-9531-88546fe88a4d",

+			"name": "The Worst Resource",

+			"version": "0.1",

+			"toscaModelURL": "sampleTosca.csar",

+			"toscaModel": "http://www.openecomp.org/",

+			"toscaResourceName": "The Worst Resource (TOSCA)",

+			"category": "Bad Resources",

+			"subCategory": "Really Bad Resources",

+			"resourceType": "VF",

+			"lifecycleState": "CERTIFIED",

+			"lastUpdaterUserId": "example@example.org",

+			"lastUpdaterFullName": "Example User",

+			"artifacts": [

+					{

+						"artifactUUID": "0cf78c81-1246-45e7-a190-eaa309ee5680",

+						"generatedFromUUID": "3cf78c81-1246-45e7-a190-eaa309ee5680",

+						"artifactName": "The Worst Artifact",

+						"artifactType": "HEAT",

+						"artifactDescription": "This is the worst artifact",

+						"artifactURL": "http://www.openecomp.org/",

+						"artifactTimeout": "60",

+						"artifactChecksum": "A worthy checksum",

+						"artifactVersion": "0.1",

+					},

+					{

+						"artifactUUID": "1cf78c81-1246-45e7-a190-eaa309ee5681",

+						"generatedFromUUID": "3cf78c81-1246-45e7-a190-eaa309ee5680",

+						"artifactName": "The Worst Artifact",

+						"artifactType": "HEAT",

+						"artifactDescription": "This is the worst artifact",

+						"artifactURL": "http://www.openecomp.org/",

+						"artifactTimeout": "60",

+						"artifactChecksum": "A worthy checksum",

+						"artifactVersion": "0.1",

+					},

+					{

+						"artifactUUID": "2cf78c81-1246-45e7-a190-eaa309ee5682",

+						"generatedFromUUID": "3cf78c81-1246-45e7-a190-eaa309ee5680",

+						"artifactName": "The Worst Artifact",

+						"artifactType": "HEAT",

+						"artifactDescription": "This is the worst artifact",

+						"artifactURL": "http://www.openecomp.org/",

+						"artifactTimeout": "60",

+						"artifactChecksum": "A worthy checksum",

+						"artifactVersion": "0.1",

+					}

+			]

+		},

+		"0f92b5b0-10ff-4cf4-9531-88546fe88a40": {

+			"uuid": "0f92b5b0-10ff-4cf4-9531-88546fe88a40",

+			"invariantUUID": "df92b5b0-10ff-4cf4-9531-88546fe88a4d",

+			"name": "The Worst Resource",

+			"version": "0.1",

+			"toscaModelURL": "sampleTosca.csar",

+			"toscaModel": "http://www.openecomp.org/",

+			"toscaResourceName": "The Worst Resource (TOSCA)",

+			"category": "Bad Resources",

+			"subCategory": "Really Bad Resources",

+			"resourceType": "VF",

+			"lifecycleState": "CERTIFIED",

+			"lastUpdaterUserId": "example@example.org",

+			"lastUpdaterFullName": "Example User",

+			"artifacts": []

+		},

+		"1f92b5b0-10ff-4cf4-9531-88546fe88a41": {

+			"uuid": "1f92b5b0-10ff-4cf4-9531-88546fe88a41",

+			"invariantUUID": "df92b5b0-10ff-4cf4-9531-88546fe88a4d",

+			"name": "The Worst Resource",

+			"version": "0.1",

+			"toscaModelURL": "sampleTosca.csar",

+			"toscaModel": "http://www.openecomp.org/",

+			"toscaResourceName": "The Worst Resource (TOSCA)",

+			"category": "Bad Resources",

+			"subCategory": "Really Bad Resources",

+			"resourceType": "VF",

+			"lifecycleState": "CERTIFIED",

+			"lastUpdaterUserId": "example@example.org",

+			"lastUpdaterFullName": "Example User",

+			"artifacts": []

+		}

+	}

+}
\ No newline at end of file
diff --git a/onap-enabler-infra/src/main/resources/key.properties b/onap-enabler-infra/src/main/resources/key.properties
new file mode 100644
index 0000000..d2bfb48
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/key.properties
@@ -0,0 +1,41 @@
+###

+# ============LICENSE_START==========================================

+# ONAP Portal SDK

+# ===================================================================

+# 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============================================

+#

+# ECOMP is a trademark and service mark of AT&T Intellectual Property.

+###

+

+# Properties read by the ECOMP Framework library (epsdk-fw)

+

+cipher.enc.key = AGLDdG4D04BKm2IxIWEr8o==!
\ No newline at end of file
diff --git a/onap-enabler-infra/src/main/resources/logback.xml b/onap-enabler-infra/src/main/resources/logback.xml
new file mode 100644
index 0000000..14b534d
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/logback.xml
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  ============LICENSE_START==========================================

+  ONAP Portal SDK

+  ===================================================================

+  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============================================

+ 

+  ECOMP is a trademark and service mark of AT&T Intellectual Property.

+  -->

+<configuration scan="true" scanPeriod="3 seconds" debug="true">

+  <!-- 

+  Logback files for the ONAP Portal SDK Application "epsdk-app-os"

+  are created in directory ${catalina.base}/logs/epsdk_app_os;

+  e.g., apache-tomcat-8.0.35/logs/epsdk_app_os/application.log  

+  -->

+  <!--<jmxConfigurator /> -->

+

+  <!--  specify the component name -->

+  <property name="componentName" value="ep_sdk_app"></property>

+  

+  <!--  specify the base path of the log directory -->

+  <property name="logDirPrefix" value="${catalina.base}/logs"></property>

+  

+  <!-- The directories where logs are written -->

+  <property name="logDirectory" value="${logDirPrefix}/${componentName}" />

+  <!-- Can easily relocate debug logs by modifying this path. -->

+  <property name="debugLogDirectory" value="${logDirPrefix}/${componentName}" />

+  

+  <!--  log file names -->

+  <property name="generalLogName" value="application" />

+  <property name="errorLogName" value="error" />

+  <property name="metricsLogName" value="metrics" />

+  <property name="auditLogName" value="audit" />

+  <property name="debugLogName" value="debug" />

+  <!--

+  These loggers are not used in code (yet). 

+  <property name="securityLogName" value="security" />

+  <property name="policyLogName" value="policy" />

+  <property name="performanceLogName" value="performance" />

+  <property name="serverLogName" value="server" />

+   -->

+  

+  <!-- 1610 Logging Fields Format Revisions --> 

+  <property name="auditLoggerPattern"

+	value="%X{AuditLogBeginTimestamp}|%X{AuditLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />

+

+  <property name="metricsLoggerPattern"

+	value="%X{MetricsLogBeginTimestamp}|%X{MetricsLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVisualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />

+

+  <property name="errorLoggerPattern"

+	value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{ClassName}|%X{AlertSeverity}|%X{ErrorCode}|%X{ErrorDescription}| %msg%n" />

+

+  <property name="defaultLoggerPattern"

+	value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ClassName}| %msg%n" />

+

+  <!-- use %class so library logging calls yield their class name -->

+  <property name="applicationLoggerPattern"

+	value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%class{36}| %msg%n" />

+

+  <!-- Example evaluator filter applied against console appender -->

+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

+    <encoder>

+      <pattern>${defaultLoggerPattern}</pattern>

+    </encoder>

+  </appender>

+

+  <!-- ============================================================================ -->

+  <!-- EELF Appenders -->

+  <!-- ============================================================================ -->

+

+  <!-- The EELFAppender is used to record events to the general application 

+    log -->

+    

+    

+  <appender name="EELF"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${generalLogName}.log</file>

+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 

+      <!-- daily rollover --> 

+      <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 

+ 

+      <!-- keep 30 days' worth of history capped at 3GB total size --> 

+      <maxHistory>30</maxHistory> 

+      <totalSizeCap>3GB</totalSizeCap> 

+ 

+    </rollingPolicy>

+    <encoder>

+      <pattern>${applicationLoggerPattern}</pattern>

+    </encoder>

+    <filter class="org.onap.portalapp.util.CustomLoggingFilter" />

+  </appender>

+  

+  <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <!-- Class name is part of caller data -->

+    <includeCallerData>true</includeCallerData>

+    <appender-ref ref="EELF" />

+  </appender>

+

+  <!-- EELF Security Appender. This appender is used to record security events 

+    to the security log file. Security events are separate from other loggers 

+    in EELF so that security log records can be captured and managed in a secure 

+    way separate from the other logs. This appender is set to never discard any 

+    events. -->

+  <!--     

+  <appender name="EELFSecurity"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${securityLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+      <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  

+  <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <discardingThreshold>0</discardingThreshold>

+    <appender-ref ref="EELFSecurity" />

+  </appender>

+   -->

+   

+  <!-- EELF Performance Appender. This appender is used to record performance 

+    records. -->

+  <!--

+  <appender name="EELFPerformance"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${performanceLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+      <outputPatternAsHeader>true</outputPatternAsHeader>

+      <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFPerformance" />

+  </appender>

+  -->

+

+  <!-- EELF Server Appender. This appender is used to record Server related 

+    logging events. The Server logger and appender are specializations of the 

+    EELF application root logger and appender. This can be used to segregate Server 

+    events from other components, or it can be eliminated to record these events 

+    as part of the application root log. -->

+  <!--

+  <appender name="EELFServer"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${serverLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+        <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFServer" />

+  </appender>

+   -->

+  

+  <!-- EELF Policy Appender. This appender is used to record Policy engine 

+    related logging events. The Policy logger and appender are specializations 

+    of the EELF application root logger and appender. This can be used to segregate 

+    Policy engine events from other components, or it can be eliminated to record 

+    these events as part of the application root log. -->

+  <!--

+  <appender name="EELFPolicy"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${policyLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+        <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFPolicy" />

+  </appender>

+  -->

+  

+  <!-- EELF Audit Appender. This appender is used to record audit engine 

+    related logging events. The audit logger and appender are specializations 

+    of the EELF application root logger and appender. This can be used to segregate 

+    Policy engine events from other components, or it can be eliminated to record 

+    these events as part of the application root log. -->

+    

+  <appender name="EELFAudit"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${auditLogName}.log</file>

+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 

+      <!-- daily rollover --> 

+      <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 

+ 

+      <!-- keep 30 days' worth of history capped at 3GB total size --> 

+      <maxHistory>30</maxHistory> 

+      <totalSizeCap>3GB</totalSizeCap> 

+ 

+    </rollingPolicy>

+    <encoder>

+         <pattern>${auditLoggerPattern}</pattern>

+    </encoder>

+  </appender>

+  <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFAudit" />

+  </appender>

+

+  <appender name="EELFMetrics"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${metricsLogName}.log</file>

+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 

+      <!-- daily rollover --> 

+      <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 

+ 

+      <!-- keep 30 days' worth of history capped at 3GB total size --> 

+      <maxHistory>30</maxHistory> 

+      <totalSizeCap>3GB</totalSizeCap> 

+ 

+    </rollingPolicy>

+    <encoder>

+      <pattern>${metricsLoggerPattern}</pattern>

+    </encoder>

+  </appender>

+  

+  

+  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFMetrics"/>

+  </appender>

+   

+  <appender name="EELFError"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${errorLogName}.log</file>

+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 

+      <!-- daily rollover --> 

+      <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 

+ 

+      <!-- keep 30 days' worth of history capped at 3GB total size --> 

+      <maxHistory>30</maxHistory> 

+      <totalSizeCap>3GB</totalSizeCap> 

+ 

+    </rollingPolicy>

+    <encoder>

+      <pattern>${errorLoggerPattern}</pattern>

+    </encoder>

+  </appender>

+  

+  <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFError"/>

+  </appender>

+  

+   <appender name="EELFDebug"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${debugLogDirectory}/${debugLogName}.log</file>

+    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 

+      <!-- daily rollover --> 

+      <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> 

+ 

+      <!-- keep 30 days' worth of history capped at 3GB total size --> 

+      <maxHistory>30</maxHistory> 

+      <totalSizeCap>3GB</totalSizeCap> 

+ 

+    </rollingPolicy>

+    <encoder>

+      <pattern>${defaultLoggerPattern}</pattern>

+    </encoder>

+  </appender>

+  

+  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFDebug" />

+  </appender>

+ 

+  

+ 

+

+  <logger name="org.onap.eelf" level="info" additivity="false">

+    <appender-ref ref="asyncEELF" />

+  </logger>

+

+  <logger name="org.onap.eelf.audit" level="info" additivity="false">

+    <appender-ref ref="asyncEELFAudit" />

+  </logger>

+  

+  <logger name="org.onap.eelf.debug" level="debug" additivity="false">

+    <appender-ref ref="asyncEELFDebug" />

+  </logger>

+	

+  <logger name="org.onap.eelf.error" level="info" additivity="false">

+    <appender-ref ref="asyncEELFError" />

+  </logger>

+

+  <logger name="org.onap.eelf.metrics" level="info" additivity="false">

+    <appender-ref ref="asyncEELFMetrics" />

+  </logger>      

+    

+  

+  <root level="DEBUG">

+    <appender-ref ref="asyncEELF" />

+  </root>

+

+</configuration>

diff --git a/onap-enabler-infra/src/main/resources/logback_template.xml b/onap-enabler-infra/src/main/resources/logback_template.xml
new file mode 100644
index 0000000..41b9781
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/logback_template.xml
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="UTF-8"?>

+        <!--/*-

+                * ============LICENSE_START=======================================================

+                * OSAM Core

+                * ================================================================================

+                * Copyright (C) 2018 AT&T

+                * ================================================================================

+                * Licensed under the Apache License, Version 2.0 (the "License");

+                * you may not use this file 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.

+                * ============LICENSE_END=========================================================

+                */

+        -->

+

+<configuration scan="true" scanPeriod="3 seconds" debug="true">

+  <!--  specify the component name -->

+  <property name="componentName" value="vid"></property>

+  

+  <!--  specify the base path of the log directory -->

+  <property name="logDirPrefix" value="${VID_LOG_DIR}"></property>

+  

+  <!-- The directories where logs are written -->

+  <property name="logDirectory" value="${logDirPrefix}/${componentName}" />

+  <!-- Can easily relocate debug logs by modifying this path. -->

+  <property name="debugLogDirectory" value="${logDirPrefix}/${componentName}" />

+  

+  <!--  log file names -->

+  <property name="generalLogName" value="application" />

+  <property name="errorLogName" value="error" />

+  <property name="metricsLogName" value="metrics" />

+  <property name="auditLogName" value="audit" />

+  <property name="debugLogName" value="debug" />

+  <!--

+  These loggers are not used in code (yet). 

+  <property name="securityLogName" value="security" />

+  <property name="policyLogName" value="policy" />

+  <property name="performanceLogName" value="performance" />

+  <property name="serverLogName" value="server" />

+   -->

+   

+  <property name="defaultPattern" value="%date{ISO8601}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}| %msg%n" />

+  <property name="debugLoggerPattern" value="%date{ISO8601}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}| %msg%n" />

+  <!-- <property name="debugLoggerPattern" value="%date{ISO8601}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|[%caller{3}]|%msg%n" />-->

+  

+  <!-- Example evaluator filter applied against console appender -->

+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

+    <encoder>

+      <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+

+  <!-- ============================================================================ -->

+  <!-- EELF Appenders -->

+  <!-- ============================================================================ -->

+

+  <!-- The EELFAppender is used to record events to the general application 

+    log -->

+    

+    

+  <appender name="EELF"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${generalLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${generalLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+      <pattern>${defaultPattern}</pattern>

+    </encoder>

+    <filter class="org.onap.portalapp.util.CustomLoggingFilter" />

+  </appender>

+  

+  <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELF" />

+  </appender>

+

+  <!-- EELF Security Appender. This appender is used to record security events 

+    to the security log file. Security events are separate from other loggers 

+    in EELF so that security log records can be captured and managed in a secure 

+    way separate from the other logs. This appender is set to never discard any 

+    events. -->

+  <!--     

+  <appender name="EELFSecurity"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${securityLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+      <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  

+  <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <discardingThreshold>0</discardingThreshold>

+    <appender-ref ref="EELFSecurity" />

+  </appender>

+   -->

+   

+  <!-- EELF Performance Appender. This appender is used to record performance 

+    records. -->

+  <!--

+  <appender name="EELFPerformance"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${performanceLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+      <outputPatternAsHeader>true</outputPatternAsHeader>

+      <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFPerformance" />

+  </appender>

+  -->

+

+  <!-- EELF Server Appender. This appender is used to record Server related 

+    logging events. The Server logger and appender are specializations of the 

+    EELF application root logger and appender. This can be used to segregate Server 

+    events from other components, or it can be eliminated to record these events 

+    as part of the application root log. -->

+  <!--

+  <appender name="EELFServer"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${serverLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+        <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFServer" />

+  </appender>

+   -->

+  

+  <!-- EELF Policy Appender. This appender is used to record Policy engine 

+    related logging events. The Policy logger and appender are specializations 

+    of the EELF application root logger and appender. This can be used to segregate 

+    Policy engine events from other components, or it can be eliminated to record 

+    these events as part of the application root log. -->

+  <!--

+  <appender name="EELFPolicy"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${policyLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+        <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFPolicy" />

+  </appender>

+  -->

+  

+  <!-- EELF Audit Appender. This appender is used to record audit engine 

+    related logging events. The audit logger and appender are specializations 

+    of the EELF application root logger and appender. This can be used to segregate 

+    Policy engine events from other components, or it can be eliminated to record 

+    these events as part of the application root log. -->

+    

+  <appender name="EELFAudit"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${auditLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${auditLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+         <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFAudit" />

+  </appender>

+

+  <appender name="EELFMetrics"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${metricsLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${metricsLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 

+        %msg%n"</pattern> -->

+      <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  

+  

+  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFMetrics"/>

+  </appender>

+   

+  <appender name="EELFError"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${logDirectory}/${errorLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${logDirectory}/${errorLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+      <pattern>${defaultPattern}</pattern>

+    </encoder>

+  </appender>

+  

+  <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFError"/>

+  </appender>

+  

+   <appender name="EELFDebug"

+    class="ch.qos.logback.core.rolling.RollingFileAppender">

+    <file>${debugLogDirectory}/${debugLogName}.log</file>

+    <rollingPolicy

+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

+      <fileNamePattern>${debugLogDirectory}/${debugLogName}.%i.log.zip

+      </fileNamePattern>

+      <minIndex>1</minIndex>

+      <maxIndex>9</maxIndex>

+    </rollingPolicy>

+    <triggeringPolicy

+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

+      <maxFileSize>5MB</maxFileSize>

+    </triggeringPolicy>

+    <encoder>

+      <pattern>${debugLoggerPattern}</pattern>

+    </encoder>

+  </appender>

+  

+  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">

+    <queueSize>256</queueSize>

+    <appender-ref ref="EELFDebug" />

+    <includeCallerData>true</includeCallerData>

+  </appender>

+ 

+  

+  <!-- ============================================================================ -->

+  <!--  EELF loggers -->

+  <!-- ============================================================================ -->

+  <logger name="com.att.eelf" level="debug" additivity="false">

+    <appender-ref ref="asyncEELF" />

+  </logger>

+  

+  <!--

+  <logger name="com.att.eelf.security" level="info" additivity="false">

+    <appender-ref ref="asyncEELFSecurity" />

+  </logger>

+  <logger name="com.att.eelf.perf" level="info" additivity="false">

+    <appender-ref ref="asyncEELFPerformance" />

+  </logger>

+  <logger name="com.att.eelf.server" level="info" additivity="false">

+    <appender-ref ref="asyncEELFServer" />

+  </logger>

+  <logger name="com.att.eelf.policy" level="info" additivity="false">

+    <appender-ref ref="asyncEELFPolicy" />

+  </logger>

+  -->

+  

+  <logger name="com.att.eelf.audit" level="info" additivity="false">

+    <appender-ref ref="asyncEELFAudit" />

+  </logger>

+  

+  <logger name="com.att.eelf.metrics" level="info" additivity="false">

+        <appender-ref ref="asyncEELFMetrics" />

+  </logger>

+    

+  <logger name="com.att.eelf.error" level="info" additivity="false">

+  	<appender-ref ref="asyncEELFError" />

+  </logger>

+  

+   <logger name="com.att.eelf.debug" level="debug" additivity="false">

+        <appender-ref ref="asyncEELFDebug" />

+  </logger>

+  

+    

+  <root level="${VID_LOG_LEVEL}">

+    <appender-ref ref="asyncEELF" />

+  </root>

+

+</configuration>

diff --git a/onap-enabler-infra/src/main/resources/mchange-log.properties b/onap-enabler-infra/src/main/resources/mchange-log.properties
new file mode 100644
index 0000000..37e6f50
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/mchange-log.properties
@@ -0,0 +1,23 @@
+###

+# ================================================================================

+# eCOMP Portal SDK

+# ================================================================================

+# Copyright (C) 2017 AT&T Intellectual Property

+# ================================================================================

+# Licensed under the Apache License, Version 2.0 (the "License");

+# you may not use this file 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.

+# ================================================================================

+###

+# Direct the proprietary logger used by com.mchange.c3p0 to use slf4j

+

+com.mchange.v2.log.MLog=com.mchange.v2.log.FallbackMLog

+com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=OFF

diff --git a/onap-enabler-infra/src/main/resources/my.cnf b/onap-enabler-infra/src/main/resources/my.cnf
new file mode 100644
index 0000000..b47f64f
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/my.cnf
@@ -0,0 +1,192 @@
+# MariaDB database server configuration file.

+#

+# You can copy this file to one of:

+# - "/etc/mysql/my.cnf" to set global options,

+# - "~/.my.cnf" to set user-specific options.

+#

+# One can use all long options that the program supports.

+# Run program with --help to get a list of available options and with

+# --print-defaults to see which it would actually understand and use.

+#

+# For explanations see

+# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

+

+# This will be passed to all mysql clients

+# It has been reported that passwords should be enclosed with ticks/quotes

+# escpecially if they contain "#" chars...

+# Remember to edit /etc/mysql/debian.cnf when changing the socket location.

+[client]

+port            = 3306

+socket          = /var/run/mysqld/mysqld.sock

+

+# Here is entries for some specific programs

+# The following values assume you have at least 32M ram

+

+# This was formally known as [safe_mysqld]. Both versions are currently parsed.

+[mysqld_safe]

+socket          = /var/run/mysqld/mysqld.sock

+nice            = 0

+

+[mysqld]

+lower_case_table_names = 1

+skip-host-cache

+skip-name-resolve

+#

+# * Basic Settings

+#

+#user           = mysql

+pid-file        = /var/run/mysqld/mysqld.pid

+socket          = /var/run/mysqld/mysqld.sock

+port            = 3306

+basedir         = /usr

+datadir         = /var/lib/mysql

+tmpdir          = /tmp

+lc_messages_dir = /usr/share/mysql

+lc_messages     = en_US

+skip-external-locking

+#

+# Instead of skip-networking the default is now to listen only on

+# localhost which is more compatible and is not less secure.

+#bind-address           = 127.0.0.1

+#

+# * Fine Tuning

+#

+max_connections         = 100

+connect_timeout         = 5

+wait_timeout            = 600

+max_allowed_packet      = 16M

+thread_cache_size       = 128

+sort_buffer_size        = 4M

+bulk_insert_buffer_size = 16M

+tmp_table_size          = 32M

+max_heap_table_size     = 32M

+#

+# * MyISAM

+#

+# This replaces the startup script and checks MyISAM tables if needed

+# the first time they are touched. On error, make copy and try a repair.

+myisam_recover_options = BACKUP

+key_buffer_size         = 128M

+#open-files-limit       = 2000

+table_open_cache        = 400

+myisam_sort_buffer_size = 512M

+concurrent_insert       = 2

+read_buffer_size        = 2M

+read_rnd_buffer_size    = 1M

+#

+# * Query Cache Configuration

+#

+# Cache only tiny result sets, so we can fit more in the query cache.

+query_cache_limit               = 128K

+query_cache_size                = 64M

+# for more write intensive setups, set to DEMAND or OFF

+#query_cache_type               = DEMAND

+#

+# * Logging and Replication

+#

+# Both location gets rotated by the cronjob.

+# Be aware that this log type is a performance killer.

+# As of 5.1 you can enable the log at runtime!

+#general_log_file        = /var/log/mysql/mysql.log

+#general_log             = 1

+#

+# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.

+#

+# we do want to know about network errors and such

+#log_warnings           = 2

+#

+# Enable the slow query log to see queries with especially long duration

+#slow_query_log[={0|1}]

+slow_query_log_file     = /var/log/mysql/mariadb-slow.log

+long_query_time = 10

+#log_slow_rate_limit    = 1000

+#log_slow_verbosity     = query_plan

+

+#log-queries-not-using-indexes

+#log_slow_admin_statements

+#

+# The following can be used as easy to replay backup logs or for replication.

+# note: if you are setting up a replication slave, see README.Debian about

+#       other settings you may need to change.

+#server-id              = 1

+#report_host            = master1

+#auto_increment_increment = 2

+#auto_increment_offset  = 1

+#log_bin                        = /var/log/mysql/mariadb-bin

+#log_bin_index          = /var/log/mysql/mariadb-bin.index

+# not fab for performance, but safer

+#sync_binlog            = 1

+expire_logs_days        = 10

+max_binlog_size         = 100M

+# slaves

+#relay_log              = /var/log/mysql/relay-bin

+#relay_log_index        = /var/log/mysql/relay-bin.index

+#relay_log_info_file    = /var/log/mysql/relay-bin.info

+#log_slave_updates

+#read_only

+#

+# If applications support it, this stricter sql_mode prevents some

+# mistakes like inserting invalid dates etc.

+#sql_mode               = NO_ENGINE_SUBSTITUTION,TRADITIONAL

+#

+# * InnoDB

+#

+# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.

+# Read the manual for more InnoDB related options. There are many!

+default_storage_engine  = InnoDB

+# you can't just change log file size, requires special procedure

+#innodb_log_file_size   = 50M

+innodb_buffer_pool_size = 256M

+innodb_log_buffer_size  = 8M

+innodb_file_per_table   = 1

+innodb_open_files       = 400

+innodb_io_capacity      = 400

+innodb_flush_method     = O_DIRECT

+#

+# * Security Features

+#

+# Read the manual, too, if you want chroot!

+# chroot = /var/lib/mysql/

+#

+# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".

+#

+# ssl-ca=/etc/mysql/cacert.pem

+# ssl-cert=/etc/mysql/server-cert.pem

+# ssl-key=/etc/mysql/server-key.pem

+

+#

+# * Galera-related settings

+#

+[galera]

+# Mandatory settings

+#wsrep_on=ON

+#wsrep_provider=

+#wsrep_cluster_address=

+#binlog_format=row

+#default_storage_engine=InnoDB

+#innodb_autoinc_lock_mode=2

+#

+# Allow server to accept connections on all interfaces.

+#

+#bind-address=0.0.0.0

+#

+# Optional setting

+#wsrep_slave_threads=1

+#innodb_flush_log_at_trx_commit=0

+

+[mysqldump]

+quick

+quote-names

+max_allowed_packet      = 16M

+

+[mysql]

+#no-auto-rehash # faster start of mysql but no tab completion

+

+[isamchk]

+key_buffer              = 16M

+

+#

+# * IMPORTANT: Additional settings that can override those from this file!

+#   The files must end with '.cnf', otherwise they'll be ignored.

+#

+!includedir /etc/mysql/conf.d/
\ No newline at end of file
diff --git a/onap-enabler-infra/src/main/resources/osam-core-data.sql b/onap-enabler-infra/src/main/resources/osam-core-data.sql
new file mode 100644
index 0000000..2437e82
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/osam-core-data.sql
@@ -0,0 +1,709 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * VID

+ * ================================================================================

+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+USE osam_core;

+

+DELETE FROM `fn_datasource`;

+TRUNCATE `fn_menu`;

+DELETE FROM `fn_role_function`;

+DELETE FROM `fn_restricted_url`;

+DELETE FROM `fn_tab_selected`;

+DELETE FROM `fn_tab`;

+DELETE FROM `fn_function`;

+DELETE FROM `fn_lu_alert_method`;

+DELETE FROM `fn_lu_activity`;

+DELETE FROM `fn_lu_call_times`;

+DELETE FROM `fn_lu_country`;

+DELETE FROM `fn_lu_menu_set`;

+DELETE FROM `fn_lu_priority`;

+DELETE FROM `fn_lu_state`;

+DELETE FROM `fn_lu_tab_set`;

+

+--

+-- Dumping data for table `cr_raptor_action_img`

+--

+REPLACE INTO `cr_raptor_action_img` VALUES ('CALENDAR','/static/fusion/raptor/img/Calendar-16x16.png');

+REPLACE INTO `cr_raptor_action_img` VALUES ('DELETE','/static/fusion/raptor/img/deleteicon.gif');

+

+--

+-- Dumping data for table `fn_app`

+--

+INSERT IGNORE INTO `fn_app` VALUES (1,'Default',null,'Some Default Description','Some Default Note',null,null,null,'ECPP','?',1,'okYTaDrhzibcbGVq5mjkVQ==','N','N',null,'Default',null,null,'ECOMP-PORTAL-INBOX');

+

+

+--

+-- Dumping data for table `fn_function`

+--

+INSERT INTO `fn_function` VALUES ('1','test role function','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='test role function';

+INSERT INTO `fn_function` VALUES ('doclib','Document Library','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Document Library';

+INSERT INTO `fn_function` VALUES ('doclib_admin','Document Library Admin','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Document Library Admin';

+INSERT INTO `fn_function` VALUES ('login','Login','url','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Login';

+INSERT INTO `fn_function` VALUES ('menu_admin','Admin Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Admin Menu';

+INSERT INTO `fn_function` VALUES ('menu_ajax','Ajax Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Ajax Menu';

+INSERT INTO `fn_function` VALUES ('menu_servicemodels','Browse SDC Service Instances','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Browse SDC Service Instances';

+INSERT INTO `fn_function` VALUES ('menu_concept','CoNCEPT','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='CoNCEPT';

+INSERT INTO `fn_function` VALUES ('menu_customer','Customer Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Customer Menu';

+INSERT INTO `fn_function` VALUES ('menu_customer_create','Customer Create','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Customer Create';

+INSERT INTO `fn_function` VALUES ('menu_doclib','Document Library Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Document Library Menu';

+INSERT INTO `fn_function` VALUES ('menu_feedback','Feedback Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Feedback Menu';

+INSERT INTO `fn_function` VALUES ('menu_help','Help Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Help Menu';

+INSERT INTO `fn_function` VALUES ('menu_home','Home Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Home Menu';

+INSERT INTO `fn_function` VALUES ('menu_itracker','iTracker Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='iTracker Menu';

+INSERT INTO `fn_function` VALUES ('menu_itracker_admin','Itracker Admin/Support menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Itracker Admin/Support menu';

+INSERT INTO `fn_function` VALUES ('menu_job','Job Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Job Menu';

+INSERT INTO `fn_function` VALUES ('menu_job_create','Job Create','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Job Create';

+INSERT INTO `fn_function` VALUES ('menu_job_designer','Process in Designer view','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Process in Designer view';

+INSERT INTO `fn_function` VALUES ('menu_logout','Logout Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Logout Menu';

+INSERT INTO `fn_function` VALUES ('menu_map','Map Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Map Menu';

+INSERT INTO `fn_function` VALUES ('menu_newserinstance','Create New Service Instance','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Create New Service Instance';

+INSERT INTO `fn_function` VALUES ('menu_notes','Notes Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Notes Menu';

+INSERT INTO `fn_function` VALUES ('menu_process','Process List','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Process List';

+INSERT INTO `fn_function` VALUES ('menu_profile','Profile Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Profile Menu';

+INSERT INTO `fn_function` VALUES ('menu_profile_create','Profile Create','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Profile Create';

+INSERT INTO `fn_function` VALUES ('menu_profile_import','Profile Import','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Profile Import';

+INSERT INTO `fn_function` VALUES ('menu_reports','Reports Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Reports Menu';

+INSERT INTO `fn_function` VALUES ('menu_sample','Sample Pages Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Sample Pages Menu';

+INSERT INTO `fn_function` VALUES ('menu_tab','Sample Tab Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Sample Tab Menu';

+INSERT INTO `fn_function` VALUES ('menu_task','Task Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Task Menu';

+INSERT INTO `fn_function` VALUES ('menu_task_search','Task Search','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Task Search';

+INSERT INTO `fn_function` VALUES ('menu_test','Test Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Test Menu';

+INSERT INTO `fn_function` VALUES ('menu_viewlog','Log Menu','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Log Menu';

+INSERT INTO `fn_function` VALUES ('view_reports','View Raptor reports','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='View Raptor reports';

+INSERT INTO `fn_function` VALUES ('menu_searchexisting', 'Search for Existing Service Instances','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Search for Existing Service Instances';

+INSERT INTO `fn_function` VALUES ('menu_changemanagement','VNF Changes','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='VNF Changes';

+--INSERT INTO `fn_function` VALUES ('menu_testenvironment','Test Environments','menu','*') ON DUPLICATE KEY UPDATE FUNCTION_NAME='Test Environments';

+

+--

+-- Dumping data for table `fn_lu_activity`

+--

+REPLACE INTO `fn_lu_activity` VALUES ('add_child_role','add_child_role');

+REPLACE INTO `fn_lu_activity` VALUES ('add_role','add_role');

+REPLACE INTO `fn_lu_activity` VALUES ('add_role_function','add_role_function');

+REPLACE INTO `fn_lu_activity` VALUES ('add_user_role','add_user_role');

+REPLACE INTO `fn_lu_activity` VALUES ('login','Login');

+REPLACE INTO `fn_lu_activity` VALUES ('logout','Logout');

+REPLACE INTO `fn_lu_activity` VALUES ('mobile_login','Mobile Login');

+REPLACE INTO `fn_lu_activity` VALUES ('mobile_logout','Mobile Logout');

+REPLACE INTO `fn_lu_activity` VALUES ('remove_child_role','remove_child_role');

+REPLACE INTO `fn_lu_activity` VALUES ('remove_role','remove_role');

+REPLACE INTO `fn_lu_activity` VALUES ('remove_role_function','remove_role_function');

+REPLACE INTO `fn_lu_activity` VALUES ('remove_user_role','remove_user_role');

+

+--

+-- Dumping data for table `fn_lu_alert_method`

+--

+REPLACE INTO `fn_lu_alert_method` VALUES ('EMAIL','Email');

+REPLACE INTO `fn_lu_alert_method` VALUES ('FAX','Fax');

+REPLACE INTO `fn_lu_alert_method` VALUES ('PAGER','Pager');

+REPLACE INTO `fn_lu_alert_method` VALUES ('PHONE','Phone');

+REPLACE INTO `fn_lu_alert_method` VALUES ('SMS','SMS');

+

+--

+-- Dumping data for table `fn_lu_call_times`

+--

+REPLACE INTO `fn_lu_call_times` VALUES (1,20,'20 min');

+REPLACE INTO `fn_lu_call_times` VALUES (2,40,'40 min');

+REPLACE INTO `fn_lu_call_times` VALUES (3,60,'1 hr');

+REPLACE INTO `fn_lu_call_times` VALUES (4,80,'1 hr 20 min');

+REPLACE INTO `fn_lu_call_times` VALUES (5,100,'1 hr 40 min');

+REPLACE INTO `fn_lu_call_times` VALUES (6,120,'2 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (7,140,'2 hr 20 min');

+REPLACE INTO `fn_lu_call_times` VALUES (8,160,'2 hr 40 min');

+REPLACE INTO `fn_lu_call_times` VALUES (9,180,'3 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (10,200,'3 hr 20 min');

+REPLACE INTO `fn_lu_call_times` VALUES (11,220,'3 hr 40 min');

+REPLACE INTO `fn_lu_call_times` VALUES (12,240,'4 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (13,260,'4 hr 20 min');

+REPLACE INTO `fn_lu_call_times` VALUES (14,280,'4 hr 40 min');

+REPLACE INTO `fn_lu_call_times` VALUES (15,300,'5 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (16,320,'5 hr 20 min');

+REPLACE INTO `fn_lu_call_times` VALUES (17,340,'5 hr 40 min');

+REPLACE INTO `fn_lu_call_times` VALUES (18,360,'6 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (19,380,'6 hr 20 min');

+REPLACE INTO `fn_lu_call_times` VALUES (20,400,'6 hr 40 min');

+REPLACE INTO `fn_lu_call_times` VALUES (21,420,'7 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (22,440,'7 hr 20 min');

+REPLACE INTO `fn_lu_call_times` VALUES (23,460,'7 hr 40 min');

+REPLACE INTO `fn_lu_call_times` VALUES (24,480,'8 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (25,500,'8 hr 20 min');

+REPLACE INTO `fn_lu_call_times` VALUES (26,520,'8 hr 40 min');

+REPLACE INTO `fn_lu_call_times` VALUES (27,540,'9 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (28,560,'9 hr 20 min');

+REPLACE INTO `fn_lu_call_times` VALUES (29,580,'9 hr 40 min');

+REPLACE INTO `fn_lu_call_times` VALUES (30,600,'10 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (31,10,'10 min');

+REPLACE INTO `fn_lu_call_times` VALUES (32,5,'5 min');

+REPLACE INTO `fn_lu_call_times` VALUES (33,1200,'20 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (34,1800,'30 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (35,2400,'40 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (36,3000,'50 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (37,4200,'70 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (38,4800,'80 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (39,5400,'90 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (40,6000,'100 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (41,7200,'120 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (42,9600,'160 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (43,10800,'180 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (44,12000,'200 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (45,18000,'300 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (46,24000,'400 hrs');

+REPLACE INTO `fn_lu_call_times` VALUES (47,30000,'500 hrs');

+

+--

+-- Dumping data for table `fn_lu_country`

+--

+REPLACE INTO `fn_lu_country` VALUES ('AD','Andorra','Andorra',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AE','United Arab Emirates','United Arab Emirates',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AF','Afghanistan','Afghanistan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AG','Antigua and Barbuda','Antigua and Barbuda',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AI','Anguilla','Anguilla',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AL','Albania','Albania',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AM','Armenia','Armenia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AN','Netherlands Antilles','Netherlands Antilles',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AO','Angola','Angola',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AQ','Antarctica','Antarctica',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AR','Argentina','Argentina',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AS','American Samoa','American Samoa',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AT','Austria','Austria',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AU','Australia','Australia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AW','Aruba','Aruba',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('AZ','Azerbaidjan','Azerbaidjan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BA','Bosnia-Herzegovina','Bosnia-Herzegovina',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BB','Barbados','Barbados',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BD','Bangladesh','Bangladesh',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BE','Belgium','Belgium',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BF','Burkina Faso','Burkina Faso',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BG','Bulgaria','Bulgaria',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BH','Bahrain','Bahrain',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BI','Burundi','Burundi',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BJ','Benin','Benin',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BM','Bermuda','Bermuda',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BN','Brunei Darussalam','Brunei Darussalam',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BO','Bolivia','Bolivia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BR','Brazil','Brazil',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BS','Bahamas','Bahamas',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BT','Bhutan','Bhutan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BV','Bouvet Island','Bouvet Island',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BW','Botswana','Botswana',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BY','Belarus','Belarus',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('BZ','Belize','Belize',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CA','Canada','Canada',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CC','Cocos (Keeling) Islands','Cocos (Keeling) Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CF','Central African Republic','Central African Republic',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CG','Congo','Congo',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CH','Switzerland','Switzerland',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CI','Ivory Coast (Cote D\'Ivoire)','Ivory Coast (Cote D\'Ivoire)',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CK','Cook Islands','Cook Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CL','Chile','Chile',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CM','Cameroon','Cameroon',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CN','China','China','China');

+REPLACE INTO `fn_lu_country` VALUES ('CO','Colombia','Colombia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CR','Costa Rica','Costa Rica',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CS','Former Czechoslovakia','Former Czechoslovakia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CU','Cuba','Cuba',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CV','Cape Verde','Cape Verde',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CX','Christmas Island','Christmas Island',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CY','Cyprus','Cyprus',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('CZ','Czech Republic','Czech Republic',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('DE','Germany','Germany',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('DJ','Djibouti','Djibouti',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('DK','Denmark','Denmark',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('DM','Dominica','Dominica',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('DO','Dominican Republic','Dominican Republic',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('DZ','Algeria','Algeria',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('EC','Ecuador','Ecuador',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('EE','Estonia','Estonia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('EG','Egypt','Egypt',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('EH','Western Sahara','Western Sahara',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('ER','Eritrea','Eritrea',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('ES','Spain','Spain',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('ET','Ethiopia','Ethiopia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('FI','Finland','Finland',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('FJ','Fiji','Fiji',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('FK','Falkland Islands','Falkland Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('FM','Micronesia','Micronesia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('FO','Faroe Islands','Faroe Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('FR','France','France',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('FX','France (European Territory)','France (European Territory)',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GA','Gabon','Gabon',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GB','Great Britain','Great Britain',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GD','Grenada','Grenada',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GE','Georgia','Georgia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GF','French Guyana','French Guyana',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GH','Ghana','Ghana',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GI','Gibraltar','Gibraltar',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GL','Greenland','Greenland',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GM','Gambia','Gambia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GN','Guinea','Guinea',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GP','Guadeloupe (French)','Guadeloupe (French)',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GQ','Equatorial Guinea','Equatorial Guinea',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GR','Greece','Greece',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GS','S. Georgia and S. Sandwich Isls.','S. Georgia and S. Sandwich Isls.',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GT','Guatemala','Guatemala',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GU','Guam (USA)','Guam (USA)',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GW','Guinea Bissau','Guinea Bissau',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('GY','Guyana','Guyana',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('HK','Hong Kong','Hong Kong',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('HM','Heard and McDonald Islands','Heard and McDonald Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('HN','Honduras','Honduras',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('HR','Croatia','Croatia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('HT','Haiti','Haiti',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('HU','Hungary','Hungary',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('ID','Indonesia','Indonesia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('IE','Ireland','Ireland',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('IL','Israel','Israel',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('IN','India','India',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('IO','British Indian Ocean Territory','British Indian Ocean Territory',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('IQ','Iraq','Iraq',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('IR','Iran','Iran',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('IS','Iceland','Iceland',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('IT','Italy','Italy',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('JM','Jamaica','Jamaica',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('JO','Jordan','Jordan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('JP','Japan','Japan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KE','Kenya','Kenya',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KG','Kyrgyzstan','Kyrgyzstan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KH','Cambodia','Cambodia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KI','Kiribati','Kiribati',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KM','Comoros','Comoros',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KN','Saint Kitts and Nevis Anguilla','Saint Kitts and Nevis Anguilla',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KP','North Korea','North Korea',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KR','South Korea','South Korea',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KW','Kuwait','Kuwait',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KY','Cayman Islands','Cayman Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('KZ','Kazakhstan','Kazakhstan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LA','Laos','Laos',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LB','Lebanon','Lebanon',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LC','Saint Lucia','Saint Lucia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LI','Liechtenstein','Liechtenstein',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LK','Sri Lanka','Sri Lanka',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LR','Liberia','Liberia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LS','Lesotho','Lesotho',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LT','Lithuania','Lithuania',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LU','Luxembourg','Luxembourg',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LV','Latvia','Latvia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('LY','Libya','Libya',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MA','Morocco','Morocco',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MC','Monaco','Monaco',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MD','Moldavia','Moldavia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MG','Madagascar','Madagascar',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MH','Marshall Islands','Marshall Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MK','Macedonia','Macedonia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('ML','Mali','Mali',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MM','Myanmar','Myanmar',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MN','Mongolia','Mongolia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MO','Macau','Macau',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MP','Northern Mariana Islands','Northern Mariana Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MQ','Martinique (French)','Martinique (French)',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MR','Mauritania','Mauritania',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MS','Montserrat','Montserrat',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MT','Malta','Malta',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MU','Mauritius','Mauritius',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MV','Maldives','Maldives',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MW','Malawi','Malawi',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MX','Mexico','Mexico','Mexico');

+REPLACE INTO `fn_lu_country` VALUES ('MY','Malaysia','Malaysia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('MZ','Mozambique','Mozambique',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NA','Namibia','Namibia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NC','New Caledonia (French)','New Caledonia (French)',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NE','Niger','Niger',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NF','Norfolk Island','Norfolk Island',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NG','Nigeria','Nigeria',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NI','Nicaragua','Nicaragua',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NL','Netherlands','Netherlands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NO','Norway','Norway',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NP','Nepal','Nepal',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NR','Nauru','Nauru',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NU','Niue','Niue',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('NZ','New Zealand','New Zealand',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('OM','Oman','Oman',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PA','Panama','Panama',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PE','Peru','Peru',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PF','Polynesia (French)','Polynesia (French)',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PG','Papua New Guinea','Papua New Guinea',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PH','Philippines','Philippines',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PK','Pakistan','Pakistan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PL','Poland','Poland',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PM','Saint Pierre and Miquelon','Saint Pierre and Miquelon',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PN','Pitcairn Island','Pitcairn Island',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PR','Puerto Rico','Puerto Rico',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PT','Portugal','Portugal',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PW','Palau','Palau',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('PY','Paraguay','Paraguay',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('QA','Qatar','Qatar',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('RE','Reunion (French)','Reunion (French)',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('RO','Romania','Romania',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('RU','Russian Federation','Russian Federation',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('RW','Rwanda','Rwanda',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SA','Saudi Arabia','Saudi Arabia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SB','Solomon Islands','Solomon Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SC','Seychelles','Seychelles',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SD','Sudan','Sudan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SE','Sweden','Sweden',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SG','Singapore','Singapore',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SH','Saint Helena','Saint Helena',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SI','Slovenia','Slovenia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SJ','Svalbard and Jan Mayen Islands','Svalbard and Jan Mayen Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SK','Slovak Republic','Slovak Republic',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SL','Sierra Leone','Sierra Leone',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SM','San Marino','San Marino',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SN','Senegal','Senegal',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SO','Somalia','Somalia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SR','Suriname','Suriname',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('ST','Saint Tome (Sao Tome) and Principe','Saint Tome (Sao Tome) and Principe',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SU','Former USSR','Former USSR',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SV','El Salvador','El Salvador',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SY','Syria','Syria',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('SZ','Swaziland','Swaziland',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TC','Turks and Caicos Islands','Turks and Caicos Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TD','Chad','Chad',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TF','French Southern Territories','French Southern Territories',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TG','Togo','Togo',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TH','Thailand','Thailand',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TJ','Tadjikistan','Tadjikistan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TK','Tokelau','Tokelau',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TM','Turkmenistan','Turkmenistan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TN','Tunisia','Tunisia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TO','Tonga','Tonga',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TP','East Timor','East Timor',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TR','Turkey','Turkey',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TT','Trinidad and Tobago','Trinidad and Tobago',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TV','Tuvalu','Tuvalu',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TW','Taiwan','Taiwan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('TZ','Tanzania','Tanzania',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('UA','Ukraine','Ukraine',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('UG','Uganda','Uganda',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('UK','United Kingdom','United Kingdom',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('UM','USA Minor Outlying Islands','USA Minor Outlying Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('US','United States','United States','USA');

+REPLACE INTO `fn_lu_country` VALUES ('UY','Uruguay','Uruguay',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('UZ','Uzbekistan','Uzbekistan',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('VA','Vatican City State','Vatican City State',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('VC','Saint Vincent and Grenadines','Saint Vincent and Grenadines',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('VE','Venezuela','Venezuela',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('VG','Virgin Islands (British)','Virgin Islands (British)',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('VI','Virgin Islands (USA)','Virgin Islands (USA)',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('VN','Vietnam','Vietnam',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('VU','Vanuatu','Vanuatu',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('WF','Wallis and Futuna Islands','Wallis and Futuna Islands',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('WS','Samoa','Samoa',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('YE','Yemen','Yemen',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('YT','Mayotte','Mayotte',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('YU','Yugoslavia','Yugoslavia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('ZA','South Africa','South Africa',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('ZM','Zambia','Zambia',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('ZR','Zaire','Zaire',NULL);

+REPLACE INTO `fn_lu_country` VALUES ('ZW','Zimbabwe','Zimbabwe',NULL);

+

+--

+-- Dumping data for table `fn_lu_menu_set`

+--

+INSERT INTO `fn_lu_menu_set` VALUES ('APP','Application Menu') ON DUPLICATE KEY UPDATE MENU_SET_NAME='Application Menu';

+

+--

+-- Dumping data for table `fn_lu_priority`

+--

+REPLACE INTO `fn_lu_priority` VALUES (10,'Low','Y',10);

+REPLACE INTO `fn_lu_priority` VALUES (20,'Normal','Y',20);

+REPLACE INTO `fn_lu_priority` VALUES (30,'High','Y',30);

+REPLACE INTO `fn_lu_priority` VALUES (40,'Urgent','Y',40);

+REPLACE INTO `fn_lu_priority` VALUES (50,'Fatal','Y',50);

+

+--

+-- Dumping data for table `fn_lu_state`

+--

+REPLACE INTO `fn_lu_state` VALUES ('AK','AK - Alaska');

+REPLACE INTO `fn_lu_state` VALUES ('AL','AL - Alabama');

+REPLACE INTO `fn_lu_state` VALUES ('AR','AR - Arkansas');

+REPLACE INTO `fn_lu_state` VALUES ('AZ','AZ - Arizona');

+REPLACE INTO `fn_lu_state` VALUES ('CA','CA - California');

+REPLACE INTO `fn_lu_state` VALUES ('CO','CO - Colorado');

+REPLACE INTO `fn_lu_state` VALUES ('CT','CT - Connecticut');

+REPLACE INTO `fn_lu_state` VALUES ('DC','DC - District Of Columbia');

+REPLACE INTO `fn_lu_state` VALUES ('DE','DE - Delaware');

+REPLACE INTO `fn_lu_state` VALUES ('FL','FL - Florida');

+REPLACE INTO `fn_lu_state` VALUES ('GA','GA - Georgia');

+REPLACE INTO `fn_lu_state` VALUES ('HI','HI - Hawaii');

+REPLACE INTO `fn_lu_state` VALUES ('IA','IA - Iowa');

+REPLACE INTO `fn_lu_state` VALUES ('ID','ID - Idaho');

+REPLACE INTO `fn_lu_state` VALUES ('IL','IL - Illinois');

+REPLACE INTO `fn_lu_state` VALUES ('IN','IN - Indiana');

+REPLACE INTO `fn_lu_state` VALUES ('KS','KS - Kansas');

+REPLACE INTO `fn_lu_state` VALUES ('KY','KY - Kentucky');

+REPLACE INTO `fn_lu_state` VALUES ('LA','LA - Louisiana');

+REPLACE INTO `fn_lu_state` VALUES ('MA','MA - Massachusetts');

+REPLACE INTO `fn_lu_state` VALUES ('MD','MD - Maryland');

+REPLACE INTO `fn_lu_state` VALUES ('ME','ME - Maine');

+REPLACE INTO `fn_lu_state` VALUES ('MI','MI - Michigan');

+REPLACE INTO `fn_lu_state` VALUES ('MN','MN - Minnesota');

+REPLACE INTO `fn_lu_state` VALUES ('MO','MO - Missouri');

+REPLACE INTO `fn_lu_state` VALUES ('MS','MS - Mississippi');

+REPLACE INTO `fn_lu_state` VALUES ('MT','MT - Montana');

+REPLACE INTO `fn_lu_state` VALUES ('NC','NC - North Carolina');

+REPLACE INTO `fn_lu_state` VALUES ('ND','ND - North Dakota');

+REPLACE INTO `fn_lu_state` VALUES ('NE','NE - Nebraska');

+REPLACE INTO `fn_lu_state` VALUES ('NH','NH - New Hampshire');

+REPLACE INTO `fn_lu_state` VALUES ('NJ','NJ - New Jersey');

+REPLACE INTO `fn_lu_state` VALUES ('NM','NM - New Mexico');

+REPLACE INTO `fn_lu_state` VALUES ('NV','NV - Nevada');

+REPLACE INTO `fn_lu_state` VALUES ('NY','NY - New York');

+REPLACE INTO `fn_lu_state` VALUES ('OH','OH - Ohio');

+REPLACE INTO `fn_lu_state` VALUES ('OK','OK - Oklahoma');

+REPLACE INTO `fn_lu_state` VALUES ('OR','OR - Oregon');

+REPLACE INTO `fn_lu_state` VALUES ('PA','PA - Pennsylvania');

+REPLACE INTO `fn_lu_state` VALUES ('PR','PR - Puerto Rico');

+REPLACE INTO `fn_lu_state` VALUES ('RI','RI - Rhode Island');

+REPLACE INTO `fn_lu_state` VALUES ('SC','SC - South Carolina');

+REPLACE INTO `fn_lu_state` VALUES ('SD','SD - South Dakota');

+REPLACE INTO `fn_lu_state` VALUES ('TN','TN - Tennessee');

+REPLACE INTO `fn_lu_state` VALUES ('TX','TX - Texas');

+REPLACE INTO `fn_lu_state` VALUES ('UT','UT - Utah');

+REPLACE INTO `fn_lu_state` VALUES ('VA','VA - Virginia');

+REPLACE INTO `fn_lu_state` VALUES ('VI','VI-Virgin Island');

+REPLACE INTO `fn_lu_state` VALUES ('VT','VT - Vermont');

+REPLACE INTO `fn_lu_state` VALUES ('WA','WA - Washington');

+REPLACE INTO `fn_lu_state` VALUES ('WI','WI - Wisconsin');

+REPLACE INTO `fn_lu_state` VALUES ('WV','WV - West Virginia');

+REPLACE INTO `fn_lu_state` VALUES ('WY','WY - Wyoming');

+

+--

+-- Dumping data for table `fn_lu_tab_set`

+--

+INSERT INTO `fn_lu_tab_set` VALUES ('APP','Application Tabs') ON DUPLICATE KEY UPDATE TAB_SET_NAME='Application Tabs';

+

+--

+-- Dumping data for table `fn_lu_timezone`

+--

+INSERT INTO `fn_lu_timezone` VALUES (10,'US/Eastern','US/Eastern') ON DUPLICATE KEY UPDATE TIMEZONE_NAME='US/Eastern', TIMEZONE_VALUE='US/Eastern';

+INSERT INTO `fn_lu_timezone` VALUES (20,'US/Central','US/Central') ON DUPLICATE KEY UPDATE TIMEZONE_NAME='US/Central', TIMEZONE_VALUE='US/Central';

+INSERT INTO `fn_lu_timezone` VALUES (30,'US/Mountain','US/Mountain') ON DUPLICATE KEY UPDATE TIMEZONE_NAME='US/Mountain', TIMEZONE_VALUE='US/Mountain';

+INSERT INTO `fn_lu_timezone` VALUES (40,'US/Arizona','America/Phoenix') ON DUPLICATE KEY UPDATE TIMEZONE_NAME='US/Arizona', TIMEZONE_VALUE='America/Phoenix';

+INSERT INTO `fn_lu_timezone` VALUES (50,'US/Pacific','US/Pacific') ON DUPLICATE KEY UPDATE TIMEZONE_NAME='US/Pacific', TIMEZONE_VALUE='US/Pacific';

+INSERT INTO `fn_lu_timezone` VALUES (60,'US/Alaska','US/Alaska') ON DUPLICATE KEY UPDATE TIMEZONE_NAME='US/Alaska', TIMEZONE_VALUE='US/Alaska';

+INSERT INTO `fn_lu_timezone` VALUES (70,'US/Hawaii','US/Hawaii') ON DUPLICATE KEY UPDATE TIMEZONE_NAME='US/Hawaii', TIMEZONE_VALUE='US/Hawaii';

+

+--

+-- Dumping data for table `fn_menu`

+--

+INSERT INTO `fn_menu` VALUES (1,'Root',NULL,10,NULL,'menu_home','N',NULL,NULL,NULL,NULL,'APP','N',NULL) ON DUPLICATE KEY UPDATE LABEL='Root', PARENT_ID=NULL, SORT_ORDER=10, ACTION=NULL, FUNCTION_CD='menu_home', ACTIVE_YN='N', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC=NULL;

+INSERT INTO `fn_menu` VALUES (2,'VID Home',1,10,'welcome.htm','menu_home','Y',NULL,NULL,NULL,NULL,'APP','N','icon-location-pin') ON DUPLICATE KEY UPDATE LABEL='VID Home', PARENT_ID=1, SORT_ORDER=10, ACTION='welcome.htm', FUNCTION_CD='menu_home', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='icon-location-pin';

+

+INSERT INTO `fn_menu` VALUES (3,'Search for Existing Service Instances',1,10,'serviceModels.htm#/instances/services','menu_searchexisting','Y',NULL,NULL,NULL,NULL,'APP','N','icon-location-pin') ON DUPLICATE KEY UPDATE LABEL='Search for Existing Service Instances', PARENT_ID=1, SORT_ORDER=10, ACTION='serviceModels.htm#/instances/services', FUNCTION_CD='menu_searchexisting', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='icon-location-pin';

+INSERT INTO `fn_menu` VALUES (10,'Admin',1,110,'role_list.htm','menu_admin','Y',NULL,NULL,NULL,NULL,'APP','N','icon-settings') ON DUPLICATE KEY UPDATE LABEL='Admin', PARENT_ID=1, SORT_ORDER=110, ACTION='admin', FUNCTION_CD='menu_admin', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='icon-settings';

+INSERT INTO `fn_menu` VALUES (13,'VID Logout',1,130,'app_logout.htm','menu_logout','N',NULL,NULL,NULL,NULL,'APP','N','icon-sign-out') ON DUPLICATE KEY UPDATE LABEL='VID Logout', PARENT_ID=1, SORT_ORDER=130, ACTION='app_logout.htm', FUNCTION_CD='menu_logout', ACTIVE_YN='N', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='icon-sign-out';

+INSERT INTO `fn_menu` VALUES (42,'Browse SDC Service Models',1,10,'serviceModels.htm','menu_servicemodels','Y',NULL,NULL,NULL,NULL,'APP','N','icon-location-pin') ON DUPLICATE KEY UPDATE LABEL='Browse SDC Service Instances', PARENT_ID=1, SORT_ORDER=10, ACTION='serviceModels.htm', FUNCTION_CD='menu_servicemodels', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='icon-location-pin';

+INSERT INTO `fn_menu` VALUES (41,'Create New Service Instance',1,10,'serviceModels.htm#/instances/subscribers','menu_newserinstance','Y',NULL,NULL,NULL,NULL,'APP','N','icon-location-pin') ON DUPLICATE KEY UPDATE LABEL='Create New Service Instance', PARENT_ID=1, SORT_ORDER=10, ACTION='serviceModels.htm#/instances/subscribers', FUNCTION_CD='menu_newserinstance', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='icon-location-pin';

+INSERT INTO `fn_menu` VALUES (43,'View Log',1,10,'viewlog.htm','menu_viewlog','N',NULL,NULL,NULL,NULL,'APP','N','icon-location-pin') ON DUPLICATE KEY UPDATE LABEL='View Log', PARENT_ID=1, SORT_ORDER=10, ACTION='viewlog.htm', FUNCTION_CD='menu_viewlog', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='icon-location-pin';

+INSERT INTO `fn_menu` VALUES (101,'Roles',10,20,'admin','menu_admin','Y',NULL,NULL,NULL,NULL,'APP','N','/static/fusion/images/users.png') ON DUPLICATE KEY UPDATE LABEL='Roles', PARENT_ID=10, SORT_ORDER=20, ACTION='admin', FUNCTION_CD='menu_admin', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='/static/fusion/images/users.png';

+INSERT INTO `fn_menu` VALUES (102,'Role Functions',10,30,'admin#/role_function_list','menu_admin','Y',NULL,NULL,NULL,NULL,'APP','N',NULL) ON DUPLICATE KEY UPDATE LABEL='Role Functions', PARENT_ID=10, SORT_ORDER=30, ACTION='admin#/role_function_list', FUNCTION_CD='menu_admin', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC=NULL;

+INSERT INTO `fn_menu` VALUES (103,'Broadcast Messages',10,50,'admin#/broadcast_list','menu_admin','N',NULL,NULL,NULL,NULL,'APP','N','/static/fusion/images/bubble.png') ON DUPLICATE KEY UPDATE LABEL='Broadcast Messages', PARENT_ID=10, SORT_ORDER=50, ACTION='admin#/broadcast_list', FUNCTION_CD='menu_admin', ACTIVE_YN='N', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='/static/fusion/images/bubble.png';

+INSERT INTO `fn_menu` VALUES (105,'Cache Admin',10,40,'admin#/jcs_admin','menu_admin','N',NULL,NULL,NULL,NULL,'APP','N','/static/fusion/images/cache.png') ON DUPLICATE KEY UPDATE LABEL='Cache Admin', PARENT_ID=10, SORT_ORDER=40, ACTION='admin#/jcs_admin', FUNCTION_CD='menu_admin', ACTIVE_YN='N', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='/static/fusion/images/cache.png';

+INSERT INTO `fn_menu` VALUES (106,'Lock/Unlock Application',10,60,'application_lockout.htm','menu_admin','N',NULL,NULL,NULL,NULL,'APP','N','/static/fusion/images/decrypted.png') ON DUPLICATE KEY UPDATE LABEL='Lock/Unlock Application', PARENT_ID=10, SORT_ORDER=60, ACTION='application_lockout.htm', FUNCTION_CD='menu_admin', ACTIVE_YN='N', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='/static/fusion/images/decrypted.png';

+INSERT INTO `fn_menu` VALUES (108,'Usage',10,80,'admin#/usage_list','menu_admin','N',NULL,NULL,NULL,NULL,'APP','N','/static/fusion/images/users.png') ON DUPLICATE KEY UPDATE LABEL='Usage', PARENT_ID=10, SORT_ORDER=80, ACTION='admin#/usage_list', FUNCTION_CD='menu_admin', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='/static/fusion/images/users.png';

+INSERT INTO `fn_menu` VALUES (109, 'VNF Changes', 1, 11, 'serviceModels.htm#/change-management', 'menu_changemanagement', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', 'icon-location-pin') ON DUPLICATE KEY UPDATE LABEL='VNF Changes', PARENT_ID=1, SORT_ORDER=11, ACTION='serviceModels.htm#/change-management', FUNCTION_CD='menu_changemanagement', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='icon-location-pin';

+--INSERT INTO `fn_menu` VALUES (110, 'Test Environments', 1, 12, 'serviceModels.htm#/testEnvironments', 'menu_testenvironment', 'Y', NULL, NULL, NULL, NULL, 'APP', 'N', 'icon-location-pin') ON DUPLICATE KEY UPDATE LABEL='Test Environments', PARENT_ID=1, SORT_ORDER=12, ACTION='serviceModels.htm#/testEnvironments', FUNCTION_CD='menu_testenvironment', ACTIVE_YN='Y', SERVLET=NULL, QUERY_STRING=NULL, EXTERNAL_URL=NULL, TARGET=NULL, MENU_SET_CD='APP', SEPARATOR_YN='N', IMAGE_SRC='icon-location-pin';

+--

+-- Dumping data for table `fn_restricted_url`

+--

+REPLACE INTO `fn_restricted_url` VALUES ('attachment.htm','menu_admin');

+REPLACE INTO `fn_restricted_url` VALUES ('broadcast.htm','menu_admin');

+REPLACE INTO `fn_restricted_url` VALUES ('file_upload.htm','menu_admin');

+REPLACE INTO `fn_restricted_url` VALUES ('job.htm','menu_admin');

+REPLACE INTO `fn_restricted_url` VALUES ('role.htm','menu_admin');

+REPLACE INTO `fn_restricted_url` VALUES ('role_function.htm','menu_admin');

+REPLACE INTO `fn_restricted_url` VALUES ('test.htm','menu_admin');

+REPLACE INTO `fn_restricted_url` VALUES ('serviceModels.htm','menu_servicemodels');

+REPLACE INTO `fn_restricted_url` VALUES ('async_test.htm','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('chatWindow.htm','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('contact_list.htm','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('customer_dynamic_list.htm','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('event.htm','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('event_list.htm','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('mobile_welcome.htm','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('sample_map.htm','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('template.jsp','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('welcome.htm','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('zkau','menu_home');

+REPLACE INTO `fn_restricted_url` VALUES ('itracker_assign.htm','menu_itracker');

+REPLACE INTO `fn_restricted_url` VALUES ('itracker_byassignee.htm','menu_itracker');

+REPLACE INTO `fn_restricted_url` VALUES ('itracker_create.htm','menu_itracker');

+REPLACE INTO `fn_restricted_url` VALUES ('itracker_update.htm','menu_itracker');

+REPLACE INTO `fn_restricted_url` VALUES ('manage_license.htm','menu_itracker');

+REPLACE INTO `fn_restricted_url` VALUES ('support_ticket.htm','menu_itracker');

+REPLACE INTO `fn_restricted_url` VALUES ('jbpm_designer.htm','menu_job_create');

+REPLACE INTO `fn_restricted_url` VALUES ('jbpm_drools.htm','menu_job_create');

+REPLACE INTO `fn_restricted_url` VALUES ('process_job.htm','menu_job_create');

+-- REPLACE INTO `fn_restricted_url` VALUES ('novamap_controller.htm','menu_map');

+REPLACE INTO `fn_restricted_url` VALUES ('createnewserviceinstance.htm','menu_newserinstance');

+REPLACE INTO `fn_restricted_url` VALUES ('profile.htm','menu_profile_create');

+REPLACE INTO `fn_restricted_url` VALUES ('raptor.htm','menu_reports');

+REPLACE INTO `fn_restricted_url` VALUES ('raptor2.htm','menu_reports');

+REPLACE INTO `fn_restricted_url` VALUES ('raptor_blob_extract.htm','menu_reports');

+REPLACE INTO `fn_restricted_url` VALUES ('raptor_email_attachment.htm','menu_reports');

+REPLACE INTO `fn_restricted_url` VALUES ('raptor_search.htm','menu_reports');

+REPLACE INTO `fn_restricted_url` VALUES ('report_list.htm','menu_reports');

+REPLACE INTO `fn_restricted_url` VALUES ('gauge.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('gmap_controller.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('gmap_frame.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('map.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('map_download.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('map_grid_search.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('sample_animated_map.htm','menu_tab');

+-- REPLACE INTO `fn_restricted_url` VALUES ('sample_heat_map.htm','menu_tab');

+-- REPLACE INTO `fn_restricted_url` VALUES ('sample_heat_map_no_header.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('sample_map_2.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('sample_map_3.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('tab2_sub1.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('tab2_sub2_link1.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('tab2_sub2_link2.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('tab2_sub3.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('tab3.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('tab4.htm','menu_tab');

+REPLACE INTO `fn_restricted_url` VALUES ('viewlog.htm','menu_viewlog');

+-- REPLACE INTO `fn_restricted_url` VALUES ('bd_optima.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('bd_optima_interactive.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('bd_p2t.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('grid_heatmap.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('hive.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('hiveconfig.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('hiveconfig_popup.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('hive_search.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('hive_search_popup.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('jbpmTestProcess.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('job_progress.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('mapreduce.htm','quantum_bd');

+-- REPLACE INTO `fn_restricted_url` VALUES ('mapreduce_search.htm','quantum_bd');

+REPLACE INTO `fn_restricted_url` VALUES ('raptor.htm','view_reports');

+REPLACE INTO `fn_restricted_url` VALUES ('raptor_blob_extract.htm','view_reports');

+REPLACE INTO `fn_restricted_url` VALUES ('serviceModels.htm','menu_servicemodels');

+--

+-- Dumping data for table `fn_role`

+--

+INSERT INTO `fn_role` VALUES (1,'System Administrator','Y',1) ON DUPLICATE KEY UPDATE ROLE_NAME='System Administrator', ACTIVE_YN='Y', PRIORITY=1;

+INSERT INTO `fn_role` VALUES (16,'Standard User','Y',5) ON DUPLICATE KEY UPDATE ROLE_NAME='Standard User', ACTIVE_YN='Y', PRIORITY=5;

+

+--

+-- Dumping data for table `fn_role_composite`

+--

+REPLACE INTO `fn_role_composite` VALUES (1,16);

+

+--

+-- Dumping data for table `fn_role_function`

+--

+REPLACE INTO `fn_role_function` VALUES (1,'doclib');

+REPLACE INTO `fn_role_function` VALUES (1,'doclib_admin');

+REPLACE INTO `fn_role_function` VALUES (1,'login');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_admin');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_ajax');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_servicemodels');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_customer');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_customer_create');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_feedback');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_help');

+-- REPLACE INTO `fn_role_function` VALUES (1,'menu_hiveconfig');

+-- REPLACE INTO `fn_role_function` VALUES (1,'menu_hiveconfig_create');

+-- REPLACE INTO `fn_role_function` VALUES (1,'menu_hiveconfig_search');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_home');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_itracker');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_itracker_admin');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_job');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_job_create');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_logout');

+-- REPLACE INTO `fn_role_function` VALUES (1,'menu_mapreduce');

+-- REPLACE INTO `fn_role_function` VALUES (1,'menu_mapreduce_create');

+-- REPLACE INTO `fn_role_function` VALUES (1,'menu_mapreduce_search');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_newserinstance');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_notes');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_process');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_profile');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_profile_create');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_profile_import');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_reports');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_sample');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_tab');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_test');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_viewlog');

+-- REPLACE INTO `fn_role_function` VALUES (1,'quantum_bd');

+REPLACE INTO `fn_role_function` VALUES (16,'login');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_ajax');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_servicemodels');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_customer');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_customer_create');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_home');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_itracker');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_logout');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_map');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_newserinstance');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_profile');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_reports');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_tab');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_viewlog');

+-- REPLACE INTO `fn_role_function` VALUES (16,'quantum_bd');

+REPLACE INTO `fn_role_function` VALUES ('1', 'menu_searchexisting');

+REPLACE INTO `fn_role_function` VALUES ('16', 'menu_searchexisting');

+REPLACE INTO `fn_role_function` VALUES (1,'menu_changemanagement');

+REPLACE INTO `fn_role_function` VALUES (16,'menu_changemanagement');

+--REPLACE INTO `fn_role_function` VALUES (1,'menu_testenvironment');

+--REPLACE INTO `fn_role_function` VALUES (16,'menu_testenvironment');

+

+update fn_menu set active_yn = 'Y' where label = 'Admin';

+update fn_menu set active_yn = 'Y' where label = 'Root';

+update fn_menu set action = 'admin' where label = 'Admin';

+

+--

+-- Dumping data for table `fn_tab`

+--

+INSERT INTO `fn_tab` VALUES ('TAB1','Tab 1','Tab 1 Information','tab1.htm','menu_tab','Y',10,NULL,'APP') ON DUPLICATE KEY UPDATE TAB_NAME='Tab 1', TAB_DESCR='Tab 1 Information', ACTION='tab1.htm', FUNCTION_CD='menu_tab', ACTIVE_YN='Y', SORT_ORDER=10, PARENT_TAB_CD=NULL, TAB_SET_CD='APP';

+INSERT INTO `fn_tab` VALUES ('TAB2','Tab 2','Tab 2 Information','tab2_sub1.htm','menu_tab','Y',20,NULL,'APP') ON DUPLICATE KEY UPDATE TAB_NAME='Tab 2', TAB_DESCR='Tab 2 Information', ACTION='tab2_sub1.htm', FUNCTION_CD='menu_tab', ACTIVE_YN='Y', SORT_ORDER=20, PARENT_TAB_CD=NULL, TAB_SET_CD='APP';

+INSERT INTO `fn_tab` VALUES ('TAB2_SUB1','Sub Tab 1','Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2','APP') ON DUPLICATE KEY UPDATE TAB_NAME='Sub Tab 1', TAB_DESCR='Sub Tab 1 Information', ACTION='tab2_sub1.htm', FUNCTION_CD='menu_tab', ACTIVE_YN='Y', SORT_ORDER=10, PARENT_TAB_CD='TAB2', TAB_SET_CD='APP';

+INSERT INTO `fn_tab` VALUES ('TAB2_SUB1_S1','Left Tab 1','Sub - Sub Tab 1 Information','tab2_sub1.htm','menu_tab','Y',10,'TAB2_SUB1','APP') ON DUPLICATE KEY UPDATE TAB_NAME='Left Tab 1', TAB_DESCR='Sub - Sub Tab 1 Information', ACTION='tab2_sub1.htm', FUNCTION_CD='menu_tab', ACTIVE_YN='Y', SORT_ORDER=10, PARENT_TAB_CD='TAB2_SUB1', TAB_SET_CD='APP';

+INSERT INTO `fn_tab` VALUES ('TAB2_SUB2','Sub Tab 2','Sub Tab 2 Information','tab2_sub2.htm','menu_tab','Y',20,'TAB2','APP') ON DUPLICATE KEY UPDATE TAB_NAME='Sub Tab 2', TAB_DESCR='Sub Tab 2 Information', ACTION='tab2_sub2.htm', FUNCTION_CD='menu_tab', ACTIVE_YN='Y', SORT_ORDER=20, PARENT_TAB_CD='TAB2', TAB_SET_CD='APP';

+INSERT INTO `fn_tab` VALUES ('TAB2_SUB3','Sub Tab 3','Sub Tab 3 Information','tab2_sub3.htm','menu_tab','Y',30,'TAB2','APP') ON DUPLICATE KEY UPDATE TAB_NAME='Sub Tab 3', TAB_DESCR='Sub Tab 3 Information', ACTION='tab2_sub3.htm', FUNCTION_CD='menu_tab', ACTIVE_YN='Y', SORT_ORDER=30, PARENT_TAB_CD='TAB2', TAB_SET_CD='APP';

+INSERT INTO `fn_tab` VALUES ('TAB3','Tab 3','Tab 3 Information','tab3.htm','menu_tab','Y',30,NULL,'APP') ON DUPLICATE KEY UPDATE TAB_NAME='Tab 3', TAB_DESCR='Tab 3 Information', ACTION='tab3.htm', FUNCTION_CD='menu_tab', ACTIVE_YN='Y', SORT_ORDER=30, PARENT_TAB_CD=NULL, TAB_SET_CD='APP';

+INSERT INTO `fn_tab` VALUES ('TAB4','Tab 4','Tab 4 Information','tab4.htm','menu_tab','Y',40,NULL,'APP') ON DUPLICATE KEY UPDATE TAB_NAME='Tab 4', TAB_DESCR='Tab 4 Information', ACTION='tab4.htm', FUNCTION_CD='menu_tab', ACTIVE_YN='Y', SORT_ORDER=40, PARENT_TAB_CD=NULL, TAB_SET_CD='APP';

+

+--

+-- Dumping data for table `fn_tab_selected`

+--

+REPLACE INTO `fn_tab_selected` VALUES ('TAB1','tab1');

+REPLACE INTO `fn_tab_selected` VALUES ('TAB2','tab2_sub1');

+REPLACE INTO `fn_tab_selected` VALUES ('TAB2','tab2_sub2');

+REPLACE INTO `fn_tab_selected` VALUES ('TAB2','tab2_sub3');

+REPLACE INTO `fn_tab_selected` VALUES ('TAB2_SUB1','tab2_sub1');

+REPLACE INTO `fn_tab_selected` VALUES ('TAB2_SUB1_S1','tab2_sub1');

+REPLACE INTO `fn_tab_selected` VALUES ('TAB2_SUB2','tab2_sub2');

+REPLACE INTO `fn_tab_selected` VALUES ('TAB2_SUB3','tab2_sub3');

+REPLACE INTO `fn_tab_selected` VALUES ('TAB3','tab3');

+REPLACE INTO `fn_tab_selected` VALUES ('TAB4','tab4');

+

+

+--

+-- Dumping data for table `fn_user`

+--

+INSERT IGNORE `fn_user` VALUES (1,null,null,'Demo',null,'User',null,null,null,null,null,null,null,'demo',null,'demo','Kp8bJ4SXszM0WX','2016-11-14 13:24:07','Y',null,'2016-10-17 00:00:00',1,'2016-11-14 13:24:07','N',null,null,null,'NJ',null,'US',null,null,null,null,null,10,null,null,null,null,null,null);

+INSERT IGNORE `fn_user` VALUES (2,null,null,'vid1',null,'User',null,null,null,null,null,null,null,'vid1',null,'vid1','Kp8bJ4SXszM0WX','2016-11-14 13:24:07','Y',null,'2016-10-17 00:00:00',1,'2016-11-14 13:24:07','N',null,null,null,'NJ',null,'US',null,null,null,null,null,10,null,null,null,null,null,null);

+INSERT IGNORE `fn_user` VALUES (3,null,null,'vid2',null,'User',null,null,null,null,null,null,null,'vid2',null,'vid2','Kp8bJ4SXszM0WX','2016-11-14 13:24:07','Y',null,'2016-10-17 00:00:00',1,'2016-11-14 13:24:07','N',null,null,null,'NJ',null,'US',null,null,null,null,null,10,null,null,null,null,null,null);

+INSERT IGNORE `fn_user` VALUES (4,null,null,'vid3',null,'User',null,null,null,null,null,null,null,'vid3',null,'vid3','Kp8bJ4SXszM0WX','2016-11-14 13:24:07','Y',null,'2016-10-17 00:00:00',1,'2016-11-14 13:24:07','N',null,null,null,'NJ',null,'US',null,null,null,null,null,10,null,null,null,null,null,null);

+INSERT IGNORE `fn_user` VALUES (5,null,null,'vid4',null,'User',null,null,null,null,null,null,null,'vid4',null,'vid4','Kp8bJ4SXszM0WX','2016-11-14 13:24:07','Y',null,'2016-10-17 00:00:00',1,'2016-11-14 13:24:07','N',null,null,null,'NJ',null,'US',null,null,null,null,null,10,null,null,null,null,null,null);

+

+INSERT IGNORE `fn_user_role` VALUES (1,1,NULL,1);

+INSERT IGNORE `fn_user_role` VALUES (2,1,NULL,1);

+INSERT IGNORE `fn_user_role` VALUES (3,1,NULL,1);

+INSERT IGNORE `fn_user_role` VALUES (4,1,NULL,1);

+INSERT IGNORE `fn_user_role` VALUES (5,1,NULL,1);

diff --git a/onap-enabler-infra/src/main/resources/osam-core-pre-init.sql b/onap-enabler-infra/src/main/resources/osam-core-pre-init.sql
new file mode 100644
index 0000000..53740d5
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/osam-core-pre-init.sql
@@ -0,0 +1,32 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * VID

+ * ================================================================================

+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+CREATE TABLE IF NOT EXISTS `osam_core`.`schema_info` (

+  `SCHEMA_ID` VARCHAR(25) NOT NULL,

+  `SCHEMA_DESC` VARCHAR(75) NOT NULL,

+  `DATASOURCE_TYPE` VARCHAR(100) NULL DEFAULT NULL,

+  `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(11) NOT NULL,

+  `MAX_POOL_SIZE` INT(11) NOT NULL,

+  `IDLE_CONNECTION_TEST_PERIOD` INT(11) NOT NULL)

+ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

diff --git a/onap-enabler-infra/src/main/resources/osam-core-schema.sql b/onap-enabler-infra/src/main/resources/osam-core-schema.sql
new file mode 100644
index 0000000..4a2e17e
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/osam-core-schema.sql
@@ -0,0 +1,1324 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * VID

+ * ================================================================================

+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+-- ----------------------------------------------------------------------------

+-- MySQL Workbench Migration

+-- Migrated Schemata: osam_core

+-- Source Schemata: ecomp_sd

+-- Created: Sun Nov 13 08:58:53 2016

+-- Workbench Version: 6.3.6

+-- ----------------------------------------------------------------------------

+

+SET FOREIGN_KEY_CHECKS = 0;

+

+-- ----------------------------------------------------------------------------

+-- Schema osam_core

+-- ----------------------------------------------------------------------------

+CREATE SCHEMA IF NOT EXISTS `osam_core` ;

+

+USE osam_core;

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_favorite_reports

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_favorite_reports` (

+  `USER_ID` INT(11) NOT NULL,

+  `REP_ID` INT(11) NOT NULL,

+PRIMARY KEY (`USER_ID`, `REP_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_filehist_log

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_filehist_log` (

+  `SCHEDULE_ID` DECIMAL(11,0) NOT NULL,

+  `URL` VARCHAR(4000) NULL DEFAULT NULL,

+  `NOTES` VARCHAR(3500) NULL DEFAULT NULL,

+  `RUN_TIME` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_folder

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_folder` (

+  `FOLDER_ID` INT(11) NOT NULL,

+  `FOLDER_NAME` VARCHAR(50) NOT NULL,

+  `DESCR` VARCHAR(500) NULL DEFAULT NULL,

+  `CREATE_ID` INT(11) NOT NULL,

+  `CREATE_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

+  `PARENT_FOLDER_ID` INT(11) NULL DEFAULT NULL,

+  `PUBLIC_YN` VARCHAR(1) NOT NULL DEFAULT 'N',

+PRIMARY KEY (`FOLDER_ID`),

+INDEX `FK_PARENT_KEY_CR_FOLDER` (`PARENT_FOLDER_ID` ASC),

+CONSTRAINT `FK_PARENT_KEY_CR_FOLDER`

+FOREIGN KEY (`PARENT_FOLDER_ID`)

+REFERENCES `osam_core`.`cr_folder` (`FOLDER_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_folder_access

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_folder_access` (

+  `FOLDER_ACCESS_ID` DECIMAL(11,0) NOT NULL,

+  `FOLDER_ID` DECIMAL(11,0) NOT NULL,

+  `ORDER_NO` DECIMAL(11,0) NOT NULL,

+  `ROLE_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `USER_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `READ_ONLY_YN` VARCHAR(1) NOT NULL DEFAULT 'N',

+PRIMARY KEY (`FOLDER_ACCESS_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_hist_user_map

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_hist_user_map` (

+  `HIST_ID` INT(11) NOT NULL,

+  `USER_ID` INT(11) NOT NULL,

+PRIMARY KEY (`HIST_ID`, `USER_ID`),

+INDEX `SYS_C0014617` (`USER_ID` ASC),

+CONSTRAINT `SYS_C0014616`

+FOREIGN KEY (`HIST_ID`)

+REFERENCES `osam_core`.`cr_report_file_history` (`HIST_ID`),

+CONSTRAINT `SYS_C0014617`

+FOREIGN KEY (`USER_ID`)

+REFERENCES `osam_core`.`fn_user` (`USER_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_lu_file_type

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_lu_file_type` (

+  `LOOKUP_ID` DECIMAL(2,0) NOT NULL,

+  `LOOKUP_DESCR` VARCHAR(255) NOT NULL,

+  `ACTIVE_YN` CHAR(1) NULL DEFAULT 'Y',

+  `ERROR_CODE` DECIMAL(11,0) NULL DEFAULT NULL,

+PRIMARY KEY (`LOOKUP_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_raptor_action_img

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_raptor_action_img` (

+  `IMAGE_ID` VARCHAR(100) NOT NULL,

+  `IMAGE_LOC` VARCHAR(400) NULL DEFAULT NULL,

+PRIMARY KEY (`IMAGE_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_raptor_pdf_img

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_raptor_pdf_img` (

+  `IMAGE_ID` VARCHAR(100) NOT NULL,

+  `IMAGE_LOC` VARCHAR(400) NULL DEFAULT NULL,

+PRIMARY KEY (`IMAGE_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_remote_schema_info

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_remote_schema_info` (

+  `SCHEMA_PREFIX` VARCHAR(5) NOT NULL,

+  `SCHEMA_DESC` VARCHAR(75) NOT NULL,

+  `DATASOURCE_TYPE` VARCHAR(100) NULL DEFAULT NULL,

+PRIMARY KEY (`SCHEMA_PREFIX`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_report

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_report` (

+  `REP_ID` DECIMAL(11,0) NOT NULL,

+  `TITLE` VARCHAR(100) NOT NULL,

+  `DESCR` VARCHAR(255) NULL DEFAULT NULL,

+  `PUBLIC_YN` VARCHAR(1) NOT NULL DEFAULT 'N',

+  `REPORT_XML` TEXT NULL DEFAULT NULL,

+  `CREATE_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `CREATE_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `MAINT_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `MAINT_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `MENU_ID` VARCHAR(500) NULL DEFAULT NULL,

+  `MENU_APPROVED_YN` VARCHAR(1) NOT NULL DEFAULT 'N',

+  `OWNER_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `FOLDER_ID` INT(11) NULL DEFAULT '0',

+  `DASHBOARD_TYPE_YN` VARCHAR(1) NULL DEFAULT 'N',

+  `DASHBOARD_YN` VARCHAR(1) NULL DEFAULT 'N',

+PRIMARY KEY (`REP_ID`),

+INDEX `CR_REPORT_CREATE_IDPUBLIC_YNTITLE` (`CREATE_ID` ASC, `PUBLIC_YN` ASC, `TITLE` ASC))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_report_access

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_report_access` (

+  `REP_ID` DECIMAL(11,0) NOT NULL,

+  `ORDER_NO` DECIMAL(11,0) NOT NULL,

+  `ROLE_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `USER_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `READ_ONLY_YN` VARCHAR(1) NOT NULL DEFAULT 'N',

+PRIMARY KEY (`REP_ID`, `ORDER_NO`),

+CONSTRAINT `FK_CR_REPOR_REF_8550_CR_REPOR`

+FOREIGN KEY (`REP_ID`)

+REFERENCES `osam_core`.`cr_report` (`REP_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_report_dwnld_log

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_report_dwnld_log` (

+  `USER_ID` DECIMAL(11,0) NOT NULL,

+  `REP_ID` INT(11) NOT NULL,

+  `FILE_NAME` VARCHAR(100) NOT NULL,

+  `DWNLD_START_TIME` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `RECORD_READY_TIME` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `FILTER_PARAMS` VARCHAR(2000) NULL DEFAULT NULL)

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_report_email_sent_log

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_report_email_sent_log` (

+  `LOG_ID` INT(11) NOT NULL,

+  `SCHEDULE_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `GEN_KEY` VARCHAR(25) NOT NULL,

+  `REP_ID` DECIMAL(11,0) NOT NULL,

+  `USER_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `SENT_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `ACCESS_FLAG` VARCHAR(1) NOT NULL DEFAULT 'Y',

+  `TOUCH_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+PRIMARY KEY (`LOG_ID`),

+INDEX `FK_CR_REPORT_REP_ID` (`REP_ID` ASC),

+CONSTRAINT `FK_CR_REPORT_REP_ID`

+FOREIGN KEY (`REP_ID`)

+REFERENCES `osam_core`.`cr_report` (`REP_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_report_file_history

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_report_file_history` (

+  `HIST_ID` INT(11) NOT NULL,

+  `SCHED_USER_ID` DECIMAL(11,0) NOT NULL,

+  `SCHEDULE_ID` DECIMAL(11,0) NOT NULL,

+  `USER_ID` DECIMAL(11,0) NOT NULL,

+  `REP_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `RUN_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

+  `RECURRENCE` VARCHAR(50) NULL DEFAULT NULL,

+  `FILE_TYPE_ID` DECIMAL(2,0) NULL DEFAULT NULL,

+  `FILE_NAME` VARCHAR(80) NULL DEFAULT NULL,

+  `FILE_BLOB` BLOB NULL DEFAULT NULL,

+  `FILE_SIZE` DECIMAL(11,0) NULL DEFAULT NULL,

+  `RAPTOR_URL` VARCHAR(4000) NULL DEFAULT NULL,

+  `ERROR_YN` CHAR(1) NULL DEFAULT 'N',

+  `ERROR_CODE` DECIMAL(11,0) NULL DEFAULT NULL,

+  `DELETED_YN` CHAR(1) NULL DEFAULT 'N',

+  `DELETED_BY` DECIMAL(38,0) NULL DEFAULT NULL,

+PRIMARY KEY (`HIST_ID`),

+INDEX `SYS_C0014614` (`FILE_TYPE_ID` ASC),

+INDEX `SYS_C0014615` (`REP_ID` ASC),

+CONSTRAINT `SYS_C0014614`

+FOREIGN KEY (`FILE_TYPE_ID`)

+REFERENCES `osam_core`.`cr_lu_file_type` (`LOOKUP_ID`),

+CONSTRAINT `SYS_C0014615`

+FOREIGN KEY (`REP_ID`)

+REFERENCES `osam_core`.`cr_report` (`REP_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_report_log

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_report_log` (

+  `REP_ID` DECIMAL(11,0) NOT NULL,

+  `LOG_TIME` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

+  `USER_ID` DECIMAL(11,0) NOT NULL,

+  `ACTION` VARCHAR(2000) NOT NULL,

+  `ACTION_VALUE` VARCHAR(50) NULL DEFAULT NULL,

+  `FORM_FIELDS` VARCHAR(4000) NULL DEFAULT NULL,

+INDEX `FK_CR_REPOR_REF_17645_CR_REPOR` (`REP_ID` ASC),

+CONSTRAINT `FK_CR_REPOR_REF_17645_CR_REPOR`

+FOREIGN KEY (`REP_ID`)

+REFERENCES `osam_core`.`cr_report` (`REP_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_report_schedule

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_report_schedule` (

+  `SCHEDULE_ID` DECIMAL(11,0) NOT NULL,

+  `SCHED_USER_ID` DECIMAL(11,0) NOT NULL,

+  `REP_ID` DECIMAL(11,0) NOT NULL,

+  `ENABLED_YN` VARCHAR(1) NOT NULL,

+  `START_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `END_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `RUN_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `RECURRENCE` VARCHAR(50) NULL DEFAULT NULL,

+  `CONDITIONAL_YN` VARCHAR(1) NOT NULL,

+  `CONDITION_SQL` VARCHAR(4000) NULL DEFAULT NULL,

+  `NOTIFY_TYPE` INT(11) NULL DEFAULT '0',

+  `MAX_ROW` INT(11) NULL DEFAULT '1000',

+  `INITIAL_FORMFIELDS` VARCHAR(3500) NULL DEFAULT NULL,

+  `PROCESSED_FORMFIELDS` VARCHAR(3500) NULL DEFAULT NULL,

+  `FORMFIELDS` VARCHAR(3500) NULL DEFAULT NULL,

+  `CONDITION_LARGE_SQL` TEXT NULL DEFAULT NULL,

+  `ENCRYPT_YN` CHAR(1) NULL DEFAULT 'N',

+  `ATTACHMENT_YN` CHAR(1) NULL DEFAULT 'Y',

+PRIMARY KEY (`SCHEDULE_ID`),

+INDEX `FK_CR_REPOR_REF_14707_CR_REPOR` (`REP_ID` ASC),

+CONSTRAINT `FK_CR_REPOR_REF_14707_CR_REPOR`

+FOREIGN KEY (`REP_ID`)

+REFERENCES `osam_core`.`cr_report` (`REP_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_report_schedule_users

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_report_schedule_users` (

+  `SCHEDULE_ID` DECIMAL(11,0) NOT NULL,

+  `REP_ID` DECIMAL(11,0) NOT NULL,

+  `USER_ID` DECIMAL(11,0) NOT NULL,

+  `ROLE_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `ORDER_NO` DECIMAL(11,0) NOT NULL,

+PRIMARY KEY (`SCHEDULE_ID`, `REP_ID`, `USER_ID`, `ORDER_NO`),

+CONSTRAINT `FK_CR_REPOR_REF_14716_CR_REPOR`

+FOREIGN KEY (`SCHEDULE_ID`)

+REFERENCES `osam_core`.`cr_report_schedule` (`SCHEDULE_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_report_template_map

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_report_template_map` (

+  `REPORT_ID` INT(11) NOT NULL,

+  `TEMPLATE_FILE` VARCHAR(200) NULL DEFAULT NULL,

+PRIMARY KEY (`REPORT_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_schedule_activity_log

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_schedule_activity_log` (

+  `SCHEDULE_ID` DECIMAL(11,0) NOT NULL,

+  `URL` VARCHAR(4000) NULL DEFAULT NULL,

+  `NOTES` VARCHAR(2000) NULL DEFAULT NULL,

+  `RUN_TIME` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_table_join

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_table_join` (

+  `SRC_TABLE_NAME` VARCHAR(30) NOT NULL,

+  `DEST_TABLE_NAME` VARCHAR(30) NOT NULL,

+  `JOIN_EXPR` VARCHAR(500) NOT NULL,

+INDEX `CR_TABLE_JOIN_DEST_TABLE_NAME` (`DEST_TABLE_NAME` ASC),

+INDEX `CR_TABLE_JOIN_SRC_TABLE_NAME` (`SRC_TABLE_NAME` ASC),

+CONSTRAINT `FK_CR_TABLE_REF_311_CR_TAB`

+FOREIGN KEY (`SRC_TABLE_NAME`)

+REFERENCES `osam_core`.`cr_table_source` (`TABLE_NAME`),

+CONSTRAINT `FK_CR_TABLE_REF_315_CR_TAB`

+FOREIGN KEY (`DEST_TABLE_NAME`)

+REFERENCES `osam_core`.`cr_table_source` (`TABLE_NAME`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_table_role

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_table_role` (

+  `TABLE_NAME` VARCHAR(30) NOT NULL,

+  `ROLE_ID` DECIMAL(11,0) NOT NULL,

+PRIMARY KEY (`TABLE_NAME`, `ROLE_ID`),

+CONSTRAINT `FK_CR_TABLE_REF_32384_CR_TABLE`

+FOREIGN KEY (`TABLE_NAME`)

+REFERENCES `osam_core`.`cr_table_source` (`TABLE_NAME`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.cr_table_source

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`cr_table_source` (

+  `TABLE_NAME` VARCHAR(30) NOT NULL,

+  `DISPLAY_NAME` VARCHAR(30) NOT NULL,

+  `PK_FIELDS` VARCHAR(200) NULL DEFAULT NULL,

+  `WEB_VIEW_ACTION` VARCHAR(50) NULL DEFAULT NULL,

+  `LARGE_DATA_SOURCE_YN` VARCHAR(1) NOT NULL DEFAULT 'N',

+  `FILTER_SQL` VARCHAR(4000) NULL DEFAULT NULL,

+  `SOURCE_DB` VARCHAR(50) NULL DEFAULT NULL,

+PRIMARY KEY (`TABLE_NAME`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table vid_portal.fn_app

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_app` (

+  `APP_ID` INT(11) NOT NULL AUTO_INCREMENT,

+  `APP_NAME` VARCHAR(100) NOT NULL DEFAULT '?',

+  `APP_IMAGE_URL` VARCHAR(256) NULL DEFAULT NULL,

+  `APP_DESCRIPTION` VARCHAR(512) NULL DEFAULT NULL,

+  `APP_NOTES` VARCHAR(4096) NULL DEFAULT NULL,

+  `APP_URL` VARCHAR(256) NULL DEFAULT NULL,

+  `APP_ALTERNATE_URL` VARCHAR(256) NULL DEFAULT NULL,

+  `APP_REST_ENDPOINT` VARCHAR(2000) NULL DEFAULT NULL,

+  `ML_APP_NAME` VARCHAR(50) NOT NULL DEFAULT '?',

+  `ML_APP_ADMIN_ID` VARCHAR(7) NOT NULL DEFAULT '?',

+  `MOTS_ID` INT(11) NULL DEFAULT NULL,

+  `APP_PASSWORD` VARCHAR(256) NOT NULL DEFAULT '?',

+  `OPEN` CHAR(1) NULL DEFAULT 'N',

+  `ENABLED` CHAR(1) NULL DEFAULT 'Y',

+  `THUMBNAIL` MEDIUMBLOB NULL DEFAULT NULL,

+  `APP_USERNAME` VARCHAR(50) NULL DEFAULT NULL,

+  `UEB_KEY` VARCHAR(256) NULL DEFAULT NULL,

+  `UEB_SECRET` VARCHAR(256) NULL DEFAULT NULL,

+  `UEB_TOPIC_NAME` VARCHAR(256) NULL DEFAULT NULL,

+PRIMARY KEY (`APP_ID`))

+  ENGINE = InnoDB

+  AUTO_INCREMENT = 2

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_app_mme_cpu

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_app_mme_cpu` (

+  `MME` VARCHAR(200) NULL DEFAULT NULL,

+  `YEARMONTH` INT(11) NULL DEFAULT NULL,

+  `SCTP_CPU` INT(11) NULL DEFAULT NULL,

+  `AP_CPU` INT(11) NULL DEFAULT NULL,

+  `DP_CPU` INT(11) NULL DEFAULT NULL,

+  `ROUTER_CPU` INT(11) NULL DEFAULT NULL,

+  `PEB_CPU` INT(11) NULL DEFAULT NULL,

+  `SAU` INT(11) NULL DEFAULT NULL)

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_audit_action

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_audit_action` (

+  `AUDIT_ACTION_ID` INT(11) NOT NULL,

+  `CLASS_NAME` VARCHAR(500) NOT NULL,

+  `METHOD_NAME` VARCHAR(50) NOT NULL,

+  `AUDIT_ACTION_CD` VARCHAR(20) NOT NULL,

+  `AUDIT_ACTION_DESC` VARCHAR(200) NULL DEFAULT NULL,

+  `ACTIVE_YN` VARCHAR(1) NULL DEFAULT NULL,

+PRIMARY KEY (`AUDIT_ACTION_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_audit_action_log

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_audit_action_log` (

+  `AUDIT_LOG_ID` INT(11) NOT NULL AUTO_INCREMENT,

+  `AUDIT_ACTION_CD` VARCHAR(200) NULL DEFAULT NULL,

+  `ACTION_TIME` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

+  `USER_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `CLASS_NAME` VARCHAR(100) NULL DEFAULT NULL,

+  `METHOD_NAME` VARCHAR(50) NULL DEFAULT NULL,

+  `SUCCESS_MSG` VARCHAR(20) NULL DEFAULT NULL,

+  `ERROR_MSG` VARCHAR(500) NULL DEFAULT NULL,

+PRIMARY KEY (`AUDIT_LOG_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_audit_log

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_audit_log` (

+  `LOG_ID` INT(11) NOT NULL AUTO_INCREMENT,

+  `USER_ID` INT(11) NOT NULL,

+  `ACTIVITY_CD` VARCHAR(50) NOT NULL,

+  `AUDIT_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `COMMENTS` VARCHAR(1000) NULL DEFAULT NULL,

+  `AFFECTED_RECORD_ID_BK` VARCHAR(500) NULL DEFAULT NULL,

+  `AFFECTED_RECORD_ID` VARCHAR(4000) NULL DEFAULT NULL,

+PRIMARY KEY (`LOG_ID`),

+INDEX `FN_AUDIT_LOG_ACTIVITY_CD` (`ACTIVITY_CD` ASC),

+INDEX `FN_AUDIT_LOG_USER_ID` (`USER_ID` ASC),

+CONSTRAINT `FK_FN_AUDIT_REF_205_FN_LU_AC`

+FOREIGN KEY (`ACTIVITY_CD`)

+REFERENCES `osam_core`.`fn_lu_activity` (`ACTIVITY_CD`),

+CONSTRAINT `FK_FN_AUDIT_REF_209_FN_USER`

+FOREIGN KEY (`USER_ID`)

+REFERENCES `osam_core`.`fn_user` (`USER_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_broadcast_message

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_broadcast_message` (

+  `MESSAGE_ID` INT(11) NOT NULL AUTO_INCREMENT,

+  `MESSAGE_TEXT` VARCHAR(1000) NOT NULL,

+  `MESSAGE_LOCATION_ID` DECIMAL(11,0) NOT NULL,

+  `BROADCAST_START_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `BROADCAST_END_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `ACTIVE_YN` CHAR(1) NOT NULL DEFAULT 'Y',

+  `SORT_ORDER` DECIMAL(4,0) NOT NULL,

+  `BROADCAST_SITE_CD` VARCHAR(50) NULL DEFAULT NULL,

+PRIMARY KEY (`MESSAGE_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_chat_logs

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_chat_logs` (

+  `CHAT_LOG_ID` INT(11) NOT NULL,

+  `CHAT_ROOM_ID` INT(11) NULL DEFAULT NULL,

+  `USER_ID` INT(11) NULL DEFAULT NULL,

+  `MESSAGE` VARCHAR(1000) NULL DEFAULT NULL,

+  `MESSAGE_DATE_TIME` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

+PRIMARY KEY (`CHAT_LOG_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_chat_room

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_chat_room` (

+  `CHAT_ROOM_ID` INT(11) NOT NULL,

+  `NAME` VARCHAR(50) NOT NULL,

+  `DESCRIPTION` VARCHAR(500) NULL DEFAULT NULL,

+  `OWNER_ID` INT(11) NULL DEFAULT NULL,

+  `CREATED_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `UPDATED_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+PRIMARY KEY (`CHAT_ROOM_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_chat_users

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_chat_users` (

+  `CHAT_ROOM_ID` INT(11) NULL DEFAULT NULL,

+  `USER_ID` INT(11) NULL DEFAULT NULL,

+  `LAST_ACTIVITY_DATE_TIME` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

+  `CHAT_STATUS` VARCHAR(20) NULL DEFAULT NULL,

+  `ID` INT(11) NOT NULL,

+PRIMARY KEY (`ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_datasource

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_datasource` (

+  `ID` INT(11) NOT NULL AUTO_INCREMENT,

+  `NAME` VARCHAR(50) NULL DEFAULT NULL,

+  `DRIVER_NAME` VARCHAR(256) NULL DEFAULT NULL,

+  `SERVER` VARCHAR(256) NULL DEFAULT NULL,

+  `PORT` INT(11) NULL DEFAULT NULL,

+  `USER_NAME` VARCHAR(256) NULL DEFAULT NULL,

+  `PASSWORD` VARCHAR(256) NULL DEFAULT NULL,

+  `URL` VARCHAR(256) NULL DEFAULT NULL,

+  `MIN_POOL_SIZE` INT(11) NULL DEFAULT NULL,

+  `MAX_POOL_SIZE` INT(11) NULL DEFAULT NULL,

+  `ADAPTER_ID` INT(11) NULL DEFAULT NULL,

+  `DS_TYPE` VARCHAR(20) NULL DEFAULT NULL,

+PRIMARY KEY (`ID`))

+  ENGINE = InnoDB

+  AUTO_INCREMENT = 4

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_function

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_function` (

+  `FUNCTION_CD` VARCHAR(30) NOT NULL,

+  `FUNCTION_NAME` VARCHAR(50) NOT NULL,

+  `type` VARCHAR(20) NOT NULL,

+  `action` VARCHAR(20) NOT NULL,

+PRIMARY KEY (`FUNCTION_CD`),

+CONSTRAINT `function` UNIQUE (FUNCTION_CD,TYPE,ACTION))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_license

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_license` (

+  `id` DECIMAL(11,0) NOT NULL,

+  `app_id` DECIMAL(11,0) NOT NULL,

+  `ip_address` VARCHAR(100) NOT NULL,

+  `quantum_version_id` DECIMAL(11,0) NOT NULL,

+  `created_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `modified_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `created_id` DECIMAL(11,0) NULL DEFAULT NULL,

+  `modified_id` DECIMAL(11,0) NULL DEFAULT NULL,

+  `end_date` TIMESTAMP NOT NULL DEFAULT '2036-01-19 03:14:07',

+PRIMARY KEY (`id`),

+INDEX `fn_license_r02` (`quantum_version_id` ASC),

+CONSTRAINT `fn_license_r02`

+FOREIGN KEY (`quantum_version_id`)

+REFERENCES `osam_core`.`fn_license_version` (`id`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_license_app

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_license_app` (

+  `id` DECIMAL(11,0) NOT NULL,

+  `app_name` VARCHAR(100) NOT NULL,

+  `ctxt_name` VARCHAR(100) NULL DEFAULT NULL,

+INDEX `fn_license_app_ID` (`id` ASC))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_license_contact

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_license_contact` (

+  `id` INT(11) NOT NULL,

+  `license_id` INT(11) NULL DEFAULT NULL,

+  `sbcid` VARCHAR(20) NULL DEFAULT NULL,

+PRIMARY KEY (`id`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_license_history

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_license_history` (

+  `license_id` DECIMAL(11,0) NULL DEFAULT NULL,

+  `app_id` DECIMAL(11,0) NULL DEFAULT NULL,

+  `ip_address` VARCHAR(100) NULL DEFAULT NULL,

+  `quantum_version_id` DECIMAL(11,0) NULL DEFAULT NULL,

+  `created_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `modified_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `created_id` DECIMAL(11,0) NULL DEFAULT NULL,

+  `modified_id` DECIMAL(11,0) NULL DEFAULT NULL,

+  `id` DECIMAL(11,0) NOT NULL,

+PRIMARY KEY (`id`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_license_version

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_license_version` (

+  `id` DECIMAL(11,0) NOT NULL,

+  `quantum_version` VARCHAR(25) NULL DEFAULT NULL,

+PRIMARY KEY (`id`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_activity

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_activity` (

+  `ACTIVITY_CD` VARCHAR(50) NOT NULL,

+  `ACTIVITY` VARCHAR(50) NOT NULL,

+PRIMARY KEY (`ACTIVITY_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_alert_method

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_alert_method` (

+  `ALERT_METHOD_CD` VARCHAR(10) NOT NULL,

+  `ALERT_METHOD` VARCHAR(50) NOT NULL,

+PRIMARY KEY (`ALERT_METHOD_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_broadcast_site

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_broadcast_site` (

+  `BROADCAST_SITE_CD` VARCHAR(50) NOT NULL,

+  `BROADCAST_SITE_DESCR` VARCHAR(100) NULL DEFAULT NULL,

+PRIMARY KEY (`BROADCAST_SITE_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_call_times

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_call_times` (

+  `CALL_TIME_ID` DECIMAL(10,0) NOT NULL,

+  `CALL_TIME_AMOUNT` DECIMAL(10,0) NOT NULL,

+  `CALL_TIME_DISPLAY` VARCHAR(50) NOT NULL,

+PRIMARY KEY (`CALL_TIME_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_city

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_city` (

+  `CITY_CD` VARCHAR(2) NOT NULL,

+  `CITY` VARCHAR(100) NOT NULL,

+  `STATE_CD` VARCHAR(2) NOT NULL,

+PRIMARY KEY (`CITY_CD`, `STATE_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_country

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_country` (

+  `COUNTRY_CD` VARCHAR(3) NOT NULL,

+  `COUNTRY` VARCHAR(100) NOT NULL,

+  `FULL_NAME` VARCHAR(100) NULL DEFAULT NULL,

+  `WEBPHONE_COUNTRY_LABEL` VARCHAR(30) NULL DEFAULT NULL,

+PRIMARY KEY (`COUNTRY_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_menu_set

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_menu_set` (

+  `MENU_SET_CD` VARCHAR(10) NOT NULL,

+  `MENU_SET_NAME` VARCHAR(50) NOT NULL,

+PRIMARY KEY (`MENU_SET_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_priority

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_priority` (

+  `PRIORITY_ID` DECIMAL(11,0) NOT NULL,

+  `PRIORITY` VARCHAR(50) NOT NULL,

+  `ACTIVE_YN` CHAR(1) NOT NULL,

+  `SORT_ORDER` DECIMAL(5,0) NULL DEFAULT NULL,

+PRIMARY KEY (`PRIORITY_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_role_type

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_role_type` (

+  `ROLE_TYPE_ID` DECIMAL(11,0) NOT NULL,

+  `ROLE_TYPE` VARCHAR(50) NOT NULL,

+PRIMARY KEY (`ROLE_TYPE_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_state

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_state` (

+  `STATE_CD` VARCHAR(2) NOT NULL,

+  `STATE` VARCHAR(100) NOT NULL,

+PRIMARY KEY (`STATE_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_tab_set

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_tab_set` (

+  `TAB_SET_CD` VARCHAR(30) NOT NULL,

+  `TAB_SET_NAME` VARCHAR(50) NOT NULL,

+PRIMARY KEY (`TAB_SET_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_lu_timezone

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_lu_timezone` (

+  `TIMEZONE_ID` INT(11) NOT NULL,

+  `TIMEZONE_NAME` VARCHAR(100) NOT NULL,

+  `TIMEZONE_VALUE` VARCHAR(100) NOT NULL,

+PRIMARY KEY (`TIMEZONE_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_menu

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_menu` (

+  `MENU_ID` INT(11) NOT NULL AUTO_INCREMENT,

+  `LABEL` VARCHAR(100) NULL DEFAULT NULL,

+  `PARENT_ID` INT(11) NULL DEFAULT NULL,

+  `SORT_ORDER` DECIMAL(4,0) NULL DEFAULT NULL,

+  `ACTION` VARCHAR(200) NULL DEFAULT NULL,

+  `FUNCTION_CD` VARCHAR(30) NULL DEFAULT NULL,

+  `ACTIVE_YN` VARCHAR(1) NOT NULL DEFAULT 'Y',

+  `SERVLET` VARCHAR(50) NULL DEFAULT NULL,

+  `QUERY_STRING` VARCHAR(200) NULL DEFAULT NULL,

+  `EXTERNAL_URL` VARCHAR(200) NULL DEFAULT NULL,

+  `TARGET` VARCHAR(25) NULL DEFAULT NULL,

+  `MENU_SET_CD` VARCHAR(10) NULL DEFAULT 'APP',

+  `SEPARATOR_YN` CHAR(1) NULL DEFAULT 'N',

+  `IMAGE_SRC` VARCHAR(100) NULL DEFAULT NULL,

+PRIMARY KEY (`MENU_ID`),

+INDEX `FK_FN_MENU_REF_196_FN_MENU` (`PARENT_ID` ASC),

+INDEX `FK_FN_MENU_MENU_SET_CD` (`MENU_SET_CD` ASC),

+INDEX `FN_MENU_FUNCTION_CD` (`FUNCTION_CD` ASC),

+CONSTRAINT `FK_FN_MENU_MENU_SET_CD`

+FOREIGN KEY (`MENU_SET_CD`)

+REFERENCES `osam_core`.`fn_lu_menu_set` (`MENU_SET_CD`),

+CONSTRAINT `FK_FN_MENU_REF_196_FN_MENU`

+FOREIGN KEY (`PARENT_ID`)

+REFERENCES `osam_core`.`fn_menu` (`MENU_ID`),

+CONSTRAINT `FK_FN_MENU_REF_223_FN_FUNCT`

+FOREIGN KEY (`FUNCTION_CD`)

+REFERENCES `osam_core`.`fn_function` (`FUNCTION_CD`))

+  ENGINE = InnoDB

+  AUTO_INCREMENT = 150029

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_org

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_org` (

+  `ORG_ID` INT(11) NOT NULL,

+  `ORG_NAME` VARCHAR(50) NOT NULL,

+  `ACCESS_CD` VARCHAR(10) NULL DEFAULT NULL,

+PRIMARY KEY (`ORG_ID`),

+INDEX `FN_ORG_ACCESS_CD` (`ACCESS_CD` ASC))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_blob_triggers

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`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 DEFAULT NULL,

+PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`),

+INDEX `SCHED_NAME` (`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC),

+CONSTRAINT `fn_qz_blob_triggers_ibfk_1`

+FOREIGN KEY (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`)

+REFERENCES `osam_core`.`fn_qz_triggers` (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_calendars

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`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`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_cron_triggers

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`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) NULL DEFAULT NULL,

+PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`),

+CONSTRAINT `fn_qz_cron_triggers_ibfk_1`

+FOREIGN KEY (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`)

+REFERENCES `osam_core`.`fn_qz_triggers` (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_fired_triggers

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`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` INT(11) NOT NULL,

+  `STATE` VARCHAR(16) NOT NULL,

+  `JOB_NAME` VARCHAR(200) NULL DEFAULT NULL,

+  `JOB_GROUP` VARCHAR(200) NULL DEFAULT NULL,

+  `IS_NONCONCURRENT` VARCHAR(1) NULL DEFAULT NULL,

+  `REQUESTS_RECOVERY` VARCHAR(1) NULL DEFAULT NULL,

+PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`),

+INDEX `IDX_FN_QZ_FT_TRIG_INST_NAME` (`SCHED_NAME` ASC, `INSTANCE_NAME` ASC),

+INDEX `IDX_FN_QZ_FT_INST_JOB_REQ_RCVRY` (`SCHED_NAME` ASC, `INSTANCE_NAME` ASC, `REQUESTS_RECOVERY` ASC),

+INDEX `IDX_FN_QZ_FT_J_G` (`SCHED_NAME` ASC, `JOB_NAME` ASC, `JOB_GROUP` ASC),

+INDEX `IDX_FN_QZ_FT_JG` (`SCHED_NAME` ASC, `JOB_GROUP` ASC),

+INDEX `IDX_FN_QZ_FT_T_G` (`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC),

+INDEX `IDX_FN_QZ_FT_TG` (`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_job_details

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`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 DEFAULT 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 DEFAULT NULL,

+PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`),

+INDEX `IDX_FN_QZ_J_REQ_RECOVERY` (`SCHED_NAME` ASC, `REQUESTS_RECOVERY` ASC),

+INDEX `IDX_FN_QZ_J_GRP` (`SCHED_NAME` ASC, `JOB_GROUP` ASC))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_locks

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_qz_locks` (

+  `SCHED_NAME` VARCHAR(120) NOT NULL,

+  `LOCK_NAME` VARCHAR(40) NOT NULL,

+PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_paused_trigger_grps

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_qz_paused_trigger_grps` (

+  `SCHED_NAME` VARCHAR(120) NOT NULL,

+  `TRIGGER_GROUP` VARCHAR(200) NOT NULL,

+PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_scheduler_state

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`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`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_simple_triggers

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`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`),

+CONSTRAINT `fn_qz_simple_triggers_ibfk_1`

+FOREIGN KEY (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`)

+REFERENCES `osam_core`.`fn_qz_triggers` (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_simprop_triggers

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`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 DEFAULT NULL,

+  `STR_PROP_2` VARCHAR(512) NULL DEFAULT NULL,

+  `STR_PROP_3` VARCHAR(512) NULL DEFAULT NULL,

+  `INT_PROP_1` INT(11) NULL DEFAULT NULL,

+  `INT_PROP_2` INT(11) NULL DEFAULT NULL,

+  `LONG_PROP_1` BIGINT(20) NULL DEFAULT NULL,

+  `LONG_PROP_2` BIGINT(20) NULL DEFAULT NULL,

+  `DEC_PROP_1` DECIMAL(13,4) NULL DEFAULT NULL,

+  `DEC_PROP_2` DECIMAL(13,4) NULL DEFAULT NULL,

+  `BOOL_PROP_1` VARCHAR(1) NULL DEFAULT NULL,

+  `BOOL_PROP_2` VARCHAR(1) NULL DEFAULT NULL,

+PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`),

+CONSTRAINT `fn_qz_simprop_triggers_ibfk_1`

+FOREIGN KEY (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`)

+REFERENCES `osam_core`.`fn_qz_triggers` (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_qz_triggers

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`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 DEFAULT NULL,

+  `NEXT_FIRE_TIME` BIGINT(13) NULL DEFAULT NULL,

+  `PREV_FIRE_TIME` BIGINT(13) NULL DEFAULT NULL,

+  `PRIORITY` INT(11) NULL DEFAULT NULL,

+  `TRIGGER_STATE` VARCHAR(16) NOT NULL,

+  `TRIGGER_TYPE` VARCHAR(8) NOT NULL,

+  `START_TIME` BIGINT(13) NOT NULL,

+  `END_TIME` BIGINT(13) NULL DEFAULT NULL,

+  `CALENDAR_NAME` VARCHAR(200) NULL DEFAULT NULL,

+  `MISFIRE_INSTR` SMALLINT(2) NULL DEFAULT NULL,

+  `JOB_DATA` BLOB NULL DEFAULT NULL,

+PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`),

+INDEX `IDX_FN_QZ_T_J` (`SCHED_NAME` ASC, `JOB_NAME` ASC, `JOB_GROUP` ASC),

+INDEX `IDX_FN_QZ_T_JG` (`SCHED_NAME` ASC, `JOB_GROUP` ASC),

+INDEX `IDX_FN_QZ_T_C` (`SCHED_NAME` ASC, `CALENDAR_NAME` ASC),

+INDEX `IDX_FN_QZ_T_G` (`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC),

+INDEX `IDX_FN_QZ_T_STATE` (`SCHED_NAME` ASC, `TRIGGER_STATE` ASC),

+INDEX `IDX_FN_QZ_T_N_STATE` (`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC),

+INDEX `IDX_FN_QZ_T_N_G_STATE` (`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC),

+INDEX `IDX_FN_QZ_T_NEXT_FIRE_TIME` (`SCHED_NAME` ASC, `NEXT_FIRE_TIME` ASC),

+INDEX `IDX_FN_QZ_T_NFT_ST` (`SCHED_NAME` ASC, `TRIGGER_STATE` ASC, `NEXT_FIRE_TIME` ASC),

+INDEX `IDX_FN_QZ_T_NFT_MISFIRE` (`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC),

+INDEX `IDX_FN_QZ_T_NFT_ST_MISFIRE` (`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC, `TRIGGER_STATE` ASC),

+INDEX `IDX_FN_QZ_T_NFT_ST_MISFIRE_GRP` (`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC),

+CONSTRAINT `fn_qz_triggers_ibfk_1`

+FOREIGN KEY (`SCHED_NAME` , `JOB_NAME` , `JOB_GROUP`)

+REFERENCES `osam_core`.`fn_qz_job_details` (`SCHED_NAME` , `JOB_NAME` , `JOB_GROUP`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_restricted_url

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_restricted_url` (

+  `RESTRICTED_URL` VARCHAR(250) NOT NULL,

+  `FUNCTION_CD` VARCHAR(30) NOT NULL,

+PRIMARY KEY (`RESTRICTED_URL`, `FUNCTION_CD`),

+INDEX `FK_RESTRICTED_URL_FUNCTION_CD` (`FUNCTION_CD` ASC),

+CONSTRAINT `FK_RESTRICTED_URL_FUNCTION_CD`

+FOREIGN KEY (`FUNCTION_CD`)

+REFERENCES `osam_core`.`fn_function` (`FUNCTION_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_role

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_role` (

+  `ROLE_ID` INT(11) NOT NULL AUTO_INCREMENT,

+  `ROLE_NAME` VARCHAR(255) NOT NULL,

+  `ACTIVE_YN` VARCHAR(1) NOT NULL DEFAULT 'Y',

+  `PRIORITY` DECIMAL(4,0) NULL DEFAULT NULL,

+PRIMARY KEY (`ROLE_ID`))

+  ENGINE = InnoDB

+  AUTO_INCREMENT = 17

+DEFAULT CHARACTER SET = utf8;

+

+ALTER TABLE `osam_core`.`fn_role` MODIFY `ROLE_NAME` VARCHAR (255);

+

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_role_composite

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_role_composite` (

+  `PARENT_ROLE_ID` INT(11) NOT NULL,

+  `CHILD_ROLE_ID` INT(11) NOT NULL,

+PRIMARY KEY (`PARENT_ROLE_ID`, `CHILD_ROLE_ID`),

+INDEX `FK_FN_ROLE_COMPOSITE_CHILD` (`CHILD_ROLE_ID` ASC),

+CONSTRAINT `FK_FN_ROLE_COMPOSITE_CHILD`

+FOREIGN KEY (`CHILD_ROLE_ID`)

+REFERENCES `osam_core`.`fn_role` (`ROLE_ID`),

+CONSTRAINT `FK_FN_ROLE_COMPOSITE_PARENT`

+FOREIGN KEY (`PARENT_ROLE_ID`)

+REFERENCES `osam_core`.`fn_role` (`ROLE_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_role_function

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_role_function` (

+  `ROLE_ID` INT(11) NOT NULL,

+  `FUNCTION_CD` VARCHAR(30) NOT NULL,

+PRIMARY KEY (`ROLE_ID`, `FUNCTION_CD`),

+INDEX `FN_ROLE_FUNCTION_FUNCTION_CD` (`FUNCTION_CD` ASC),

+INDEX `FN_ROLE_FUNCTION_ROLE_ID` (`ROLE_ID` ASC),

+CONSTRAINT `FK_FN_ROLE__REF_198_FN_ROLE`

+FOREIGN KEY (`ROLE_ID`)

+REFERENCES `osam_core`.`fn_role` (`ROLE_ID`),

+CONSTRAINT `FK_FN_ROLE__REF_201_FN_FUNCT`

+FOREIGN KEY (`FUNCTION_CD`)

+REFERENCES `osam_core`.`fn_function` (`FUNCTION_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_schedule_workflows

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_schedule_workflows` (

+  `id_schedule_workflows` BIGINT(25) NOT NULL AUTO_INCREMENT,

+  `workflow_server_url` VARCHAR(45) NULL DEFAULT NULL,

+  `workflow_key` VARCHAR(45) NOT NULL,

+  `workflow_arguments` VARCHAR(45) NULL DEFAULT NULL,

+  `startDateTimeCron` VARCHAR(45) NULL DEFAULT NULL,

+  `endDateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `start_date_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `recurrence` VARCHAR(45) NULL DEFAULT NULL,

+PRIMARY KEY (`id_schedule_workflows`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_tab

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_tab` (

+  `TAB_CD` VARCHAR(30) NOT NULL,

+  `TAB_NAME` VARCHAR(50) NOT NULL,

+  `TAB_DESCR` VARCHAR(100) NULL DEFAULT NULL,

+  `ACTION` VARCHAR(100) NOT NULL,

+  `FUNCTION_CD` VARCHAR(30) NOT NULL,

+  `ACTIVE_YN` CHAR(1) NOT NULL,

+  `SORT_ORDER` DECIMAL(11,0) NOT NULL,

+  `PARENT_TAB_CD` VARCHAR(30) NULL DEFAULT NULL,

+  `TAB_SET_CD` VARCHAR(30) NULL DEFAULT NULL,

+PRIMARY KEY (`TAB_CD`),

+INDEX `FK_FN_TAB_FUNCTION_CD` (`FUNCTION_CD` ASC),

+INDEX `FK_FN_TAB_SET_CD` (`TAB_SET_CD` ASC),

+CONSTRAINT `FK_FN_TAB_FUNCTION_CD`

+FOREIGN KEY (`FUNCTION_CD`)

+REFERENCES `osam_core`.`fn_function` (`FUNCTION_CD`),

+CONSTRAINT `FK_FN_TAB_SET_CD`

+FOREIGN KEY (`TAB_SET_CD`)

+REFERENCES `osam_core`.`fn_lu_tab_set` (`TAB_SET_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_tab_selected

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_tab_selected` (

+  `SELECTED_TAB_CD` VARCHAR(30) NOT NULL,

+  `TAB_URI` VARCHAR(40) NOT NULL,

+PRIMARY KEY (`SELECTED_TAB_CD`, `TAB_URI`),

+CONSTRAINT `FK_FN_TAB_SELECTED_TAB_CD`

+FOREIGN KEY (`SELECTED_TAB_CD`)

+REFERENCES `osam_core`.`fn_tab` (`TAB_CD`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_user

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_user` (

+  `USER_ID` INT(11) NOT NULL AUTO_INCREMENT,

+  `ORG_ID` INT(11) NULL DEFAULT NULL,

+  `MANAGER_ID` INT(11) NULL DEFAULT NULL,

+  `FIRST_NAME` VARCHAR(50) NULL DEFAULT NULL,

+  `MIDDLE_NAME` VARCHAR(50) NULL DEFAULT NULL,

+  `LAST_NAME` VARCHAR(50) NULL DEFAULT NULL,

+  `PHONE` VARCHAR(25) NULL DEFAULT NULL,

+  `FAX` VARCHAR(25) NULL DEFAULT NULL,

+  `CELLULAR` VARCHAR(25) NULL DEFAULT NULL,

+  `EMAIL` VARCHAR(50) NULL DEFAULT NULL,

+  `ADDRESS_ID` DECIMAL(11,0) NULL DEFAULT NULL,

+  `ALERT_METHOD_CD` VARCHAR(10) NULL DEFAULT NULL,

+  `HRID` VARCHAR(20) NULL DEFAULT NULL,

+  `ORG_USER_ID` VARCHAR(20) NULL DEFAULT NULL,

+  `ORG_CODE` VARCHAR(30) NULL DEFAULT NULL,

+  `LOGIN_ID` VARCHAR(25) NULL DEFAULT NULL,

+  `LOGIN_PWD` VARCHAR(25) NULL DEFAULT NULL,

+  `LAST_LOGIN_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

+  `ACTIVE_YN` VARCHAR(1) NOT NULL DEFAULT 'Y',

+  `CREATED_ID` INT(11) NULL DEFAULT NULL,

+  `CREATED_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `MODIFIED_ID` INT(11) NULL DEFAULT NULL,

+  `MODIFIED_DATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `IS_INTERNAL_YN` CHAR(1) NOT NULL DEFAULT 'N',

+  `ADDRESS_LINE_1` VARCHAR(100) NULL DEFAULT NULL,

+  `ADDRESS_LINE_2` VARCHAR(100) NULL DEFAULT NULL,

+  `CITY` VARCHAR(50) NULL DEFAULT NULL,

+  `STATE_CD` VARCHAR(3) NULL DEFAULT NULL,

+  `ZIP_CODE` VARCHAR(11) NULL DEFAULT NULL,

+  `COUNTRY_CD` VARCHAR(3) NULL DEFAULT NULL,

+  `LOCATION_CLLI` VARCHAR(8) NULL DEFAULT NULL,

+  `ORG_MANAGER_USERID` VARCHAR(20) NULL DEFAULT NULL,

+  `COMPANY` VARCHAR(100) NULL DEFAULT NULL,

+  `DEPARTMENT_NAME` VARCHAR(100) NULL DEFAULT NULL,

+  `JOB_TITLE` VARCHAR(100) NULL DEFAULT NULL,

+  `TIMEZONE` INT(11) NULL DEFAULT NULL,

+  `DEPARTMENT` VARCHAR(25) NULL DEFAULT NULL,

+  `BUSINESS_UNIT` VARCHAR(25) NULL DEFAULT NULL,

+  `BUSINESS_UNIT_NAME` VARCHAR(100) NULL DEFAULT NULL,

+  `COST_CENTER` VARCHAR(25) NULL DEFAULT NULL,

+  `FIN_LOC_CODE` VARCHAR(10) NULL DEFAULT NULL,

+  `SILO_STATUS` VARCHAR(10) NULL DEFAULT NULL,

+PRIMARY KEY (`USER_ID`),

+UNIQUE INDEX `FN_USER_HRID` (`HRID` ASC),

+UNIQUE INDEX `FN_USER_LOGIN_ID` (`LOGIN_ID` ASC),

+INDEX `FN_USER_ADDRESS_ID` (`ADDRESS_ID` ASC),

+INDEX `FN_USER_ALERT_METHOD_CD` (`ALERT_METHOD_CD` ASC),

+INDEX `FN_USER_ORG_ID` (`ORG_ID` ASC),

+INDEX `FK_FN_USER_REF_197_FN_USER` (`MANAGER_ID` ASC),

+INDEX `FK_FN_USER_REF_198_FN_USER` (`CREATED_ID` ASC),

+INDEX `FK_FN_USER_REF_199_FN_USER` (`MODIFIED_ID` ASC),

+INDEX `FK_TIMEZONE` (`TIMEZONE` ASC),

+CONSTRAINT `FK_FN_USER_REF_110_FN_ORG`

+FOREIGN KEY (`ORG_ID`)

+REFERENCES `osam_core`.`fn_org` (`ORG_ID`),

+CONSTRAINT `FK_FN_USER_REF_123_FN_LU_AL`

+FOREIGN KEY (`ALERT_METHOD_CD`)

+REFERENCES `osam_core`.`fn_lu_alert_method` (`ALERT_METHOD_CD`),

+CONSTRAINT `FK_FN_USER_REF_197_FN_USER`

+FOREIGN KEY (`MANAGER_ID`)

+REFERENCES `osam_core`.`fn_user` (`USER_ID`),

+CONSTRAINT `FK_FN_USER_REF_198_FN_USER`

+FOREIGN KEY (`CREATED_ID`)

+REFERENCES `osam_core`.`fn_user` (`USER_ID`),

+CONSTRAINT `FK_FN_USER_REF_199_FN_USER`

+FOREIGN KEY (`MODIFIED_ID`)

+REFERENCES `osam_core`.`fn_user` (`USER_ID`),

+CONSTRAINT `FK_TIMEZONE`

+FOREIGN KEY (`TIMEZONE`)

+REFERENCES `osam_core`.`fn_lu_timezone` (`TIMEZONE_ID`))

+  ENGINE = InnoDB

+  AUTO_INCREMENT = 3

+DEFAULT CHARACTER SET = utf8;

+

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_user_pseudo_role

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_user_pseudo_role` (

+  `PSEUDO_ROLE_ID` INT(11) NOT NULL,

+  `USER_ID` INT(11) NOT NULL,

+PRIMARY KEY (`PSEUDO_ROLE_ID`, `USER_ID`),

+INDEX `FK_PSEUDO_ROLE_USER_ID` (`USER_ID` ASC),

+CONSTRAINT `FK_PSEUDO_ROLE_PSEUDO_ROLE_ID`

+FOREIGN KEY (`PSEUDO_ROLE_ID`)

+REFERENCES `osam_core`.`fn_role` (`ROLE_ID`),

+CONSTRAINT `FK_PSEUDO_ROLE_USER_ID`

+FOREIGN KEY (`USER_ID`)

+REFERENCES `osam_core`.`fn_user` (`USER_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_user_role

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_user_role` (

+  `USER_ID` INT(10) NOT NULL,

+  `ROLE_ID` INT(10) NOT NULL,

+  `PRIORITY` DECIMAL(4,0) NULL DEFAULT NULL,

+  `APP_ID` INT(11) NOT NULL DEFAULT '1',

+PRIMARY KEY (`USER_ID`, `ROLE_ID`, `APP_ID`),

+INDEX `FN_USER_ROLE_ROLE_ID` (`ROLE_ID` ASC),

+INDEX `FN_USER_ROLE_USER_ID` (`USER_ID` ASC),

+INDEX `FK_FN_USER__REF_178_FN_APP_idx` (`APP_ID` ASC),

+CONSTRAINT `FK_FN_USER__REF_172_FN_USER`

+FOREIGN KEY (`USER_ID`)

+REFERENCES `osam_core`.`fn_user` (`USER_ID`),

+CONSTRAINT `FK_FN_USER__REF_175_FN_ROLE`

+FOREIGN KEY (`ROLE_ID`)

+REFERENCES `osam_core`.`fn_role` (`ROLE_ID`),

+CONSTRAINT `FK_FN_USER__REF_178_FN_APP`

+FOREIGN KEY (`APP_ID`)

+REFERENCES `osam_core`.`fn_app` (`APP_ID`))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_workflow

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_workflow` (

+  `id` MEDIUMINT(9) NOT NULL AUTO_INCREMENT,

+  `name` VARCHAR(20) NOT NULL,

+  `description` VARCHAR(500) NULL DEFAULT NULL,

+  `run_link` VARCHAR(300) NULL DEFAULT NULL,

+  `suspend_link` VARCHAR(300) NULL DEFAULT NULL,

+  `modified_link` VARCHAR(300) NULL DEFAULT NULL,

+  `active_yn` VARCHAR(300) NULL DEFAULT NULL,

+  `created` VARCHAR(300) NULL DEFAULT NULL,

+  `created_by` INT(11) NULL DEFAULT NULL,

+  `modified` VARCHAR(300) NULL DEFAULT NULL,

+  `modified_by` INT(11) NULL DEFAULT NULL,

+  `workflow_key` VARCHAR(50) NULL DEFAULT NULL,

+PRIMARY KEY (`id`),

+UNIQUE INDEX `name` (`name` ASC))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.fn_xmltype

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`fn_xmltype` (

+  `ID` DECIMAL(10,0) NOT NULL,

+  `XML_DOCUMENT` TEXT NULL DEFAULT NULL,

+UNIQUE INDEX `FN_XMLTYPE_ID` (`ID` ASC))

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+

+-- ----------------------------------------------------------------------------

+-- Table osam_core.schema_info

+-- ----------------------------------------------------------------------------

+CREATE TABLE IF NOT EXISTS `osam_core`.`schema_info` (

+  `SCHEMA_ID` VARCHAR(25) NOT NULL,

+  `SCHEMA_DESC` VARCHAR(75) NOT NULL,

+  `DATASOURCE_TYPE` VARCHAR(100) NULL DEFAULT NULL,

+  `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(11) NOT NULL,

+  `MAX_POOL_SIZE` INT(11) NOT NULL,

+  `IDLE_CONNECTION_TEST_PERIOD` INT(11) NOT NULL)

+  ENGINE = InnoDB

+DEFAULT CHARACTER SET = utf8;

+-- ----------------------------------------------------------------------------

+-- Table osam_core.osam_core_job

+-- ----------------------------------------------------------------------------

+

+CREATE TABLE IF NOT EXISTS `osam_core`.`osam_core_job` (

+  `JOB_ID`        BINARY(16)   NOT NULL PRIMARY KEY,

+  `CREATED_DATE`  TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `MODIFIED_DATE` TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,

+  `JOB_STATUS`    VARCHAR(50)  NULL COLLATE 'utf8_bin',

+  `JOB_TYPE`      VARCHAR(50)  NULL COLLATE 'utf8_bin',

+  `JOB_DATA`      MEDIUMTEXT   NULL COLLATE 'utf8_bin',

+  `PARENT_JOB_ID` BINARY(16)   NULL,

+  `TAKEN_BY`      VARCHAR(100) NULL COLLATE 'utf8_bin',

+CONSTRAINT `FK_OWNING_VID_JOB_PARENT` FOREIGN KEY (`PARENT_JOB_ID`) REFERENCES `osam_core`.`vid_job` (`JOB_ID`)

+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

+

+-- ----------------------------------------------------------------------------

+-- View osam_core.v_url_access

+-- ----------------------------------------------------------------------------

+CREATE OR REPLACE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `v_url_access` AS select distinct `m`.`ACTION` AS `URL`,`m`.`FUNCTION_CD` AS `FUNCTION_CD` from `fn_menu` `m` where (`m`.`ACTION` is not null) union select distinct `t`.`ACTION` AS `URL`,`t`.`FUNCTION_CD` AS `FUNCTION_CD` from `fn_tab` `t` where (`t`.`ACTION` is not null) union select `r`.`RESTRICTED_URL` AS `URL`,`r`.`FUNCTION_CD` AS `FUNCTION_CD` from `fn_restricted_url` `r`;

+SET FOREIGN_KEY_CHECKS = 1;
\ No newline at end of file
diff --git a/onap-enabler-infra/src/main/resources/portal.properties b/onap-enabler-infra/src/main/resources/portal.properties
new file mode 100644
index 0000000..104e85d
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/portal.properties
@@ -0,0 +1,85 @@
+###

+# ============LICENSE_START==========================================

+# ONAP Portal SDK

+# ===================================================================

+# 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============================================

+#

+# ECOMP is a trademark and service mark of AT&T Intellectual Property.

+###

+# Properties read by ECOMP Framework library, ecompFW.jar

+

+##########################################################################

+# The following properties should NOT be changed by partner applications.

+##########################################################################

+

+portal.api.prefix = /api

+max.idle.time = 5

+user.attribute.name = user_attribute

+

+#Use REST API instead of UEB to fetch the functional menu data

+use_rest_for_functional_menu=true

+

+##########################################################################

+# The following properties MUST be changed by partner applications.

+##########################################################################

+

+# Name of java class that implements the OnBoardingApiService interface.

+portal.api.impl.class = org.onap.portalapp.service.OnBoardingApiServiceImpl

+

+# Log On for single sign on

+ecomp_redirect_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/login.htm

+

+# URL of the ECOMP Portal REST API

+ecomp_rest_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi

+

+# Applications do not need to run a UEB listener after 1607.

+ueb_listeners_enable = false

+

+# UEB Configuration

+# In release 1607, all 6 entries below were required.

+# In release 1610, if key ueb_listeners_enable is set to false,

+# then only the ueb_app_key is required.

+# UEB servers

+#ueb_url_list = todo_ueb_url_list

+# ECOMP Portal listens on this UEB topic

+#ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX-DEV-LOCAL

+

+# Replace these 3 default values with the ones for your specific App,

+# as shown on the on-boarding page on the ECOMP Portal web application.

+ueb_app_key = oVGikIIFjzjUNtph

+ueb_app_secret = 8xJNPcgKJJgHhfbth6C1yN3e

+ueb_app_mailbox_name = ECOMP-PORTAL-OUTBOX-TEST-77621

+# Consumer group name for UEB topic.

+# Use the special tag to generate a unique one for each sdk-app server.

+#ueb_app_consumer_group_name = {UUID}

+

+#decryption_key				  = AGLDdG4D04BKm2IxIWEr8o==

diff --git a/onap-enabler-infra/src/main/resources/portal_template.properties b/onap-enabler-infra/src/main/resources/portal_template.properties
new file mode 100644
index 0000000..d01413a
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/portal_template.properties
@@ -0,0 +1,32 @@
+# Properties read by ECOMP Framework library, ecompFW.jar

+

+portal.api.impl.class = org.onap.portalapp.service.OnBoardingApiServiceImpl

+portal.api.prefix = /api

+max.idle.time = 5

+user.attribute.name = user_attribute

+decryption_key = ${VID_DECRYPTION_KEY}

+

+# Log On for single sign on

+ecomp_redirect_url	= ${VID_ECOMP_REDIRECT_URL}

+

+

+# URL of the ECOMP Portal REST API

+ecomp_rest_url = ${VID_ECOMP_REST_URL}

+

+# UEB servers

+ueb_url_list = ${VID_UEB_URL_LIST}

+

+# ECOMP Portal listens here 

+ecomp_portal_inbox_name = ${VID_ECOMP_PORTAL_INBOX_NAME}

+

+# Replace these 3 default values with the ones for your specific App,

+# as shown on the on-boarding page on the ECOMP Portal website.

+ueb_app_key = ${VID_UEB_APP_KEY}

+ueb_app_secret = ${VID_UEB_APP_SECRET}

+ueb_app_mailbox_name = ${VID_UEB_APP_MAILBOX_NAME}

+# Consumer group name for UEB topic.

+# Use the special tag to generate a unique one for each sdk-app server.

+ueb_app_consumer_group_name = ${VID_UEB_CONSUMER_GROUP}

+

+ueb_listeners_enable = ${VID_UEB_LISTENERS_ENABLE}

+ueb_rest_for_function_menu = true

diff --git a/onap-enabler-infra/src/main/resources/sampleTosca.csar b/onap-enabler-infra/src/main/resources/sampleTosca.csar
new file mode 100644
index 0000000..7532f58
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/sampleTosca.csar
Binary files differ
diff --git a/onap-enabler-infra/src/main/resources/server.xml b/onap-enabler-infra/src/main/resources/server.xml
new file mode 100644
index 0000000..d9dc27a
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/server.xml
@@ -0,0 +1,186 @@
+<?xml version='1.0' encoding='utf-8'?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  The ASF licenses this file to You under the Apache License, Version 2.0

+  (the "License"); you may not use this file 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.

+-->

+<!-- Note:  A "Server" is not itself a "Container", so you may not

+     define subcomponents such as "Valves" at this level.

+     Documentation at /docs/config/server.html

+ -->

+<Server port="8005" shutdown="SHUTDOWN">

+  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />

+  <!-- Security listener. Documentation at /docs/config/listeners.html

+  <Listener className="org.apache.catalina.security.SecurityListener" />

+  -->

+  <!--APR library loader. Documentation at /docs/apr.html -->

+  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

+  <!-- Prevent memory leaks due to use of particular java/javax APIs-->

+  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

+  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

+  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

+

+  <!-- Global JNDI resources

+       Documentation at /docs/jndi-resources-howto.html

+  -->

+  <GlobalNamingResources>

+    <!-- Editable user database that can also be used by

+         UserDatabaseRealm to authenticate users

+    -->

+    <Resource name="UserDatabase" auth="Container"

+      type="org.apache.catalina.UserDatabase"

+      description="User database that can be updated and saved"

+      factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

+      pathname="conf/tomcat-users.xml" />

+  </GlobalNamingResources>

+

+  <!-- A "Service" is a collection of one or more "Connectors" that share

+       a single "Container" Note:  A "Service" is not itself a "Container",

+       so you may not define subcomponents such as "Valves" at this level.

+       Documentation at /docs/config/service.html

+   -->

+  <Service name="Catalina">

+

+    <!--The connectors can use a shared executor, you can define one or more named thread pools-->

+    <!--

+    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

+        maxThreads="150" minSpareThreads="4"/>

+    -->

+

+

+    <!-- A "Connector" represents an endpoint by which requests are received

+         and responses are returned. Documentation at :

+         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)

+         Java AJP  Connector: /docs/config/ajp.html

+         APR (HTTP/AJP) Connector: /docs/apr.html

+         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080

+    -->

+    <Connector port="8080" protocol="HTTP/1.1"

+      connectionTimeout="20000"

+      redirectPort="8443" />

+    <!-- A "Connector" using the shared thread pool-->

+    <!--

+    <Connector executor="tomcatThreadPool"

+               port="8080" protocol="HTTP/1.1"

+               connectionTimeout="20000"

+               redirectPort="8443" />

+    -->

+    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443

+         This connector uses the NIO implementation that requires the JSSE

+         style configuration. When using the APR/native implementation, the

+         OpenSSL style configuration is required as described in the APR/native

+         documentation -->

+

+    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"

+               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

+               clientAuth="false" sslProtocol="TLS" keyAlias="${osam.keyalias}"

+               keystoreFile="${osam.keystore.filename}" keystorePass="${osam.keystore.password}"

+               useServerCipherSuitesOrder="true"

+               ciphers="TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,

+                TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,

+                TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,

+                TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,

+                TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,

+                TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,

+                TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,

+                TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,

+                TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,

+                TLS_DHE_DSS_WITH_AES_256_CBC_SHA,

+                TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,

+                TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,

+                TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,

+                TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,

+                TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,

+                TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,

+                TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,

+                TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,

+                TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,

+                TLS_DHE_DSS_WITH_AES_128_CBC_SHA,

+                TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,

+                TLS_ECDH_ECDSA_WITH_RC4_128_SHA,

+                TLS_ECDH_RSA_WITH_RC4_128_SHA,

+                TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,

+                TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,

+                TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,

+                TLS_RSA_WITH_AES_256_GCM_SHA384,

+                TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,

+                TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,

+                TLS_DHE_DSS_WITH_AES_256_GCM_SHA384,

+                TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,

+                TLS_RSA_WITH_AES_128_GCM_SHA256,

+                TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,

+                TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,

+                TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,

+                TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,

+                TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,

+                TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,

+                TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,

+                TLS_EMPTY_RENEGOTIATION_INFO_SCSVF"

+    />

+

+

+    <!-- Define an AJP 1.3 Connector on port 8009 -->

+    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

+

+

+    <!-- An Engine represents the entry point (within Catalina) that processes

+         every request.  The Engine implementation for Tomcat stand alone

+         analyzes the HTTP headers included with the request, and passes them

+         on to the appropriate Host (virtual host).

+         Documentation at /docs/config/engine.html -->

+

+    <!-- You should set jvmRoute to support load-balancing via AJP ie :

+    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

+    -->

+    <Engine name="Catalina" defaultHost="localhost">

+

+      <!--For clustering, please take a look at documentation at:

+          /docs/cluster-howto.html  (simple how to)

+          /docs/config/cluster.html (reference documentation) -->

+      <!--

+      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

+      -->

+

+      <!-- Use the LockOutRealm to prevent attempts to guess user passwords

+           via a brute-force attack -->

+      <Realm className="org.apache.catalina.realm.LockOutRealm">

+        <!-- This Realm uses the UserDatabase configured in the global JNDI

+             resources under the key "UserDatabase".  Any edits

+             that are performed against this UserDatabase are immediately

+             available for use by the Realm.  -->

+        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

+          resourceName="UserDatabase"/>

+      </Realm>

+

+      <Host name="localhost"  appBase="webapps"

+        unpackWARs="true" autoDeploy="true">

+

+        <!-- SingleSignOn valve, share authentication between web applications

+             Documentation at: /docs/config/valve.html -->

+        <!--

+        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

+        -->

+

+        <!-- Access log processes all example.

+             Documentation at: /docs/config/valve.html

+             Note: The pattern used is equivalent to using pattern="common" -->

+        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

+          prefix="localhost_access_log" suffix=".txt"

+          pattern="%h %l %u %t &quot;%r&quot; %s %b" />

+

+      </Host>

+    </Engine>

+  </Service>

+</Server>

+

diff --git a/onap-enabler-infra/src/main/resources/state-rules.drl b/onap-enabler-infra/src/main/resources/state-rules.drl
new file mode 100644
index 0000000..bf92f11
--- /dev/null
+++ b/onap-enabler-infra/src/main/resources/state-rules.drl
@@ -0,0 +1,58 @@
+/*-

+        * ============LICENSE_START=======================================================

+        * OSAM Core

+        * ================================================================================

+        * Copyright (C) 2018 AT&T

+        * ================================================================================

+        * Licensed under the Apache License, Version 2.0 (the "License");

+        * you may not use this file 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.

+        * ============LICENSE_END=========================================================

+        */

+

+package org.onap.portalsdk.core.drools;

+global String age

+

+rule "Default"

+when

+$droolsRuleService : DroolsRuleServiceImpl( state != null )

+then

+System.out.println($droolsRuleService.accessLabel() +" "+ $droolsRuleService.getState() +" state legal age is " + getDefaultIfNull(age));

+$droolsRuleService.setResultsString($droolsRuleService.getState()+" state legal age is " + getDefaultIfNull(age));

+end

+

+rule "Drools NJ"

+when

+$droolsRuleService : DroolsRuleServiceImpl( state == "NJ" )

+then

+System.out.println($droolsRuleService.accessLabel() +" "+ "NJ state legal age is " + getDefaultIfNull(age));

+$droolsRuleService.setResultsString("NJ state legal age is " + getDefaultIfNull(age));

+end

+

+rule "Drools KY"

+when

+$droolsRuleService : DroolsRuleServiceImpl( state == "KY" )

+then

+System.out.println($droolsRuleService.accessLabel() +" "+ "KY state legal age is " + getDefaultIfNull("20"));

+$droolsRuleService.setResultsString("KY state legal age is " + getDefaultIfNull("20"));

+end

+

+rule "Drools NY"

+when

+$droolsRuleService : DroolsRuleServiceImpl( state == "NY" )

+then

+System.out.println($droolsRuleService.accessLabel() +" "+ "NY state legal age is " + getDefaultIfNull("21"));

+$droolsRuleService.setResultsString("NY state legal age is " + getDefaultIfNull("21"));

+end

+

+function String getDefaultIfNull(String age) {

+return age == null ? "18" : age;

+}

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/cert/onap.cert b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/onap.cert
new file mode 100644
index 0000000..98f620c
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/onap.cert
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----

+MIIFPjCCAyagAwIBAgIJAJ6u7cCnzrWdMA0GCSqGSIb3DQEBCwUAMCwxDjAMBgNV

+BAsMBU9TQUFGMQ0wCwYDVQQKDARPTkFQMQswCQYDVQQGEwJVUzAeFw0xODA0MDUx

+NDE1MjhaFw0zODAzMzExNDE1MjhaMCwxDjAMBgNVBAsMBU9TQUFGMQ0wCwYDVQQK

+DARPTkFQMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC

+ggIBAMA5pkgRs7NhGG4ew5JouhyYakgYUyFaG121+/h8qbSdt0hVQv56+EA41Yq7

+XGie7RYDQK9NmAFF3gruE+6X7wvJiChp+Cyd7sFMnb65uWhxEdxWTM2BJFrgfzUn

+H8ZCxgaCo3XH4PzlKRy2LQQJEJECwl/RZmRCXijMt5e9h8XoZY/fKkKcZZUsWNCM

+pTo266wjvA9MXLmdgReRj0+vrCjrNqy+htwJDztoiHWiYPqT6o8EvGcgjNqjlZx7

+NUNf8MfLDByqKF6+wRbHv1GKjn3/Vijd45Fv8riyRYROiFanvbV6jIfBkv8PZbXg

+2VDWsYsgp8NAvMxK+iV8cO+Ck3lBI2GOPZbCEqpPVTYbLUz6sczAlCXwQoPzDIZY

+wYa3eR/gYLY1gP2iEVHORag3bLPap9ZX5E8DZkzTNTjovvLk8KaCmfcaUMJsBtDd

+ApcUitz10cnRyZc1sX3gE1f3DpzQM6t9C5sOVyRhDcSrKqqwb9m0Ss04XAS9FsqM

+P3UWYQyqDXSxlUAYaX892u8mV1hxnt2gjb22RloXMM6TovM3sSrJS0wH+l1nznd6

+aFXftS/G4ZVIVZ/LfT1is4StoyPWZCwwwly1z8qJQ/zhip5NgZTxQw4mi7ww35DY

+PdAQOCoajfSvFjqslQ/cPRi/MRCu079heVb5fQnnzVtnpFQRAgMBAAGjYzBhMB0G

+A1UdDgQWBBRTVTPyS+vQUbHBeJrBKDF77+rtSTAfBgNVHSMEGDAWgBRTVTPyS+vQ

+UbHBeJrBKDF77+rtSTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAN

+BgkqhkiG9w0BAQsFAAOCAgEAPx/IaK94n02wPxpnYTy+LVLIxwdq/kawNd6IbiMz

+L87zmNMDmHcGbfoRCj8OkhuggX9Lx1/CkhpXimuYsZOFQi5blr/u+v4mIbsgbmi9

+7j+cUHDP0zLycvSvxKHty51LwmaX9a4wkJl5zBU4O1sd/H9tWcEmwJ39ltKoBKBx

+c94Zc3iMm5ytRWGj+0rKzLDAXEWpoZ5bE5PLJauA6UDCxDLfs3FwhbS7uDggxYvf

+jySF5FCNET94oJ+m8s7VeHvoa8iPGKvXrIqdd7XDHnqJJlVKr7m9S0fMbyEB8ci2

+RtOXDt93ifY1uhoEtEykn4dqBSp8ezvNMnwoXdYPDvTd9uCAFeWFLVreBAWxd25h

+PsBTkZA5hpa/rA+mKv6Af4VBViYr8cz4dZCsFChuioVebe9ighrfjB//qKepFjPF

+CyjzKN1u0JKm/2x/ORqxkTONG8p3uDwoIOyimUcTtTMv42bfYD88RKakqSFXE9G+

+Z0LlaKABqfjK49o/tsAp+c5LoNlYllKhnetO3QAdraHwdmC36BhoghzR1jpX751A

+cZn2VH3Q4XKyp01cJNCJIrua+A+bx6zh3RyW6zIIkbRCbET+UD+4mr8WIcSE3mtR

+ZVlnhUDO4z9//WKMVzwS9Rh8/kuszrGFI1KQozXCHLrce3YP6RYZfOed79LXaRwX

+dYY=

+-----END CERTIFICATE-----

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/cert/org.onap.vid.jks b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/org.onap.vid.jks
new file mode 100644
index 0000000..aab34ae
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/org.onap.vid.jks
Binary files differ
diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/cert/org.onap.vid.trust.jks b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/org.onap.vid.trust.jks
new file mode 100644
index 0000000..4caf7be
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/org.onap.vid.trust.jks
Binary files differ
diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/cert/tomcat_keystore b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/tomcat_keystore
new file mode 100644
index 0000000..67ba4e9
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/tomcat_keystore
Binary files differ
diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/cert/tomcat_out b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/tomcat_out
new file mode 100644
index 0000000..07fd5ed
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/tomcat_out
@@ -0,0 +1,162 @@
+Keystore type: JKS

+Keystore provider: SUN

+

+Your keystore contains 3 entries

+

+Alias name: root

+Creation date: Nov 30, 2016

+Entry type: trustedCertEntry

+

+Owner: EMAILADDRESS=simpledemo@openecomp.org, CN=OpenECOMP simpledemo Root Certification Authority, OU=simpledemo, O=OpenECOMP, L=Bedminster, ST=NJ, C=US

+Issuer: EMAILADDRESS=simpledemo@openecomp.org, CN=OpenECOMP simpledemo Root Certification Authority, OU=simpledemo, O=OpenECOMP, L=Bedminster, ST=NJ, C=US

+Serial number: d4a2fdbb1710e239

+Valid from: Mon Nov 28 21:14:25 UTC 2016 until: Thu Nov 26 21:14:25 UTC 2026

+Certificate fingerprints:

+	 MD5:  FC:64:AF:8A:39:0B:73:48:29:B7:E7:FF:0B:0D:F9:2C

+	 SHA1: E5:E8:31:B2:C8:EB:40:C9:FF:08:69:D2:ED:DF:39:31:64:8E:0F:3C

+	 SHA256: C3:35:15:5F:EC:A0:42:2F:C2:A0:42:80:A4:5C:CB:00:15:60:12:AF:13:EE:76:5F:11:3C:A1:98:4A:6E:A8:77

+Signature algorithm name: SHA256withRSA

+Subject Public Key Algorithm: 4096-bit RSA key

+Version: 3

+

+Extensions: 

+

+#1: ObjectId: 2.5.29.19 Criticality=true

+BasicConstraints:[

+  CA:true

+  PathLen:2147483647

+]

+

+#2: ObjectId: 2.5.29.15 Criticality=true

+KeyUsage [

+  Key_CertSign

+  Crl_Sign

+]

+

+#3: ObjectId: 2.5.29.14 Criticality=false

+SubjectKeyIdentifier [

+KeyIdentifier [

+0000: 9A 64 05 40 3D E8 59 95   0E 54 4F 35 41 CF 56 49  .d.@=.Y..TO5A.VI

+0010: F7 32 AB 0C                                        .2..

+]

+]

+

+

+

+*******************************************

+*******************************************

+

+

+Alias name: server

+Creation date: Nov 30, 2016

+Entry type: trustedCertEntry

+

+Owner: EMAILADDRESS=simpledemo@openecomp.org, CN=OpenECOMP simpledemo Server CA X1, OU=simpledemo, O=OpenECOMP, L=Bedminster, ST=NJ, C=US

+Issuer: EMAILADDRESS=simpledemo@openecomp.org, CN=OpenECOMP simpledemo Root Certification Authority, OU=simpledemo, O=OpenECOMP, L=Bedminster, ST=NJ, C=US

+Serial number: 9ab1f1d2a7099668

+Valid from: Mon Nov 28 21:14:26 UTC 2016 until: Sat Nov 27 21:14:26 UTC 2021

+Certificate fingerprints:

+	 MD5:  83:41:E6:AC:DA:28:73:47:9E:0B:58:90:EF:48:99:38

+	 SHA1: 2D:63:D2:6C:B7:11:04:6C:A8:7B:97:DF:A9:D2:19:77:41:D2:45:BF

+	 SHA256: 95:32:12:E4:FC:09:DA:B7:DE:5B:FA:1D:3A:F8:F7:D8:D1:96:01:D0:A1:9B:26:F9:1D:82:8B:27:CA:47:E7:9C

+Signature algorithm name: SHA256withRSA

+Subject Public Key Algorithm: 2048-bit RSA key

+Version: 3

+

+Extensions: 

+

+#1: ObjectId: 2.5.29.19 Criticality=true

+BasicConstraints:[

+  CA:true

+  PathLen:2147483647

+]

+

+#2: ObjectId: 2.5.29.32 Criticality=false

+CertificatePolicies [

+  [CertificatePolicyId: [2.5.29.32.0]

+[PolicyQualifierInfo: [

+  qualifierID: 1.3.6.1.5.5.7.2.2

+  qualifier: 0000: 30 4F 1A 4D 49 66 20 79   6F 75 20 74 72 75 73 74  0O.MIf you trust

+0010: 20 74 68 69 73 20 63 65   72 74 20 74 68 65 6E 20   this cert then 

+0020: 77 65 20 68 61 76 65 20   61 20 62 72 69 64 67 65  we have a bridge

+0030: 20 74 68 61 74 20 79 6F   75 20 6D 69 67 68 74 20   that you might 

+0040: 62 65 20 69 6E 74 65 72   65 73 74 65 64 20 69 6E  be interested in

+0050: 2E                                                 .

+

+]]  ]

+]

+

+#3: ObjectId: 2.5.29.15 Criticality=true

+KeyUsage [

+  DigitalSignature

+  Key_CertSign

+  Crl_Sign

+]

+

+#4: ObjectId: 2.5.29.14 Criticality=false

+SubjectKeyIdentifier [

+KeyIdentifier [

+0000: 4E A7 6C 62 01 8D 1A E6   DD 24 7A BD B6 C6 89 84  N.lb.....$z.....

+0010: CF 47 13 9C                                        .G..

+]

+]

+

+

+

+*******************************************

+*******************************************

+

+

+Alias name: onapaafroot

+Creation date: Apr 23, 2018

+Entry type: trustedCertEntry

+

+Owner: C=US, O=ONAP, OU=OSAAF

+Issuer: C=US, O=ONAP, OU=OSAAF

+Serial number: 9eaeedc0a7ceb59d

+Valid from: Thu Apr 05 14:15:28 UTC 2018 until: Wed Mar 31 14:15:28 UTC 2038

+Certificate fingerprints:

+	 MD5:  77:EB:5E:94:2E:B7:A3:45:97:6C:87:FE:A7:F7:64:0F

+	 SHA1: 90:25:D1:D3:8B:3C:BE:2C:73:E9:6C:1A:48:5B:06:A8:39:0D:54:3B

+	 SHA256: 1F:C2:BB:F6:7E:11:6F:F0:4C:C3:D9:6C:73:E5:99:B7:CA:7D:4D:EF:AA:6C:69:46:0D:2C:7B:A9:E4:23:5F:EA

+Signature algorithm name: SHA256withRSA

+Subject Public Key Algorithm: 4096-bit RSA key

+Version: 3

+

+Extensions: 

+

+#1: ObjectId: 2.5.29.35 Criticality=false

+AuthorityKeyIdentifier [

+KeyIdentifier [

+0000: 53 55 33 F2 4B EB D0 51   B1 C1 78 9A C1 28 31 7B  SU3.K..Q..x..(1.

+0010: EF EA ED 49                                        ...I

+]

+]

+

+#2: ObjectId: 2.5.29.19 Criticality=true

+BasicConstraints:[

+  CA:true

+  PathLen:2147483647

+]

+

+#3: ObjectId: 2.5.29.15 Criticality=true

+KeyUsage [

+  DigitalSignature

+  Key_CertSign

+  Crl_Sign

+]

+

+#4: ObjectId: 2.5.29.14 Criticality=false

+SubjectKeyIdentifier [

+KeyIdentifier [

+0000: 53 55 33 F2 4B EB D0 51   B1 C1 78 9A C1 28 31 7B  SU3.K..Q..x..(1.

+0010: EF EA ED 49                                        ...I

+]

+]

+

+

+

+*******************************************

+*******************************************

+

+

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/cert/tomcat_out2 b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/tomcat_out2
new file mode 100644
index 0000000..fabf109
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/cert/tomcat_out2
@@ -0,0 +1,109 @@
+Keystore type: JKS

+Keystore provider: SUN

+

+Your keystore contains 2 entries

+

+Alias name: root

+Creation date: Nov 30, 2016

+Entry type: trustedCertEntry

+

+Owner: EMAILADDRESS=simpledemo@openecomp.org, CN=OpenECOMP simpledemo Root Certification Authority, OU=simpledemo, O=OpenECOMP, L=Bedminster, ST=NJ, C=US

+Issuer: EMAILADDRESS=simpledemo@openecomp.org, CN=OpenECOMP simpledemo Root Certification Authority, OU=simpledemo, O=OpenECOMP, L=Bedminster, ST=NJ, C=US

+Serial number: d4a2fdbb1710e239

+Valid from: Mon Nov 28 21:14:25 UTC 2016 until: Thu Nov 26 21:14:25 UTC 2026

+Certificate fingerprints:

+	 MD5:  FC:64:AF:8A:39:0B:73:48:29:B7:E7:FF:0B:0D:F9:2C

+	 SHA1: E5:E8:31:B2:C8:EB:40:C9:FF:08:69:D2:ED:DF:39:31:64:8E:0F:3C

+	 SHA256: C3:35:15:5F:EC:A0:42:2F:C2:A0:42:80:A4:5C:CB:00:15:60:12:AF:13:EE:76:5F:11:3C:A1:98:4A:6E:A8:77

+Signature algorithm name: SHA256withRSA

+Subject Public Key Algorithm: 4096-bit RSA key

+Version: 3

+

+Extensions: 

+

+#1: ObjectId: 2.5.29.19 Criticality=true

+BasicConstraints:[

+  CA:true

+  PathLen:2147483647

+]

+

+#2: ObjectId: 2.5.29.15 Criticality=true

+KeyUsage [

+  Key_CertSign

+  Crl_Sign

+]

+

+#3: ObjectId: 2.5.29.14 Criticality=false

+SubjectKeyIdentifier [

+KeyIdentifier [

+0000: 9A 64 05 40 3D E8 59 95   0E 54 4F 35 41 CF 56 49  .d.@=.Y..TO5A.VI

+0010: F7 32 AB 0C                                        .2..

+]

+]

+

+

+

+*******************************************

+*******************************************

+

+

+Alias name: server

+Creation date: Nov 30, 2016

+Entry type: trustedCertEntry

+

+Owner: EMAILADDRESS=simpledemo@openecomp.org, CN=OpenECOMP simpledemo Server CA X1, OU=simpledemo, O=OpenECOMP, L=Bedminster, ST=NJ, C=US

+Issuer: EMAILADDRESS=simpledemo@openecomp.org, CN=OpenECOMP simpledemo Root Certification Authority, OU=simpledemo, O=OpenECOMP, L=Bedminster, ST=NJ, C=US

+Serial number: 9ab1f1d2a7099668

+Valid from: Mon Nov 28 21:14:26 UTC 2016 until: Sat Nov 27 21:14:26 UTC 2021

+Certificate fingerprints:

+	 MD5:  83:41:E6:AC:DA:28:73:47:9E:0B:58:90:EF:48:99:38

+	 SHA1: 2D:63:D2:6C:B7:11:04:6C:A8:7B:97:DF:A9:D2:19:77:41:D2:45:BF

+	 SHA256: 95:32:12:E4:FC:09:DA:B7:DE:5B:FA:1D:3A:F8:F7:D8:D1:96:01:D0:A1:9B:26:F9:1D:82:8B:27:CA:47:E7:9C

+Signature algorithm name: SHA256withRSA

+Subject Public Key Algorithm: 2048-bit RSA key

+Version: 3

+

+Extensions: 

+

+#1: ObjectId: 2.5.29.19 Criticality=true

+BasicConstraints:[

+  CA:true

+  PathLen:2147483647

+]

+

+#2: ObjectId: 2.5.29.32 Criticality=false

+CertificatePolicies [

+  [CertificatePolicyId: [2.5.29.32.0]

+[PolicyQualifierInfo: [

+  qualifierID: 1.3.6.1.5.5.7.2.2

+  qualifier: 0000: 30 4F 1A 4D 49 66 20 79   6F 75 20 74 72 75 73 74  0O.MIf you trust

+0010: 20 74 68 69 73 20 63 65   72 74 20 74 68 65 6E 20   this cert then 

+0020: 77 65 20 68 61 76 65 20   61 20 62 72 69 64 67 65  we have a bridge

+0030: 20 74 68 61 74 20 79 6F   75 20 6D 69 67 68 74 20   that you might 

+0040: 62 65 20 69 6E 74 65 72   65 73 74 65 64 20 69 6E  be interested in

+0050: 2E                                                 .

+

+]]  ]

+]

+

+#3: ObjectId: 2.5.29.15 Criticality=true

+KeyUsage [

+  DigitalSignature

+  Key_CertSign

+  Crl_Sign

+]

+

+#4: ObjectId: 2.5.29.14 Criticality=false

+SubjectKeyIdentifier [

+KeyIdentifier [

+0000: 4E A7 6C 62 01 8D 1A E6   DD 24 7A BD B6 C6 89 84  N.lb.....$z.....

+0010: CF 47 13 9C                                        .G..

+]

+]

+

+

+

+*******************************************

+*******************************************

+

+

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/asdc.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/asdc.properties
new file mode 100644
index 0000000..14a3b09
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/asdc.properties
@@ -0,0 +1,6 @@
+asdc.client.type=REST

+

+asdc.client.rest.protocol=http

+asdc.client.rest.host=

+asdc.client.rest.port=8080

+asdc.client.rest.auth=

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/asdc_template.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/asdc_template.properties
new file mode 100644
index 0000000..4015da4
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/asdc_template.properties
@@ -0,0 +1,6 @@
+asdc.client.type=${ASDC_CLIENT_TYPE}

+

+asdc.client.rest.protocol=${ASDC_CLIENT_REST_PROTOCOL}

+asdc.client.rest.host=${ASDC_CLIENT_REST_HOST}

+asdc.client.rest.port=${ASDC_CLIENT_REST_PORT}

+asdc.client.rest.auth=${ASDC_CLIENT_REST_AUTH}

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/quartz.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/quartz.properties
new file mode 100644
index 0000000..a493b63
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/quartz.properties
@@ -0,0 +1,30 @@
+#################################################################################

+# Quartz configurations for Quantum Work Flow									#

+#################################################################################

+

+org.quartz.scheduler.instanceId = AUTO

+

+#################################################################################

+# Main configurations

+org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool

+org.quartz.threadPool.threadCount = 30

+

+============================================================================

+# Configure JobStore  

+#============================================================================

+

+org.quartz.jobStore.misfireThreshold = 60000

+

+org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX

+org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate

+org.quartz.jobStore.useProperties = false

+#org.quartz.jobStore.dataSource = myDS

+org.quartz.jobStore.tablePrefix = FN_QZ_

+

+org.quartz.jobStore.isClustered = true

+org.quartz.jobStore.clusterCheckinInterval = 20000

+

+#============================================================================

+# Configure Datasources  

+#============================================================================

+

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/quartz_template.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/quartz_template.properties
new file mode 100644
index 0000000..0332a1c
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/quartz_template.properties
@@ -0,0 +1,36 @@
+#################################################################################

+# Quartz configurations for Quantum Work Flow									#

+#################################################################################

+

+org.quartz.scheduler.instanceId = AUTO

+

+#################################################################################

+# Main configurations

+org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool

+org.quartz.threadPool.threadCount = 30

+

+============================================================================

+# Configure JobStore  

+#============================================================================

+

+org.quartz.jobStore.misfireThreshold = 60000

+

+org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX

+org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate

+org.quartz.jobStore.useProperties = false

+#org.quartz.jobStore.dataSource = myDS

+org.quartz.jobStore.tablePrefix = FN_QZ_

+

+org.quartz.jobStore.isClustered = true

+org.quartz.jobStore.clusterCheckinInterval = 20000

+

+#============================================================================

+# Configure Datasources  

+#============================================================================

+

+org.quartz.dataSource.myDS.driver = org.mariadb.jdbc.Driver

+org.quartz.dataSource.myDS.URL = jdbc:mariadb://${VID_MYSQL_HOST}:${VID_MYSQL_PORT}/${VID_MYSQL_DBNAME}

+org.quartz.dataSource.myDS.user = ${VID_MYSQL_USER}

+org.quartz.dataSource.myDS.password = ${VID_MYSQL_PASS}

+org.quartz.dataSource.myDS.maxConnections = ${VID_MYSQL_MAXCONNECTIONS}

+org.quartz.dataSource.myDS.validationQuery=select 0 from dual

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor.properties
new file mode 100644
index 0000000..34330a0
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor.properties
@@ -0,0 +1,187 @@
+###

+# ================================================================================

+# eCOMP Portal SDK

+# ================================================================================

+# Copyright (C) 2017 AT&T Intellectual Property

+# ================================================================================

+# Licensed under the Apache License, Version 2.0 (the "License");

+# you may not use this file 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.

+# ================================================================================

+###

+##C## Mention the name of the framework. At present RAPTOR supports FUSION

+system=fusion

+##C## Determines the priority for the debug message.

+debug_level=5

+##C## Determines the number of records can be downloaded in excel when you select "download all" option.

+download_limit=65000

+csv_download_limit=10

+##C## Determines the number of records to be displayed in a single page.

+default_page_size=50

+##C## Determines the list size in the form field.

+form_fields_list_size=99000

+##C## Determines the scheduler interval

+#scheduler_interval=0 => disabled

+scheduler_interval=0

+##C## System Name

+system_name=RAPTOR

+##C## This is used for Bread crumbs.

+base_title=ANALYSIS

+##C## whether to allow SQL-based report definition (security risk); super users are always allowed to create SQL-based reports

+allow_sql_based_reports=yes

+##C## Determines whether to include disclaimer page at the bottom of each screen

+show_disclaimer=yes

+disclaimer_positioned_top_in_csvexcel=yes

+##C## Determines whether to display the form page as a separate page before running the report

+display_form_before_run=yes

+##C## Determines whether to include the form page on the report data page

+include_form_with_data=yes

+##C## Determines whether to cache chart data in the session => faster re-display if the data volume does not get too large

+cache_chart_data=yes

+##C## Determines whether to cache report data for the currently displayed page in the session => faster re-display

+	##C## if the data volume does not get too large

+cache_cur_page_data=yes

+##C## Determines Chart width

+default_chart_width=700

+##C## Determines Chart height

+default_chart_height=420

+##C## Determines whether to permit report deletion only by report owner or by everyone with "write" access

+delete_only_by_owner=no

+##C## Determines whether to log each report execution and update time and user ID

+enable_report_log=yes

+##C## Determines whether to cache user roles info in memory (saves many DB reads, but does not account for roles

+	##C## assigned after the cache was loaded)

+cache_user_roles=yes

+##C## Determines whether to convert month formats (e.g. MM/YYYY) to the last day of the month (true) or

+        ##C## first day (false) - like 12/2003 is converted to either 12/31/2003 or 12/01/2003

+month_format_use_last_day=no

+##C## Determines whether to print the report title in the download files

+print_title_in_download=yes

+##C## Determines whether to show report description when the report is run and in the quick links

+show_descr_at_runtime=no

+##C## Determines whether to skip labels on the Line chart axis when they overlap

+#DEPRECATED skip_chart_labels_to_fit=no

+##C## Determines whether to show chart types that are purpose and/or data specific

+show_nonstandard_charts=yes

+##C## Determines whether to allow the user to change the chart type at runtime

+allow_runtime_chart_sel=yes

+##C## Determines whether to display the report title as chart title as well

+display_chart_title=yes

+##C## Determines whether to merge/blank multi-level row headings in cross-tab report

+merge_crosstab_row_headings=yes

+##C## Determines whether to display chart when displaying the report at first or just a "Show Chart" button

+display_chart_by_default=yes

+##C## Determines whether to print the form field values in the download files

+print_params_in_download=yes

+##C## Determines the limitation to the characters in chart label.

+skip_chart_labels_limit=30

+##C## Determines whether to users with read-only rights for a report can copy it

+can_copy_on_read_only=yes

+##C## Determines the no of decimals to be displayed in Totals column

+#max_decimals_on_totals=-1 => don't truncate, display all decimal digits

+max_decimals_on_totals=2

+##C## Determines which JFreeChart to use.

+jfree_version=latest

+#jfree_version=0.9.11

+# Added this restriction so that heavily used system which contain

+# more than 1000 users can enable this feature not to display whole

+# users in the drop down menu

+display_all_users=yes

+##Sheet name

+sheet_name=raptor

+#shell_script_name=/home/sundar/test.sh

+#download_query_folder=/titan/PROJECT3/RAPTOR/raptor/dwnld/query/

+## this directory is mentioned if the flat file is downloaded using shell script

+shell_script_dir=/titan/PROJECT3/RAPTOR/raptor/dwnld/

+flat_file_lower_limit=1

+flat_file_upper_limit=200000

+## whatever request mentioned here would be parsed in sql and request parameter would be filled

+request_get_params=isEmbedded

+print_footer_in_download=yes

+## footer mentioned here appears in downloaded excel

+footer_first_line=TODO footer first line

+footer_second_line=Use Pursuant to Company Instructions

+## to run report in popup window

+report_in_popup_window=yes

+## to run each report in new popup window if the above is selected

+popup_in_new_window=yes

+## "Yes" allows the request param to be passed to the drill down report

+pass_request_param_in_drilldown=yes

+## Show PDF download icon

+show_pdf_download=yes

+# Show Folder Tree

+show_folder_tree=no

+#Show folder tree only for Admin Users

+show_folder_tree_only_to_admin_users=no

+#folder tree should be minimized

+folder_tree_minimized=yes

+## whatever session mentioned here would be parsed in sql and session parameter would be filled

+session_params=login_id

+display_formfield_info=yes

+customize_formfield_info=yes

+#schedule limit for end users

+schedule_limit=10

+# customized query if you need any restrictions for schedule and security tab for fusion

+#schedule_custom_query_for_users=getAllUsersByCustomer

+#schedule_custom_query_for_roles=getAllRolesByCustomer

+# customized query if you need any restrictions for schedule and security tab for prisms example

+#schedule_custom_query_for_users=SELECT au.user_id, au.first_name||' '||au.last_name user_name FROM app_user au order by 2

+schedule_custom_query_for_users=SELECT au.user_id id, au.first_name||' '||au.last_name name FROM app_user au where user_id = 1 order by 2

+#schedule_custom_query_for_roles=SELECT ar.role_id, ar.descr role_name FROM app_role ar order by 2

+schedule_date_pattern=MM/dd/yyyy hh:mm:ss a

+## This is used to display in right format in chart timestamp axis as we give in the sql

+#chart_yearly_format=yyyy

+#chart_monthly_format=MMM-yyyy

+#chart_daily_format=MM-dd-yyyy

+chart_hourly_format=MM/dd HH

+#chart_minute_format=HH:mm

+chart_minute_format=MM-dd-yyyy-HH:mm

+#chart_second_format=HH:mm:ss

+chart_second_format=MM-dd-yyyy

+#chart_millisecond_format=HH:mm:ss.S

+schedule_help_text=This form is used to schedule a specific Reporting Platform report to be delivered to one or more email addresses associated with your Company's Business Direct user logins.  Note that report output delivered via email does not include the capability to drill down/back up to additional data levels.  So, select the appropriate data level report for the scheduled report.  View the status of scheduled report requests in the My Schedules menu item.

+use_loginid_in_schedYN=Y

+session_params_for_scheduling=login_id

+session_date_formfield_auto_incr=yes

+display_session_param_pdfexcel=login_id;Login Id

+session_params_for_displaying_in_scheduling=login_id;Login Id

+application_server=tomcat

+#gmap properties

+gmap_key=ABQIAAAAToJSSetKBMjBJx8MiRw4ghQiU0SbbKnm8C5eu25cpyLwgkLzyRShrQTbgZtqnKAqZU9JwcSq1bKwiA

+PROJECT-FOLDER=/Users/sundar/git/st_quantum/quantum/target/quantum-1.0

+# 

+MARKET-SHAPEFILE-FOLDER=resources/files

+# output folder for files generated on server side

+OUTPUT-FOLDER=resources/temp

+# tile size in pixel

+TILE-SIZE=256

+#check if map is disabled or not

+map_allowed=Y

+max_drilldown_level=2

+admin_role_equiv_to_super_role=N

+show_loading_during_formfield_chain=Y

+show_print_icon=N

+globally_nowrap=N

+calendar_output_date_format=MM/dd/yyyy

+memory_threshold_percentage=99

+print_params_in_csv_download=yes

+notitle_in_dashboard=yes

+generate_store_sched_reports=yes

+show_excel_2007_download=yes

+print_excel_in_landscape=yes

+show_animated_chart_option=yes

+show_animated_chart_only=no

+adjust_content_based_on_height=yes

+custom_submit_button_text=Run Button

+customize_formfield_layout=yes

+#db_type=postgresql

+#db_type=oracle

+db_type=mysql

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties
new file mode 100644
index 0000000..28a8180
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor_app_fusion.properties
@@ -0,0 +1,39 @@
+###

+# ================================================================================

+# eCOMP Portal SDK

+# ================================================================================

+# Copyright (C) 2017 AT&T Intellectual Property

+# ================================================================================

+# Licensed under the Apache License, Version 2.0 (the "License");

+# you may not use this file 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.

+# ================================================================================

+###

+temp_folder_path=/demeter/WebApps/dev/ECOMP_PORTAL/temp/

+upload_folder_path=/demeter/WebApps/dev/ECOMP_PORTAL/files/

+excel_template_path=/demeter/WebApps/dev/ECOMP_PORTAL/files/raptor_template/

+temp_folder_url=temp/

+upload_folder_url=upload/

+smtp_server=todo.smtp.com

+default_email_sender=email-name@email.com

+error_page=error_page.jsp

+jsp_context_path=raptor/

+img_folder_url=static/fusion/raptor/images/

+base_folder_url=static/fusion/raptor/

+direct_access_url=http://localhost:8080/quantum/raptor_email_attachment.htm?action=raptor&source_page=report_run&display_content=y

+#base_action_url=report.htm#/report_run/

+drill_action_url=report.htm#/report_run/c_master=

+base_action_url=report_wizard.htm?action=

+base_action_url_ng=report#/

+base_action_param=c_master=

+super_role_id=1

+admin_role_ids=1

+quick_links_menu_ids=HOME,CUSTOMER,REPORTS

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties
new file mode 100644
index 0000000..783f5bb
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor_db_fusion.properties
@@ -0,0 +1,19 @@
+###

+# ================================================================================

+# eCOMP Portal SDK

+# ================================================================================

+# Copyright (C) 2017 AT&T Intellectual Property

+# ================================================================================

+# Licensed under the Apache License, Version 2.0 (the "License");

+# you may not use this file 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.

+# ================================================================================

+###

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor_pdf.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor_pdf.properties
new file mode 100644
index 0000000..504f082
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/raptor_pdf.properties
@@ -0,0 +1,49 @@
+###

+# ================================================================================

+# eCOMP Portal SDK

+# ================================================================================

+# Copyright (C) 2017 AT&T Intellectual Property

+# ================================================================================

+# Licensed under the Apache License, Version 2.0 (the "License");

+# you may not use this file 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.

+# ================================================================================

+###

+## pdf file specific properties

+pdf_data_font_size=9

+pdf_data_font_family=Arial

+#reduce the font size from html config

+pdf_data_font_size_offset=2

+pdf_data_alternate_color=true

+#data row background(white), alternate(light light blue/gray)

+pdf_data_background_alternate_hex_code=#EDEDED

+pdf_data_default_background_hex_code=#FFFFFF

+#header font (white)  background (gray)

+pdf_data_table_header_font_hex_code=#FFFFFF

+pdf_data_table_header_background_hex_code=#8A9BB3

+#footer header

+pdf_footer_font_size=9

+pdf_footer_font_family=Arial

+pdf_att_proprietary=Proprietary\nUse Pursuant to Company Instructions

+pdf_att_proprierary_font_size=7

+pdf_date_timezone=GMT

+pdf_date_pattern=MM/dd/yyyy hh:mm:ss a

+##page number position at 1 - footer middle, 0 -- header right, 2 - both

+pdf_page_number_position=1

+pdf_word_before_page_number=Page

+pdf_word_after_page_number=

+pdf_coverpage_firstcolumn_size=0.3

+pdf_image_auto_rotate=false

+display_create_owner_info=true

+#session_info=customer,customerId

+display_loginid_for_downloaded_by=false

+# please use false if you want landscape to be default.

+is_default_orientation_portrait=true

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/sql.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/sql.properties
new file mode 100644
index 0000000..aee16cd
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/sql.properties
@@ -0,0 +1,322 @@
+###

+# ================================================================================

+# eCOMP Portal SDK

+# ================================================================================

+# Copyright (C) 2017 AT&T Intellectual Property

+# ================================================================================

+# Licensed under the Apache License, Version 2.0 (the "License");

+# you may not use this file 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.

+# ================================================================================

+###

+#SQL Statements for PostgreSQL

+

+#ReportLoader.java

+

+load.custom.report.xml = SELECT cr.report_xml FROM cr_report cr WHERE rep_id=?

+

+# need to copy to oracle

+load.remoteDB.schema = SELECT 'local' SCHEMA_ID, 'local' SCHEMA_DESC, null DATASOURCE_TYPE  FROM dual union SELECT a.SCHEMA_ID, a.SCHEMA_DESC, DATASOURCE_TYPE  FROM SCHEMA_INFO a  where schema_id <> 'local' order by schema_id

+load.remoteDB.schema.where = SELECT a.SCHEMA_ID, a.SCHEMA_DESC, DATASOURCE_TYPE  FROM SCHEMA_INFO a where schema_id = '[schema_id]'

+#formfield rendering

+

+formfield.id.name.sql.prefix=SELECT id, name FROM (

+formfield.id.name.sql=SELECT id, name

+

+formfield.id.name.sql.suffix=

+

+report.security.create= SELECT coalesce(cr.owner_id, cr.create_id) AS owner_id, cr.create_id,  DATE_FORMAT(cr.create_date, '%m/%d/%Y') create_date, maint_id,  DATE_FORMAT(cr.maint_date, '%m/%d/%Y')  update_date, cr.public_yn FROM cr_report cr WHERE cr.rep_id = [rw.getReportID()]

+

+db.update.report.xml = SELECT cr.rep_id, cr.report_xml FROM cr_report cr WHERE rep_id=? FOR UPDATE

+

+update.custom.report.rec = UPDATE cr_report SET title='[Utils.oracleSafe(rw.getReportName())]', descr='[Utils.oracleSafe(rw.getReportDescr())]', public_yn='[(rw.isPublic()]', menu_id='[rw.getMenuID()]', menu_approved_yn='[(rw.isMenuApproved()]', owner_id=[rw.getOwnerID()], maint_id=[rw.getUpdateID()], maint_date=STR_TO_DATE('[rw.getUpdateDate()]', '[Globals.getOracleTimeFormat()]'), dashboard_type_yn='[(rw.isDashboardType()]', dashboard_yn= '[(rw.getReportType().equals(AppConstants.RT_DASHBOARD)]' WHERE rep_id = [rw.getReportID()]

+

+is.report.already.scheduled = select rep_id from cr_report_schedule where rep_id = ?

+

+create.custom.report.rec = INSERT INTO cr_report(rep_id, title, descr, public_yn, menu_id, menu_approved_yn, report_xml, owner_id, create_id, create_date, maint_id, maint_date, dashboard_type_yn, dashboard_yn, folder_id) VALUES([rw.getReportID()], '[Utils.oracleSafe(rw.getReportName())]', '[Utils.oracleSafe(rw.getReportDescr())]', '[rw.isPublic()]', '[rw.getMenuID()]', '[rw.isMenuApproved()]', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>', [rw.getOwnerID()], [rw.getCreateID()], STR_TO_DATE('[rw.getCreateDate()]', '[Globals.getOracleTimeFormat()]'), [rw.getUpdateID()], STR_TO_DATE('[rw.getUpdateDate()]', '[Globals.getOracleTimeFormat()]'), '[rw.isDashboardType()]', '[rw.getReportType().equals(AppConstants.RT_DASHBOARD)]',[rw.getFolderId()]) 

+

+get.user.report.names = SELECT cr.rep_id, cr.title FROM cr_report cr WHERE coalesce(cr.owner_id, cr.create_id) = [userID]							

+								

+get.report.owner.id = SELECT coalesce(cr.owner_id, cr.create_id) AS owner FROM cr_report cr WHERE rep_id = ?						

+

+delete.report.record.log = DELETE FROM cr_report_log WHERE rep_id = [reportID]

+

+delete.report.record.users = DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID]

+

+delete.report.record.schedule = DELETE FROM cr_report_schedule WHERE rep_id = [reportID]

+

+delete.report.record.access = DELETE FROM cr_report_access WHERE rep_id = [reportID]

+

+delete.report.record.email = DELETE FROM cr_report_email_sent_log WHERE rep_id = [reportID]

+

+delete.report.record.favorite = DELETE FROM cr_favorite_reports WHERE rep_id = [reportID]

+

+delete.report.record.report = DELETE FROM cr_report WHERE rep_id = [reportID]

+																						

+load.quick.links =  select finalcr.rep_id, finalcr.title, finalcr.descr from (SELECT cr.rep_id, cr.title, cr.descr FROM (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra LEFT JOIN cr_report cr ON cr.rep_id = ra.rep_id WHERE cr.menu_id LIKE '%[nvls(menuId)]%' AND cr.menu_approved_yn = 'Y' AND (coalesce(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL) UNION SELECT cr.rep_id, cr.title, cr.descr FROM cr_report cr WHERE cr.menu_id LIKE '%[nvls(menuId)]%' AND (coalesce(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' or EXISTS (select * from fn_user_role where user_id=[userID] and role_id in (1)))) finalcr ORDER BY finalcr.title

+

+load.folder.reports = SELECT cr.rep_id, cr.rep_id report_id, concat([rep_title_sql] , (CASE WHEN cr.public_yn = 'Y' THEN '' ELSE '[PRIVATE_ICON]' END),cr.title,'</a>') title, cr.descr, concat(au.first_name,' ',au.last_name) owner_name, DATE_FORMAT(cr.create_date, '%m/%d/%Y') create_date, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'N' ELSE coalesce(ra.read_only_yn, 'Y') END read_only_yn, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'Y' ELSE 'N' END user_is_owner_yn FROM cr_report cr JOIN app_user au ON coalesce(cr.owner_id, cr.create_id) = au.user_id AND cr.folder_id= '[folderId]' LEFT JOIN (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL(SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON cr.rep_id = ra.rep_id

+#If roleList.toString() is '' PostgreSQL returns an error - needs to be null instead of empty

+

+load.folder.reports.user = AND coalesce(cr.owner_id, cr.create_id) = [userID]	

+

+load.folder.reports.publicsql = AND (coalesce(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL)

+

+load.quick.download.links = SELECT a.file_name, b.title,DATE_FORMAT(a.dwnld_start_time, '%W %d-%m-%Y %H:%i:%s') as time, a.dwnld_start_time FROM cr_report_dwnld_log a, cr_report b where a.user_id = [userID] and a.rep_id = b.rep_id and (a.dwnld_start_time) >= STR_TO_DATE(DATE_FORMAT(now() -  INTERVAL 1 DAY, '%m/%d/%Y'), '%m/%d/%Y') and a.record_ready_time is not null order by a.dwnld_start_time

+

+load.reports.to.schedule = SELECT cr.rep_id, Initcap(cr.title), cr.descr FROM cr_report cr LEFT OUTER JOIN (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON cr.rep_id = ra.rep_id AND (cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL or cr.owner_id = [userID] )ORDER BY Initcap(cr.title)

+		

+load.reports.to.add.in.dashboard = SELECT cr.rep_id, cr.title, cr.descr FROM cr_report cr LEFT OUTER JOIN (SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON cr.rep_id = ra.rep_id AND (coalesce(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL) AND (cr.dashboard_yn = 'N' or cr.dashboard_yn is null) ORDER BY cr.title

+

+load.my.recent.links = select rep_id, title, descr, form_fields from ( select rep_id, title, descr, form_fields from  (select cr.rep_id, cr.title, a.form_fields,  cr.descr, a.log_time, a.user_id, a.action, a.action_value from cr_report_log a, cr_report cr where user_id = [userID] AND action = 'Report Execution Time' and a.rep_id = cr.rep_id order by log_time desc) AS x) AS y where LIMIT 1, 6

+

+create.report.log.entry = INSERT INTO cr_report_log (rep_id, log_time, user_id, action, action_value, form_fields) VALUES([reportID], now(), [userID], '[action]' , '[executionTime]', '[form_fields]')

+

+create.report.log.entry.exec.time = INSERT INTO cr_report_log (rep_id, log_time, user_id, action, action_value, form_fields) VALUES([reportID], NOW() + INTERVAL 1 SECOND, [userID], '[action]' , '[executionTime]', '[formFields]')

+

+clear.report.log.entries = DELETE FROM cr_report_log WHERE rep_id = ? and user_id = ?

+

+load.report.log.entries = SELECT x.log_time, x.user_id, (CASE WHEN x.action = 'Report Execution Time' THEN  concat('<a href=\"[AppUtils.getRaptorActionURL()]report.run.container&c_master=',x.rep_id,'&',x.form_fields,'&fromReportLog=Y&display_content=Y&noFormFields=Y&refresh=Y\">',x.action,'</a>') ELSE x.action END) action, (CASE WHEN x.action = 'Report Execution Time' THEN  action_value  ELSE 'N/A' END) time_taken, (CASE WHEN x.action = 'Report Execution Time' THEN concat('<a href=\"[AppUtils.getRaptorActionURL()]report.run.container&c_master=',x.rep_id,'&',x.form_fields,'&fromReportLog=Y&display_content=Y&noFormFields=Y&refresh=Y\"><img src=\"[AppUtils.getImgFolderURL()]test_run.gif" width=\"12\" height=\"12\" border=0 alt=\"Run report\"/></a>') ELSE 'N/A' END) run_image, x.name FROM  (SELECT rl.rep_id, DATE_FORMAT(rl.log_time, '%m/%d/%Y %h:%i:%s %p') log_time, rl.action_value, concat(fuser.last_name ,', ',fuser.first_name) name, rl.user_id, rl.action, rl.form_fields FROM cr_report_log rl, fn_user fuser WHERE rl.rep_id = [nvls(reportId)] and rl.action != 'Report Run' and fuser.user_id = rl.user_id ORDER BY rl.log_time DESC) x  LIMIT 100

+

+does.user.can.schedule.report = select crs.sched_user_id, count(*) from cr_report_schedule crs where sched_user_id = [userId] group by crs.sched_user_id having count(*) >= [Globals.getScheduleLimit()]

+

+does.user.can.schedule = select crs.schedule_id from cr_report_schedule crs where schedule_id = [scheduleId]

+

+get.system.date.time = select DATE_FORMAT(now(),'%m/%d/%Y %H:%i:%s')

+

+get.next.day.date.time = select DATE_FORMAT(NOW() + INTERVAL 1 DAY,'%m/%d/%Y %H:%i:%s')

+

+get.next.fifteen.minutes.date.time = select DATE_FORMAT(NOW() + INTERVAL 15 MINUTES,'%m/%d/%Y %H:%i:%s')

+

+get.next.thirty.minutes.date.time = select DATE_FORMAT(NOW() + INTERVAL 30 MINUTES,'%m/%d/%Y %H:%i:%s')

+

+get.template.file = select template_file from cr_report_template_map where report_id = [reportId]

+

+load.pdf.img.lookup = select image_id, image_loc from cr_raptor_pdf_img

+

+load.action.img.lookup = select image_id, image_loc from cr_raptor_action_img

+

+

+#ActionHandler.java

+

+report.values.map.def.a = SELECT x FROM (SELECT DISTINCT 

+

+report.values.map.def.b = TO_CHAR([colName], '[nvl(displayFormat, AppConstants.DEFAULT_DATE_FORMAT)]')

+

+report.values.map.def.c = [colName] 

+

+report.values.map.def.d =  x FROM [rdef.getTableById(tableId).getTableName()] WHERE [colName] IS NOT NULL ORDER BY 1) xx LIMIT <= [Globals.getDefaultPageSize()]

+

+test.sched.cond.popup = SELECT 1 WHERE EXISTS ([sql])

+

+download.all.email.sent = Select user_id, rep_id from CR_REPORT_EMAIL_SENT_LOG where gen_key='[pdfAttachmentKey.trim()]' and log_id =[report_email_sent_log_id.trim()] and (now() - sent_date) < '1 day' limit 1

+

+download.all.gen.key = select schedule_id from cr_report_email_sent_log u where U.GEN_KEY = '[pdfAttachmentKey]'

+

+download.all.retrieve = SELECT au.user_id FROM (SELECT rs.schedule_id, rs.rep_id FROM cr_report_schedule rs WHERE rs.enabled_yn='Y' AND rs.run_date IS NOT NULL  AND rs.schedule_id = [scheduleId]) x, cr_report r, app_user au WHERE x.rep_id = r.rep_id  AND au.user_id IN (SELECT rsu.user_id FROM cr_report_schedule_users rsu WHERE rsu.schedule_id = x.schedule_id and rsu.schedule_id = [scheduleId]  UNION SELECT ur.user_id FROM fn_user_role ur WHERE ur.role_id IN (SELECT rsu2.role_id FROM cr_report_schedule_users rsu2 WHERE rsu2.schedule_id = x.schedule_id and  rsu2.schedule_id = [scheduleId]))

+

+download.all.insert = insert into cr_report_dwnld_log (user_id,rep_id,file_name,dwnld_start_time,filter_params) values (?,?,?,?,?)

+

+#ReportWrapper.java

+

+report.wrapper.format = SELECT coalesce(cr.owner_id, cr.create_id) owner_id, cr.create_id, DATE_FORMAT(cr.create_date, '[Globals.getOracleTimeFormat()]') create_date, maint_id, DATE_FORMAT(cr.maint_date, '[Globals.getOracleTimeFormat()]') update_date, cr.menu_id, cr.menu_approved_yn FROM cr_report cr WHERE cr.rep_id= [reportID]

+

+generate.subset.sql = SELECT [colNames.toString()] FROM (SELECT  [colNames.toString()] FROM ([reportSQL]) AS x ) AS y 

+

+report.sql.only.first.part = SELECT [colNames.toString()] FROM (SELECT [colNames.toString()] FROM (

+

+report.sql.only.second.part.a = [startRow] 

+

+report.sql.only.second.part.b = [pageSize]

+#MYSQL: LIMIT [startRow], [pageSize]

+#ORacle: rownum >= [startRow] and rownum <= ([startRow]+[pageSize])

+#Postgre: limit [pageSize] offset [startRow] 

+

+report.sql.only.second.part.b.noorderby =  LIMIT [startRow]

+

+generate.sql.visual.select = SELECT

+

+generate.sql.visual.count = COUNT(*) cnt

+

+generate.sql.visual.dual = 

+#No DUAL table in PostgreSQL so this is blank

+

+#ReportRuntime.java

+

+load.crosstab.report.data = SELECT  [colNames.toString()] FROM ( [reportSQL] 

+

+#RaptorRunHandler.java

+

+generate.sql.handler = SELECT  x.* from ([sql]) AS x LIMIT 2

+

+generate.sql.select = SELECT [colNames.toString()] FROM (SELECT  [colNames.toString()] FROM ([sql]) AS y) AS x 

+			

+#ReportSchedule.java

+

+load.schedule.data = SELECT rs.enabled_yn, DATE_FORMAT(rs.start_date, '%m/%d/%Y') start_date, DATE_FORMAT(rs.end_date, '%m/%d/%Y') end_date, DATE_FORMAT(rs.run_date, '%m/%d/%Y') run_date, coalesce(DATE_FORMAT(rs.run_date, '%h'), '12') run_hour, coalesce(DATE_FORMAT(rs.run_date, '%i'), '00') run_min, coalesce(DATE_FORMAT(rs.run_date, '%p'), 'AM') run_ampm, rs.recurrence, rs.conditional_yn, rs.notify_type, rs.max_row, rs.initial_formfields, rs.schedule_id, coalesce(DATE_FORMAT(rs.end_date, '%h'), '11') end_hour, coalesce(DATE_FORMAT(rs.end_date, '%i'), '45') end_min, coalesce(DATE_FORMAT(rs.end_date, '%p'), 'PM') end_ampm, encrypt_yn, attachment_yn FROM cr_report_schedule rs WHERE rs.rep_id = [reportID]

+

+load.schedule.getid = SELECT rsu.user_id, concat(fuser.last_name,', ',fuser.first_name), fuser.login_id FROM cr_report_schedule_users rsu, fn_user fuser WHERE rsu.rep_id = [reportID]  AND rsu.schedule_id = [getScheduleID()] and rsu.user_id IS NOT NULL and rsu.user_id = fuser.user_id

+

+load.schedule.users = SELECT rsu.role_id FROM cr_report_schedule_users rsu WHERE rsu.rep_id = [reportID] AND rsu.schedule_id = [getScheduleID()] AND rsu.role_id IS NOT NULL

+

+new.schedule.data = select coalesce(max(schedule_id),0)+1  AS sequence from cr_report_schedule

+

+new.report.data = select coalesce(max(rep_id),0)+1  AS rep_id from cr_report

+

+execute.update = DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]

+

+execute.update.users = INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])

+

+execute.update.roles = INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])

+

+execute.update.activity = INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))

+ 

+delete.schedule.data = SELECT 1 FROM cr_report_schedule WHERE rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]

+ 

+delete.schedule.data.users = DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID]  and schedule_id = [getScheduleID()]

+ 

+delete.schedule.data.id = DELETE FROM cr_report_schedule where rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]

+

+load.cond.sql = SELECT condition_large_sql FROM cr_report_schedule WHERE schedule_id=?

+

+load.cond.sql.select = SELECT condition_sql FROM cr_report_schedule WHERE schedule_id = [scheduleId]

+

+persist.cond.sql.update = update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]

+#EMPTY CLOB() changed to ''

+

+persist.cond.sql.large = SELECT condition_large_sql FROM cr_report_schedule cr WHERE schedule_id=? FOR UPDATE

+

+persist.cond.sql.set = update cr_report_schedule set condition_sql = ? where schedule_id = [scheduleId]

+

+#DataCache.java

+

+get.data.view.actions = SELECT ts.web_view_action FROM cr_table_source ts WHERE ts.web_view_action IS NOT NULL

+

+get.public.report.id.names = SELECT rep_id, title FROM cr_report WHERE public_yn = 'Y' ORDER BY title

+

+get.private.accessible.names.a = SELECT cr.rep_id, cr.title FROM cr_report cr WHERE cr.rep_id not in (select rep_id from cr_report_access cra where user_id =  '[user_id]' 

+

+get.private.accessible.names.if =  OR role_id in (

+

+get.private.accessible.names.b =  ) AND public_yn = 'N' and cr.owner_id = '[user_id]' order by 2 

+

+get.group.accessible.names.a = SELECT cr.rep_id, cr.title FROM cr_report cr  WHERE cr.rep_id  in (select rep_id from cr_report_access cra where user_id =  '[user_id]'

+

+get.group.accessible.names.b =  )  AND public_yn = 'N' order by 2 

+

+get.report.table.sources.a = SELECT table_name, display_name, pk_fields, web_view_action, large_data_source_yn, filter_sql FROM cr_table_source 

+

+get.report.table.sources.where =  where SOURCE_DB= '[dBInfo]'

+

+get.report.table.sources.if =  where SOURCE_DB is null or SOURCE_DB = '[AppConstants.DB_LOCAL]'

+

+get.report.table.sources.else =  ORDER BY table_name

+

+grab.report.table.a = SELECT ts.table_name, ts.display_name, ts.pk_fields, ts.web_view_action, ts.large_data_source_yn, ts.filter_sql FROM cr_table_source ts  WHERE 

+

+grab.report.table.if = ts.SOURCE_DB= '[dBInfo]'

+

+grab.report.table.else = (ts.SOURCE_DB is null or ts.SOURCE_DB = '[AppConstants.DB_LOCAL]')

+

+grab.report.table.b =  except SELECT ts.table_name, ts.display_name, ts.pk_fields,  ts.web_view_action,  ts.large_data_source_yn, ts.filter_sql from cr_table_source ts where table_name in (select table_name from  cr_table_role where role_id not IN [sb.toString()]) and 

+

+grab.report.table.c =  ORDER BY 1 

+

+get.report.table.crjoin = SELECT src_table_name, dest_table_name, join_expr FROM cr_table_join

+

+get.report.table.joins = SELECT tj.src_table_name, tj.dest_table_name, tj.join_expr FROM cr_table_join tj WHERE ((EXISTS (SELECT 1 FROM cr_table_role trs WHERE trs.table_name=tj.src_table_name AND trs.role_id IN [sb.toString()])) OR (NOT EXISTS (SELECT 1 FROM cr_table_role trs WHERE trs.table_name=tj.src_table_name))) AND ((EXISTS (SELECT 1 FROM cr_table_role trd WHERE trd.table_name=tj.dest_table_name AND trd.role_id IN [sb.toString()])) OR (NOT EXISTS (SELECT 1 FROM cr_table_role trd WHERE trd.table_name=tj.dest_table_name)))

+

+generate.report.table.col = SELECT a.table_name, a.column_name, a.data_type, a.label FROM user_column_def a WHERE a.table_name = '[tableName.toUpperCase()]' ORDER BY a.column_id

+

+generate.db.user.sql.a = SELECT utc.table_name, utc.column_name, utc.data_type, 

+

+generate.db.user.sql.if = utc.column_name FROM user_tab_columns utc 

+

+generate.db.user.sql.else = coalesce(x.label, utc.column_name) FROM user_tab_columns utc 

+

+generate.db.user.sql.b = WHERE utc.table_name = '[tableName.toUpperCase()]' 

+

+generate.db.user.sql.c = AND utc.table_name = x.table_name AND utc.column_name = x.column_name 

+

+generate.db.user.sql.d = ORDER BY utc.column_id 

+

+#SearchHandler.java

+

+load.report.search.result = SELECT cr.rep_id, cr.rep_id report_id, [rep_title_sql] title, cr.descr, concat(au.first_name,' ',au.last_name) owner_name, DATE_FORMAT(cr.create_date, '%m/%d/%Y') create_date, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'N' ELSE coalesce(ra.read_only_yn, 'Y') END read_only_yn, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'Y' ELSE 'N' END user_is_owner_yn, case when report_xml like '%<allowSchedule>N</allowSchedule>%' then 'N' when report_xml like '%<allowSchedule>Y</allowSchedule>%' or 1 = (select distinct 1 from cr_report_schedule where rep_id = cr.rep_id) then 'Y' else 'N' end FROM cr_report cr JOIN fn_user au ON coalesce (cr.owner_id, cr.create_id) = au.user_id [fReportID] [fReportName] LEFT JOIN(SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON ra.rep_id = cr.rep_id

+

+load.report.search.instr = WHERE cr.menu_id LIKE '%[menuId]%'

+

+load.report.search.result.user = WHERE coalesce(cr.owner_id, cr.create_id) = [userID]

+

+load.report.search.result.public = WHERE (coalesce(cr.owner_id, cr.create_id) = [userID] OR cr.public_yn = 'Y' OR ra.read_only_yn IS NOT NULL)

+

+load.report.search.result.fav =  WHERE cr.rep_id in (select rep_id from cr_favorite_reports where user_id = [userID]

+

+load.report.search.result.sort = ORDER BY CASE coalesce(cr.owner_id, cr.create_id) WHEN [userID] THEN ' ' WHEN 'upper(concat(au.first_name,' ',au.last_name))' ELSE 'upper(cr.title)' END

+

+load.folder.report.result = SELECT cr.rep_id, cr.rep_id report_id, concat([rep_title_sql] , (CASE WHEN cr.public_yn = 'Y' THEN '' ELSE '[PRIVATE_ICON]' END),cr.title,'</a>') title, cr.descr, concat(au.first_name,' ',au.last_name) owner_name, TO_CHAR(cr.create_date, 'MM/DD/YYYY') create_date, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'N' ELSE coalesce(ra.read_only_yn, 'Y') END read_only_yn, CASE WHEN coalesce(cr.owner_id, cr.create_id) = [userID] THEN 'Y' ELSE 'N' END user_is_owner_yn FROM cr_report cr JOIN fn_user au ON coalesce (cr.owner_id, cr.create_id) = au.user_id AND TO_CHAR(cr.rep_id, 'FM99999999') like coalesce('%[fReportID]%', TO_CHAR(cr.rep_id, 'FM99999999')) AND UPPER(cr.title) LIKE UPPER('%[fReportName]%') LEFT JOIN(SELECT rep_id, MIN(read_only_yn) read_only_yn FROM ((SELECT ua.rep_id, ua.read_only_yn FROM cr_report_access ua WHERE ua.user_id = [userID]) UNION ALL (SELECT ra.rep_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.role_id IN ([roleList.toString()]))) report_access GROUP BY rep_id) ra ON ra.rep_id = cr.rep_id

+

+load.folder.report.result.sort =  ORDER BY CASE coalesce(cr.owner_id, cr.create_id) WHEN [userID] THEN ' ' WHEN '(concat(au.first_name,' ',au.last_name))' ELSE 'cr.title' END

+

+#WizardProcessor.java

+

+process.filter.add.edit = '[argValue]'

+

+#ReportDefinition.java

+

+persist.report.adhoc = SELECT nextval('[Globals.getAdhocReportSequence()]') AS sequence

+

+#Globals.java

+

+initialize.roles = SELECT 1 WHERE EXISTS (SELECT 1 FROM cr_table_role)

+

+initialize.version = SELECT cr_raptor.get_version

+

+# scheduler

+

+

+scheduler.available.schedules = SELECT x.rep_id, x.schedule_id, x.conditional_yn, x.condition_large_sql, x.notify_type, x.max_row, x.initial_formfields, x.processed_formfields, r.title, x.user_id FROM ( SELECT rs.rep_id, rs.schedule_id, rs.sched_user_id user_id, rs.conditional_yn, rs.condition_large_sql, rs.notify_type, rs.max_row, rs.initial_formfields, rs.processed_formfields  FROM cr_report_schedule rs  WHERE rs.enabled_yn='Y'  AND rs.start_date <= [currentDate]  AND  (rs.end_date >= [currentDate] or rs.end_date is null )  AND rs.run_date IS NOT NULL  ) x, cr_report r  WHERE x.rep_id = r.rep_id

+

+random.string = select ( concat('Z' , round(random() * 1000000000000) ) )

+

+

+scheduler.user.emails = SELECT au.user_id FROM (SELECT rs.schedule_id, rs.rep_id FROM cr_report_schedule rs WHERE rs.enabled_yn='Y' AND rs.start_date <= now() AND rs.end_date  >= now() AND rs.run_date IS NOT NULL AND rs.schedule_id = [p_schedule_id] ) x, cr_report r, fn_user au WHERE x.rep_id = r.rep_id AND au.user_id IN (SELECT rsu.user_id FROM cr_report_schedule_users rsu WHERE rsu.schedule_id = x.schedule_id and rsu.schedule_id = [p_schedule_id] UNION SELECT ur.user_id FROM fn_user_role ur WHERE ur.role_id IN (SELECT rsu2.role_id FROM cr_report_schedule_users rsu2 WHERE rsu2.schedule_id = x.schedule_id and rsu2.schedule_id = [p_schedule_id]))  

+

+

+# my logins

+

+app.query = SELECT APP_ID, ML_APP_NAME, MOTS_ID from fn_app

+

+user.log.query = SELECT DISTINCT  IFNULL(SBCID, '') CUID, '' AWID, CONCAT('"',IFNULL(SBCID, ''),'"') APPLICATIONUSERID,  CONCAT('"',IFNULL(FIRST_NAME, ''),'"') FIRST_NAME, CONCAT('"',substr(IFNULL(MIDDLE_NAME, ''), 0, 1),'"') MIDDLE_INITIAL, CONCAT('"',IFNULL(LAST_NAME, ''),'"') LAST_NAME, IFNULL(DATE_FORMAT(LAST_LOGIN_DATE, '%Y/%m/%d'), '') LAST_LOGON_DATE, DATE_FORMAT(CREATED_DATE, '%Y/%m/%d') ACCOUNT_ACTIVATION_DATE, IFNULL(DATE_FORMAT(MODIFIED_DATE, '%Y/%m/%d'), '') LAST_DATE_ACCOUNT_MODIFIED,  '' LAST_PASSWORD_CHANGE_DATE, CONCAT('"',IFNULL(FIRST_NAME, ''),' ',IFNULL(MIDDLE_NAME, ''),' ',IFNULL(LAST_NAME, ''),'"')  FULL_USER_NAME, '' NT_ID, IFNULL(EMAIL, '') EMAIL   FROM FN_USER FU, FN_USER_ROLE FUR WHERE FU.USER_ID \= FUR.USER_ID and FUR.app_id \= ? and ACTIVE_YN \= 'Y' and sbcid is not null order by 1

+

+profile.log.query = SELECT DISTINCT CONCAT('"' , ROLE_NAME , '"') PROFILE_NAME, '""' SECURITY_SETTINGS FROM FN_ROLE FR, FN_USER_ROLE FUR WHERE FUR.ROLE_ID \= FR.ROLE_ID and FR.ACTIVE_YN \= 'Y' and ((FUR.APP_ID \= 1 and FR.ROLE_NAME <> 'Standard User') or (FUR.APP_ID \= ? and FUR.APP_ID <> 1))  ORDER BY 1

+

+user.profile.log.query = SELECT DISTINCT IFNULL(SBCID, '') CUID, '' AWID, CONCAT('"' , IFNULL(SBCID, '') , '"') APPLICATIONUSERID , CONCAT('"' , ROLE_NAME , '"')  PROFILE_NAME  FROM FN_USER A, FN_USER_ROLE B, FN_ROLE C WHERE A.USER_ID \= B.USER_ID AND B.ROLE_ID \= C.ROLE_ID AND A.ACTIVE_YN \= 'Y' AND C.ACTIVE_YN \= 'Y' AND a.sbcid is not null  AND ((B.APP_ID \= 1 and C.ROLE_NAME <> 'Standard User') or (B.APP_ID \= ? and B.APP_ID <> 1)) ORDER BY 1

+

+all.accounts.log.query = SELECT DISTINCT IFNULL(SBCID, '') CUID, (case when A.ACTIVE_YN\='Y' then 'ACTIVE' else 'INACTIVE' end) ACTIVE_YN, CONCAT('"' , IFNULL(SBCID, '') , '"') APPLICATIONUSERID , IFNULL(DATE_FORMAT(LAST_LOGIN_DATE, '%Y/%m/%d'), '') LAST_LOGON_DATE, '' LAST_PASSWORD_CHANGE_DATE, CONCAT('"' , ROLE_NAME , '"')  PROFILE_NAME  FROM FN_USER A, FN_USER_ROLE B, FN_ROLE C WHERE A.USER_ID \= B.USER_ID AND B.ROLE_ID \= C.ROLE_ID AND a.sbcid is not null  AND ((B.APP_ID \= 1 and C.ROLE_NAME <> 'Standard User') or (B.APP_ID \= ? and B.APP_ID <> 1)) ORDER BY 1

+

+# basic sql

+

+seq.next.val = SELECT nextval('[sequenceName]') AS id

+

+current.date = now()

+

+nvl = IFNULL

+

+# report security

+report.user.access = SELECT ra.role_id, ra.user_id, ra.read_only_yn FROM cr_report_access ra WHERE ra.rep_id = [reportID]

+add.user.access = INSERT INTO cr_report_access (rep_id, order_no, role_id, user_id, read_only_yn) VALUES([reportID], IFNULL((select order_no from (SELECT MAX(order_no) AS order_no FROM cr_report_access WHERE rep_id=[reportID]) AS temp), 0)+1, NULL, [userID], '[readOnlyAccess]')

+update.user.access = UPDATE cr_report_access SET read_only_yn='[readOnlyAccess]' WHERE rep_id=[reportID] AND user_id=[userID]

+remove.user.access = DELETE FROM cr_report_access WHERE rep_id=[reportID] AND user_id=[userID]

+add.role.access = INSERT INTO cr_report_access (rep_id, order_no, role_id, user_id, read_only_yn) VALUES([reportID], IFNULL((select order_no from (SELECT MAX(order_no) AS order_no FROM cr_report_access WHERE rep_id=[reportID]) AS temp), 0)+1, [roleID], NULL, '[readOnlyAccess]')

+update.role.access = UPDATE cr_report_access SET read_only_yn='[readOnlyAccess]' WHERE rep_id=[reportID] AND role_id=[roleID]

+remove.role.access = DELETE FROM cr_report_access WHERE rep_id=[reportID] AND role_id=[roleID]

+

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/system.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/system.properties
new file mode 100644
index 0000000..ac03ffa
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/system.properties
@@ -0,0 +1,210 @@
+###

+# ================================================================================

+# eCOMP Portal SDK

+# ================================================================================

+# Copyright (C) 2017 AT&T Intellectual Property

+# ================================================================================

+# Licensed under the Apache License, Version 2.0 (the "License");

+# you may not use this file 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.

+# ================================================================================

+###

+# Properties read by ECOMP Core library, ecompSDK-core.jar

+# testing - props 1.0

+##########################################################################

+# The following properties should NOT be changed by partner applications.

+##########################################################################

+

+application_user_id           = 30000

+post_default_role_id          = 16

+clustered                     = true

+

+#Enable Fusion Mobile capabilities for the application

+mobile_enable			  	  = false

+

+# Cache config file is needed on the classpath

+cache_config_file_path        = /WEB-INF/classes/cache.ccf

+cache_switch                  = 199

+cache_load_on_startup         = false

+

+user_name					  = fullName

+decryption_key				  = AGLDdG4D04BKm2IxIWEr8o==

+

+##########################################################################

+# The following properties MAY require changes by partner applications.

+##########################################################################

+

+#Oracle

+#db.userName=quantumbd

+#db.password=c1syn2yhmr

+#db.connectionURL=jdbc:oracle:thin:todo.link

+#db.hib.dialect=org.hibernate.dialect.Oracle10gDialect

+#db.driver=oracle.jdbc.driver.OracleDriver

+#Hibernate 

+#hb.dialect=org.hibernate.dialect.Oracle10gDialect

+#hb.show_sql=true

+

+#Postgre

+#db.userName=XXXX

+#db.password=XXXX

+#db.connectionURL=jdbc:postgresql://XXXX/XX

+#db.hib.dialect=org.hibernate.dialect.PostgreSQLDialect

+#db.driver=org.postgresql.Driver

+#hb.dialect=org.hibernate.dialect.PostgreSQLDialect

+#hb.show_sql=true

+

+cookie_domain = onap.org

+#Mysql

+db.driver = org.mariadb.jdbc.Driver

+db.connectionURL = jdbc:mariadb://localhost:3306/osam_core

+db.userName = euser

+db.password = euser

+#db.hib.dialect = org.hibernate.dialect.MySQLDialect

+db.min_pool_size = 5

+db.max_pool_size = 10

+hb.dialect = org.hibernate.dialect.MySQLDialect

+hb.show_sql = true

+hb.idle_connection_test_period = 3600

+app_display_name					  = VID

+files_path = /tmp

+

+# menu settings

+#menu_query_name                      = menuData

+#menu_properties_file_location        = /WEB-INF/fusion/menu/

+#application_menu_set_name            = APP

+#application_menu_attribute_name      = applicationMenuData

+#application_menu_properties_name     = menu.properties

+#business_direct_menu_set_name        = BD

+#business_direct_menu_properties_name = bd.menu.properties

+#business_direct_menu_attribute_name  = businessDirectMenuData

+

+application_name              = Virtual Infrastructure Deployment

+application_user_id           = 30000

+post_default_role_id          = 16

+clustered                     = true

+

+#Enable Fusion Mobile capabilities for the application

+mobile_enable			  	  = false

+

+# Cache config file is needed on the classpath

+cache_config_file_path        = /WEB-INF/classes/cache.ccf

+cache_switch                  = 199

+cache_load_on_startup         = false

+

+user_name					  = fullName

+decryption_key				  = AGLDdG4D04BKm2IxIWEr8o==

+

+#element map files

+element_map_file_path = app/fusionapp/files/

+element_map_icon_path = app/fusionapp/icons/

+

+#aai related properties

+#aai.server.url.base=https://aai.api.openecomp.org:8443/aai/

+#aai.server.url=https://aai.api.openecomp.org:8443/aai/v8/

+#aai.oldserver.url.base=https://aai.api.openecomp.org:8443/aai/servers/

+#aai.oldserver.url=https://aai.api.openecomp.org:8443/aai/servers/v3/

+#aai.server.url.base=https://104.239.249.183:8443/aai/

+#aai.server.url=https://104.239.249.183:8443/aai/v13/

+aai.server.url.base=http://localhost:1080/aai/

+aai.server.url=http://localhost:1080/aai/v12/

+

+aai.oldserver.url.base=https://104.239.249.183:8443/aai/servers/

+aai.oldserver.url=https://104.239.249.183:8443/aai/servers/v3/

+aai.truststore.filename=tomcat_keystore

+aai.truststore.passwd.x=OBF:1ks51l8d1o3i1pcc1r2r1e211r391kls1pyj1z7u1njf1lx51go21hnj1y0k1mli1sop1k8o1j651vu91mxw1vun1mze1vv11j8x1k5i1sp11mjc1y161hlr1gm41m111nkj1z781pw31kku1r4p1e391r571pbm1o741l4x1ksp

+aai.keystore.filename=tomcat_keystore

+aai.keystore.passwd.x=OBF:1ks51l8d1o3i1pcc1r2r1e211r391kls1pyj1z7u1njf1lx51go21hnj1y0k1mli1sop1k8o1j651vu91mxw1vun1mze1vv11j8x1k5i1sp11mjc1y161hlr1gm41m111nkj1z781pw31kku1r4p1e391r571pbm1o741l4x1ksp

+

+aai.vid.username=VID

+aai.vid.passwd.x=OBF:1jm91i0v1jl9

+

+aai.use.client.cert=false

+aai.vnf.provstatus=PREPROV,NVTPROV,PROV,CAPPED

+#Cron Schedules

+log_cron                      = 0 0/1 * * * ?;

+mylogins_feed_cron            = 0 0/60 * * * ?;

+#sessiontimeout_feed_cron	  = 0 * * * * ? *

+my_login_feed_output_dir      = /tmp/MyLogins

+

+# ECOMP Portal Shared Context REST API URL

+ecomp_shared_context_rest_url= https://www.openecomp.org:8080/ecompportal/context

+

+# Link shown in Help menu

+contact_us_link = https://www.openecomp.org/EcompPortal/ECOMP+Portal+Home

+

+# An Unique 128-bit value defined to identify a specific version

+# of an application deployed on a specific virtual machine.

+# This value must be generated and updated by the application 

+# which is using the ECOMP SDK at the time of its deployment.

+# Online Unique UUID generator - https://www.uuidgenerator.net/

+instance_uuid=292b461a-2954-4b63-a3f9-f916c7ad3bc0

+

+

+

+#authenticate user server

+authenticate_user_server=http://todo_enter_auth_server_hostname:8383/openid-connect-server-webapp/allUsers

+

+#MSO related properties

+#simulator

+#mso.server.url=http://localhost:8089

+#dev2dev

+#good

+mso.server.url=https://mso.api.simpledemo.onap.org:8443/onap/so/infra

+mso.polling.interval.msecs=2000

+mso.max.polls=3

+mso.user.name=infraportal

+mso.password.x=OBF:1ghz1kfx1j1w1m7w1i271e8q1eas1hzj1m4i1iyy1kch1gdz

+#E2E is v3

+mso.restapi.svc.e2einstance=/e2eServiceInstances/v3

+mso.restapi.svc.instance=/serviceInstantiation/v7/serviceInstances

+mso.restapi.svc.instance.deleteAndUnassign=/serviceInstantiation/v7/serviceInstances

+mso.restapi.vnf.instance=/serviceInstances/v6/<service_instance_id>/vnfs

+mso.restapi.vnf.changemanagement.instance=/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/<request_type>

+mso.restapi.network.instance=/serviceInstances/v6/<service_instance_id>/networks

+mso.restapi.vf.module.instance=/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules

+mso.restapi.vf.module.scaleout=/serviceInstantiation/v7/serviceInstances/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules/scaleOut

+mso.restapi.volume.group.instance=/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/volumeGroups

+mso.restapi.get.orc.req=/orchestrationRequests/v6

+mso.restapi.get.orc.reqs=/orchestrationRequests/v6?

+mso.restapi.get.man.tasks=/tasks/v1

+mso.restapi.configurations=/serviceInstances/v6/<service_instance_id>/configurations

+mso.restapi.configuration.instance=${mso.restapi.configurations}/<configuration_id>

+

+mso.restapi.serviceInstantiationApiRoot=/serviceInstantiation/v7

+mso.restapi.serviceInstanceCreate=${mso.restapi.serviceInstantiationApiRoot}/serviceInstances

+mso.restapi.serviceInstanceAssign=${mso.restapi.serviceInstantiationApiRoot}/serviceInstances/assign

+

+mso.restapi.cloudResourcesApiRoot=/cloudResources/v1

+mso.restapi.operationalEnvironment=${mso.restapi.cloudResourcesApiRoot}/operationalEnvironments/<operational_environment_id>

+

+mso.restapi.operationalEnvironment.activate=${mso.restapi.operationalEnvironment}/activate

+mso.restapi.operationalEnvironment.deactivate=${mso.restapi.operationalEnvironment}/deactivate

+mso.restapi.operationalEnvironment.create=${mso.restapi.cloudResourcesApiRoot}/operationalEnvironments

+

+mso.restapi.cloudResourcesRequestsApiRoot=/cloudResourcesRequests/v1

+mso.restapi.operationalEnvironment.cloudResourcesRequests.status=${mso.restapi.cloudResourcesRequestsApiRoot}?requestId=<request_id>

+

+mso.displayTestAPIOnScreen=true

+mso.defaultTestAPI=GR_API

+mso.maxOpenedInstantiationRequests=20

+mso.asyncPollingIntervalSeconds=1

+refreshTimeInstantiationDashboard=10

+

+vid.truststore.filename=/opt/app/vid/etc/org.onap.vid.trust.jks

+vid.truststore.passwd.x=OBF:1dx01j0e1hs01t981mis1dws156s1ojc1qjc1zsx1pw31qob1qr71pyj1zst1qhy1ojq156i1dua1mm21tb61hvi1j0g1du2

+mso.dme2.client.timeout=30000

+mso.dme2.client.read.timeout=120000

+scheduler.create.new.vnf.change.instance=/v1/ChangeManagement/schedules/

+scheduler.get.time.slots=/v1/ChangeManagement/schedules/

+scheduler.server.url=http://BYO.scheduler:8989/scheduler

+

+scheduler.submit.new.vnf.change=/v1/ChangeManagement/schedules/{scheduleId}/approvals

+scheduler.get.schedules=/v1/ChangeManagement/schedules/scheduleDetails/
\ No newline at end of file
diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/conf/system_template.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/system_template.properties
new file mode 100644
index 0000000..06a2e6b
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/conf/system_template.properties
@@ -0,0 +1,147 @@
+#DB Info

+#db.userName=XXXX

+#db.password=XXXX

+#db.connectionURL=jdbc:oracle:thin:@XXXX/XX

+#db.hib.dialect=org.hibernate.dialect.Oracle10gDialect

+#db.driver=oracle.jdbc.driver.OracleDriver

+#Hibernate 

+#hb.dialect=org.hibernate.dialect.Oracle10gDialect

+#hb.show_sql=true

+

+#Postgre

+#db.userName=XXXX

+#db.password=XXXX

+#db.connectionURL=jdbc:postgresql://XXXX/XX

+#db.hib.dialect=org.hibernate.dialect.PostgreSQLDialect

+#db.driver=org.postgresql.Driver

+#hb.dialect=org.hibernate.dialect.PostgreSQLDialect

+#hb.show_sql=true

+

+cookie_domain = onap.org

+#mysql

+db.driver = org.mariadb.jdbc.Driver

+db.connectionURL = jdbc:mariadb://${VID_MYSQL_HOST}:${VID_MYSQL_PORT}/${VID_MYSQL_DBNAME}

+db.userName = ${VID_MYSQL_USER}

+db.password = ${VID_MYSQL_PASS}

+db.hib.dialect = org.hibernate.dialect.MySQLDialect

+db.min_pool_size = 5

+db.max_pool_size = 10

+hb.dialect = org.hibernate.dialect.MySQLDialect

+hb.show_sql = true

+hb.idle_connection_test_period = 3600

+app_display_name = ${VID_APP_DISPLAY_NAME}

+files_path = /tmp

+

+# menu settings

+#menu_query_name                      = menuData

+#menu_properties_file_location        = /WEB-INF/fusion/menu/

+#application_menu_set_name            = APP

+#application_menu_attribute_name      = applicationMenuData

+#application_menu_properties_name     = menu.properties

+#business_direct_menu_set_name        = BD

+#business_direct_menu_properties_name = bd.menu.properties

+#business_direct_menu_attribute_name  = businessDirectMenuData

+

+application_name              = Virtual Infrastructure Deployment

+application_user_id           = 30000

+post_default_role_id          = 16

+clustered                     = true

+

+#Enable Fusion Mobile capabilities for the application

+mobile_enable = false

+

+# Cache config file is needed on the classpath

+cache_config_file_path        = /WEB-INF/classes/cache.ccf

+cache_switch                  = 199

+cache_load_on_startup         = false

+

+user_name = fullName

+

+decryption_key = ${VID_DECRYPTION_KEY}

+

+#element map files

+element_map_file_path = /tmp

+element_map_icon_path = app/vid/icons/

+

+#aai related properties

+aai.server.url.base=https://${VID_AAI_HOST}:${VID_AAI_PORT}/aai/

+aai.server.url=https://${VID_AAI_HOST}:${VID_AAI_PORT}/aai/v13/

+aai.oldserver.url.base=https://${VID_AAI_HOST}:${VID_AAI_PORT}/aai/servers/

+aai.oldserver.url=https://${VID_AAI_HOST}:${VID_AAI_PORT}/aai/servers/v3/

+aai.truststore.filename=${AAI_TRUSTSTORE_FILENAME}

+aai.truststore.passwd.x=${AAI_TRUSTSTORE_PASSWD_X}

+aai.keystore.filename=${AAI_KEYSTORE_FILENAME}

+aai.keystore.passwd.x=${AAI_KEYSTORE_PASSWD_X}

+aai.vid.username=${AAI_VID_UID}

+aai.vid.passwd.x=${AAI_VID_PASSWD_X}

+aai.use.client.cert=${AAI_USE_CLIENT_CERT}

+aai.vnf.provstatus=${AAI_VNF_PROVSTATUS}

+

+# ECOMP Portal Shared Context REST API URL

+ecomp_shared_context_rest_url=${VID_ECOMP_SHARED_CONTEXT_REST_URL}

+# Link shown in Help menu

+contact_us_link=${VID_CONTACT_US_LINK}

+#Cron Schedules

+log_cron                      = 0 0/1 * * * ?;

+mylogins_feed_cron            = 0 0/60 * * * ?;

+#sessiontimeout_feed_cron	  = 0 * * * * ? *

+my_login_feed_output_dir      = ${VID_MYLOGIN_FEED_DIRECTORY}

+

+# An Unique 128-bit value defined to identify a specific version

+# of an application deployed on a specific virtual machine.

+# This value must be generated and updated by the application 

+# which is using the ECOMP SDK at the time of its deployment.

+# Online Unique UUID generator - https://www.uuidgenerator.net/

+instance_uuid=292b461a-2954-4b63-a3f9-f916c7ad3bc0

+

+

+#MSO related properties

+#simulator

+mso.server.url=${VID_MSO_SERVER_URL}

+mso.polling.interval.msecs=${MSO_POLLING_INTERVAL_MSECS}

+mso.max.polls=10

+mso.user.name=${VID_MSO_USER}

+mso.password.x=${VID_MSO_PASS}

+#E2E is v3

+mso.restapi.svc.e2einstance=/e2eServiceInstances/v3

+mso.restapi.svc.instance=/serviceInstantiation/v7/serviceInstances

+mso.restapi.svc.instance.deleteAndUnassign=/serviceInstantiation/v7/serviceInstances

+mso.restapi.vnf.instance=/serviceInstances/v6/<service_instance_id>/vnfs

+mso.restapi.vnf.changemanagement.instance=/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/<request_type>

+mso.restapi.network.instance=/serviceInstances/v6/<service_instance_id>/networks

+mso.restapi.vf.module.scaleout=/serviceInstantiation/v7/serviceInstances/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules/scaleOut

+mso.restapi.vf.module.instance=/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules

+mso.restapi.volume.group.instance=/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/volumeGroups

+mso.restapi.get.orc.req=/orchestrationRequests/v6

+mso.restapi.get.orc.reqs=/orchestrationRequests/v6?

+mso.restapi.get.man.tasks=/tasks/v1

+mso.restapi.configurations=/serviceInstances/v6/<service_instance_id>/configurations

+mso.restapi.configuration.instance=${mso.restapi.configurations}/<configuration_id>

+

+mso.restapi.serviceInstantiationApiRoot=/serviceInstantiation/v7

+mso.restapi.serviceInstanceCreate=${mso.restapi.serviceInstantiationApiRoot}/serviceInstances

+mso.restapi.serviceInstanceAssign=${mso.restapi.serviceInstantiationApiRoot}/serviceInstances/assign

+

+mso.restapi.cloudResourcesApiRoot=/cloudResources/v1

+mso.restapi.operationalEnvironment=${mso.restapi.cloudResourcesApiRoot}/operationalEnvironments/<operational_environment_id>

+

+mso.restapi.operationalEnvironment.activate=${mso.restapi.operationalEnvironment}/activate

+mso.restapi.operationalEnvironment.deactivate=${mso.restapi.operationalEnvironment}/deactivate

+mso.restapi.operationalEnvironment.create=${mso.restapi.cloudResourcesApiRoot}/operationalEnvironments

+

+mso.restapi.cloudResourcesRequestsApiRoot=/cloudResourcesRequests/v1

+mso.restapi.operationalEnvironment.cloudResourcesRequests.status=${mso.restapi.cloudResourcesRequestsApiRoot}?requestId=<request_id>

+

+mso.displayTestAPIOnScreen=true

+mso.defaultTestAPI=GR_API

+mso.maxOpenedInstantiationRequests=20

+mso.asyncPollingIntervalSeconds=1

+refreshTimeInstantiationDashboard=10

+

+vid.truststore.filename=${VID_TRUSTSTORE_FILE}

+vid.truststore.passwd.x=${VID_TRUSTSTORE_PASS}

+mso.dme2.client.timeout=${MSO_DME2_CLIENT_TIMEOUT}

+mso.dme2.client.read.timeout=${MSO_DME2_CLIENT_READ_TIMEOUT}

+mso.dme2.server.url=${MSO_DME2_SERVER_URL}

+mso.dme2.enabled=${MSO_DME2_ENABLED}

+scheduler.basic.auth=

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/conf/fusion.properties b/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/conf/fusion.properties
new file mode 100644
index 0000000..74417aa
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/conf/fusion.properties
@@ -0,0 +1,46 @@
+# login settings

+login_method_backdoor       = backdoor

+login_method_web_junction       = login_method_web_junction

+login_method_csp       = login_method_csp

+login_method_attribute_name = login_method

+authentication_mechanism = BOTH

+role_function_list = role_funcion_list

+

+#login message

+login.error.hrid.empty = Login failed, please contact system administrator. 

+login.error.hrid.not-found = User not found, please contact system administrator.

+login.error.user.inactive = Account is disabled, please contact system administrator.

+

+# User Session settings

+user_attribute_name           = user

+roles_attribute_name          = roles

+role_functions_attribute_name = role_functions

+#client_device_attribute_name  = client_device

+#client_device_emulation       = false

+

+# Import-user LDAP settings

+post_initial_context_factory = com.sun.jndi.ldap.LdapCtxFactory

+post_provider_url            = ldap://ldap.mycompany.com:389

+post_security_principal      = ou=people,o=mycompany,c=us

+post_max_result_size         = 499

+

+# menu settings

+menu_query_name                      = menuData

+#menu_properties_file_location        = /WEB-INF/fusion/menu/

+application_menu_set_name            = APP

+application_menu_attribute_name      = applicationMenuData

+#application_menu_properties_name     = menu.properties

+business_direct_menu_set_name        = BD

+#business_direct_menu_properties_name = bd.menu.properties

+business_direct_menu_attribute_name  = businessDirectMenuData

+

+# RAPTOR config settings

+#raptor_config_file_path = /WEB-INF/conf/

+

+# Role settings

+sys_admin_role_id = 1

+#sys_admin_role_function_delete_from_ui = true

+

+# Profile Search settings

+#profile_search_report_id=181

+#callable_profile_search_report_id=386

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/orm/Fusion.hbm.xml b/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/orm/Fusion.hbm.xml
new file mode 100644
index 0000000..2795668
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/orm/Fusion.hbm.xml
@@ -0,0 +1,394 @@
+<?xml version="1.0"?>

+<!--

+  ============LICENSE_START==========================================

+  ONAP Portal SDK

+  ===================================================================

+  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============================================

+ 

+  

+  -->

+

+<!DOCTYPE hibernate-mapping PUBLIC

+        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

+        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

+

+<hibernate-mapping package="org.onap.portalsdk.core.domain">

+

+     <!-- User class mapping details -->

+    <class name="User" table="FN_USER">

+        <id name="id" column="user_id" > 

+          <generator class="native">

+             <param name="sequence">seq_fn_user</param> 

+          </generator>

+        </id>

+

+        <property name="orgId"         column="org_id"/>

+        <property name="managerId"     column="manager_id"/>

+        <property name="firstName"     column="first_name"/>

+        <property name="middleInitial" column="middle_name"/>

+        <property name="lastName"      column="last_name"/>

+        <property name="phone"         column="phone"/>

+        <property name="fax"           column="fax"/>

+        <property name="cellular"      column="cellular"/>

+        <property name="email"         column="email"/>

+        <property name="addressId"     column="address_id"/>

+        <property name="alertMethodCd" column="alert_method_cd"/>

+

+        <property name="address1"      column="address_line_1"/>

+        <property name="address2"      column="address_line_2"/>

+        <property name="city"          column="city"/>

+        <property name="state"         column="state_cd"/>

+        <property name="zipCode"       column="zip_code"/>

+        <property name="country"       column="country_cd"/>

+

+        <property name="hrid"          column="hrid"/>

+        <property name="orgUserId"     column="org_user_id"/>

+        <property name="orgCode"       column="org_code"/>

+        <property name="loginId"       column="login_id"/>

+        <property name="loginPwd"      column="login_pwd"/>

+        <property name="lastLoginDate" column="last_login_date"  type="timestamp"/>

+

+        <property name="locationClli"  column="location_clli" />

+        <property name="orgManagerUserId" column="org_manager_userid" />

+        <property name="company"       column="company" />

+        <property name="department"    column="department" />

+        <property name="departmentName"    	column="department_name" />

+        <property name="businessUnit"  		column="business_unit" />

+        <property name="businessUnitName"   column="business_unit_name" />

+        <property name="jobTitle"      		column="job_title" />

+        <property name="siloStatus"    		column="silo_status" />

+        <property name="financialLocCode"   column="fin_loc_code" />

+

+        <property name="active"        column="active_yn"       type="yes_no"/>

+        <property name="internal"      column="is_internal_yn"  type="yes_no"/>

+

+        <property name="created"  type="timestamp" column="created_date"  />

+        <property name="modified" type="timestamp" column="modified_date" />

+

+        <property name="createdId"  column="created_id" />

+        <property name="modifiedId" column="modified_id" />

+		<property name="timeZoneId" column="timezone" />

+		

+        <set name="userApps" table="FN_USER_ROLE" lazy="false" sort="natural" inverse="true" cascade="all-delete-orphan">

+            <key column="user_id"/>

+            <one-to-many class="org.onap.portalsdk.core.domain.UserApp" />

+        </set>

+

+        <set name="pseudoRoles" table="FN_USER_PSEUDO_ROLE" lazy="false" sort="natural">

+            <key column="user_id"/>

+            <many-to-many column="pseudo_role_id" class="org.onap.portalsdk.core.domain.Role" />

+        </set>

+    </class>

+

+     <!-- Profile class mapping details;

+     	  dupe of User class, but fewer fields -->

+    <class name="Profile" table="FN_USER">

+        <id name="id" column="user_id" > 

+			<generator class="increment"/>

+        </id>	

+        <property name="first_name"     column="first_name"/>

+        <property name="last_name"      column="last_name"/>

+        <property name="email"         column="email"/>

+        <property name="orgManagerUserId" column="org_manager_userid" />

+        <property name="active_yn"        column="active_yn"/>

+        <property name="orgUserId"         column="org_user_id"/>

+   	</class>

+	

+ 	<class name="UserApp" table="fn_user_role">

+        <composite-id>

+            <key-property name="userId" type="long">

+                <column name="user_id" precision="11" scale="0" />

+            </key-property>

+        	<key-many-to-one name="app" class="org.onap.portalsdk.core.domain.App" column="app_id" />

+        	<key-many-to-one name="role" class="org.onap.portalsdk.core.domain.Role" column="role_id" />

+        </composite-id>

+        <property name="priority" type="java.lang.Short">

+            <column name="priority" precision="4" scale="0" />

+        </property>

+    </class>

+

+    <!-- App class mapping details -->

+    <class name="App" table="fn_app">

+        <id name="id" column="app_id"/>

+        <property name="name" column="app_name"/>

+        <property name="appPassword" column="app_password"/>

+        <property name="username" column="app_username"/>

+		<property name="imageUrl" column="app_image_url"/>

+		<property name="description" column="app_description"/>

+		<property name="notes" column="app_notes"/>

+		<property name="url" column="app_url"/>

+		<property name="alternateUrl" column="app_alternate_url"/>

+		<property name="restEndpoint" column="app_rest_endpoint"/>

+		<property name="mlAppName" column="ml_app_name"/>

+		<property name="mlAppAdminId" column="ml_app_admin_id"/>

+		<property name="motsId" column="mots_id"/>

+		<property name="open" column="open"/>

+		<property name="enabled" column="enabled"/>

+		<property name="thumbnail" column="thumbnail" type="blob"/>

+		<property name="uebKey" column="ueb_key"/>

+		<property name="uebSecret" column="ueb_secret"/>

+		<property name="uebTopicName" column="ueb_topic_name"/>

+    </class>

+

+

+	<!-- Audit Log class mapping details -->

+    <class name="AuditLog" table="fn_audit_log">

+        <id name="id" column="log_id">

+          <!-- <generator class="sequence">

+            <param name="sequence">seq_fn_audit_log</param>

+          </generator> -->

+          <generator class="native">

+			<param name="sequence">seq_fn_audit_log</param>

+		  </generator>

+        </id>

+        <property name="activityCode"      column="activity_cd"/>

+        <property name="affectedRecordId"  column="affected_record_id"  />

+        <property name="comments"          column="comments"  />

+        <property name="createdId"         column="user_id" />

+    </class>

+    

+    <!-- User Role class mapping details -->

+    <class name="Role" table="FN_ROLE">

+        <id name="id" column="role_id">

+           <generator class="native">

+             <param name="sequence">seq_fn_role</param> 

+          </generator>

+        </id>

+

+        <property name="name"      column="role_name"/>

+        <property name="priority"  column="priority" />

+        <property name="active"    column="active_yn"  type="yes_no"/>

+

+        <set name="roleFunctions" table="FN_ROLE_FUNCTION" lazy="false" sort="natural">

+            <key column="role_id"/>

+            <many-to-many column="function_cd" class="org.onap.portalsdk.core.domain.RoleFunction"/>

+        </set>

+

+        <set name="childRoles" table="FN_ROLE_COMPOSITE" lazy="false" sort="natural">

+            <key column="parent_role_id"/>

+            <many-to-many column="child_role_id" class="org.onap.portalsdk.core.domain.Role"/>

+        </set>

+        

+        <set name="parentRoles" table="FN_ROLE_COMPOSITE" lazy="false" sort="natural">

+            <key column="child_role_id"/>

+            <many-to-many column="parent_role_id" class="org.onap.portalsdk.core.domain.Role"/>

+        </set>

+

+    </class>

+    

+ 

+

+    <!-- User Role Function class mapping details -->

+    <class name="RoleFunction" table="FN_FUNCTION">

+        <id        name="code"  column="function_cd"   />

+        <property  name="name"  column="function_name" />

+        <property  name="type"  column="type" />

+        <property  name="action"  column="action" />

+    </class>

+    

+    <!-- Menu class mapping details -->

+    <class name="Menu" table="FN_MENU">

+        <id name="id" column="menu_id">

+          <generator class="native">

+             <param name="sequence">seq_fn_menu</param> 

+          </generator>

+        </id>

+

+         <!-- <property name="menuLevel"   column="level-1"/> -->

+         <property name="label"       column="label"/>

+         <property name="parentId"    column="parent_id"/>

+         <property name="action"      column="action"/>

+         <property name="functionCd"  column="function_cd"/>

+         <property name="sortOrder"   column="sort_order"/>

+         <property name="servlet"     column="servlet"/>

+         <property name="queryString" column="query_string"/>

+         <property name="externalUrl" column="external_url"/>

+         <property name="target"      column="target"/>

+         <property name="menuSetCode" column="menu_set_cd"/>

+         <property name="active"      column="active_yn"    type="yes_no"/>

+         <property name="separator"   column="separator_yn" type="yes_no"/>

+         <property name="imageSrc"    column="image_src" />

+    </class>

+

+    <class name="MenuData" table="FN_MENU">

+        <!--  <id       name="id"          column="menu_id"/> -->

+        <id name="id" column="menu_id">

+          <generator class="native">

+             <param name="sequence">seq_fn_menu</param> 

+          </generator>

+        </id>

+        <property name="label"       column="label"/>

+        <property name="action"      column="action"/>

+        <property name="functionCd"  column="function_cd"/>

+        <property name="sortOrder"   column="sort_order"/>

+        <property name="servlet"     column="servlet"/>

+        <property name="queryString" column="query_string"/>

+        <property name="externalUrl" column="external_url"/>

+        <property name="target"      column="target"/>

+        <property name="active"      column="active_yn"    type="yes_no"/>

+        <property name="separator"   column="separator_yn" type="yes_no"/>

+        <property name="imageSrc"    column="image_src" />

+        <property name="menuSetCode" column="menu_set_cd"  />

+

+        <many-to-one name="parentMenu" column="parent_id" class="MenuData"/>

+

+        <set name="childMenus" lazy="false" sort="natural" inverse="true" where="active_yn = 'Y'">

+            <key column="parent_id"/>

+            <one-to-many class="MenuData"/>

+        </set>

+    </class>

+    

+    <!-- Broadcast Message class mapping details -->

+    <class name="BroadcastMessage" table="fn_broadcast_message">

+        <id name="id" column="message_id">

+            <generator class="native">

+              <param name="sequence">seq_fn_broadcast_message</param>

+            </generator>

+        </id>

+        <property name="messageText" column="message_text"/>

+        <property name="locationId"  column="message_location_id"/>

+

+        <property name="startDate"   column="broadcast_start_date"  type="timestamp"/>

+        <property name="endDate"     column="broadcast_end_date"    type="timestamp"/>

+

+        <property name="sortOrder"   column="sort_order"/>

+        <property name="active"      column="active_yn"             type="yes_no"/>

+

+        <property name="siteCd"      column="broadcast_site_cd"    />

+    </class>

+    

+    

+    <!-- State Lookup class mapping details -->

+    <class name="LuState" table="FN_LU_STATE">

+        <id       name="abbr"  column="state_cd" />

+        <property name="state"                   />

+    </class>

+    

+    <!-- Country Lookup class mapping details -->

+    <class name="LuCountry" table="FN_LU_COUNTRY">

+        <id       name="abbr"  column="country_cd" />

+        <property name="country"                   />

+        <property name="fullName" column="full_name" />

+        <property name="webphoneCountryLabel" column="fullwebphone_country_label_name" />

+    </class>

+    

+    <class name="LuTimeZone" table="FN_LU_TIMEZONE">

+        <id       name="timezoneId"  column="timezone_id" />

+        <property name="name" column="timezone_name" />

+        <property name="value" column="timezone_value" />

+    </class>

+

+

+    <!-- Lookup (id/value bean) class mapping details -->

+    <class name="Lookup">

+        <composite-id  name="nameValueId" class="org.onap.portalsdk.core.domain.support.NameValueId">

+          <key-property name="val"/>

+          <key-property name="lab" />

+        </composite-id>

+    </class>

+

+	<class name="UrlsAccessible" table="V_URL_ACCESS">

+      <composite-id  name="urlsAccessibleKey" class="org.onap.portalsdk.core.domain.UrlsAccessibleKey">

+    	<key-property	name="url"	column="url"/>

+    	<key-property   name="functionCd"	column="function_cd"/>

+      </composite-id>

+    </class>

+

+

+	<query name="ParentIdForLabelList">

+      select distinct md.parentMenu.id from MenuData as md where md.label = :paramLabel and md.label is not null

+    </query>

+    

+	<query name="IdForLabelList">

+      select distinct md.id from MenuData as md where md.label = :paramLabel

+    </query>    

+    

+	<query name="parentList">

+      select distinct md.id, md.label, md.parentMenu.id from MenuData as md where md.label is not null

+    </query>

+    	

+	<query name="functionCDlistOld">

+      select distinct functionCd from MenuData 

+    </query>

+

+	<query name="functionCDlist">

+      select distinct code from RoleFunction 

+    </query>   

+     

+	<query name="menuData">

+      from MenuData where menuSetCode = :menu_set_cd and parentMenu is null

+    </query>

+	<query name="restrictedUrls">

+      FROM UrlsAccessible A where upper(A.urlsAccessibleKey.url) = upper(:current_url)

+    </query>

+

+    <query name="getUserNameById">

+      select firstName, lastName from User where id = :user_id

+    </query>

+

+    <query name="getUserEmail">

+      select email from User where id = :user_id

+    </query>

+

+    <query name="getAllUsers">

+      select id, firstName, lastName from User where active = true order by lastName, firstName

+    </query>

+	

+    <query name="getRoleNameById">

+      select name from Role where id = :role_id

+    </query>

+

+    <query name="getAllRoles">

+      select id, name from Role order by name

+    </query>	

+      

+     <query name="getUserByProfileId">

+      select orgUserId from User where id = :user_id

+     </query>

+    

+     <query name="getUserIdByorgUserId">

+      select id from User where orgUserId = :orgUserId

+     </query>

+

+     <query name="getUserByOrgUserId">

+		FROM User WHERE orgUserId = :org_user_id

+     </query>

+

+     <query name="getUserByLoginId">

+		FROM User WHERE loginId = :login_id

+     </query>

+

+     <query name="getUserByLoginIdLoginPwd">

+		FROM User WHERE loginId = :login_id and loginPwd = :login_pwd		

+     </query>

+

+</hibernate-mapping>

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml b/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml
new file mode 100644
index 0000000..5a71a13
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/orm/RNoteBookIntegration.hbm.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>

+<!--

+  ============LICENSE_START==========================================

+  ONAP Portal SDK

+  ===================================================================

+  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============================================

+ 

+  ECOMP is a trademark and service mark of AT&T Intellectual Property.

+  -->

+

+<!DOCTYPE hibernate-mapping PUBLIC

+        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

+        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

+

+<hibernate-mapping package="org.onap.portalsdk.rnotebookintegration.domain">

+

+    

+	 <!-- RNotebookIntegration mapping details -->

+    <class name="RNoteBookCredentials" table="rcloudinvocation">

+        <id name="token" column="ID"> 

+          

+        </id>

+        <property name="createdDate"         column="created"/>

+        <property name="userString"     column="userInfo"/>

+        <property name="notebookID"     column="notebookID"/>

+        <property name="parametersString" column="parameters"/>

+        <property name="tokenReadDate" column="tokenreaddate"/>

+        

+	</class>

+	

+	

+	

+</hibernate-mapping>

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/orm/Workflow.hbm.xml b/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/orm/Workflow.hbm.xml
new file mode 100644
index 0000000..40a2d15
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/fusion/orm/Workflow.hbm.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>

+<!--

+  ============LICENSE_START==========================================

+  ONAP Portal SDK

+  ===================================================================

+  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============================================

+ 

+  

+  -->

+

+<!DOCTYPE hibernate-mapping PUBLIC

+        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

+        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

+

+<hibernate-mapping package="org.onap.portalsdk.workflow.domain">

+

+    

+	 <!-- WorkflowSchedule mapping details -->

+    <class name="WorkflowSchedule" table="fn_schedule_workflows">

+        <id name="id" column="id_schedule_workflows"> 

+          <generator class="native">

+          </generator>

+        </id>

+

+        <property name="serverUrl"         column="workflow_server_url"/>

+        <property name="workflowKey"     column="workflow_key"/>

+        <property name="arguments"     column="workflow_arguments"/>

+        <property name="cronDetails" column="startDateTimeCron"/>

+        <property name="startDateTime" column="start_date_time"/>

+        <property name="endDateTime" column="endDateTime"/>

+        <property name="recurrence" column="recurrence"/>

+        

+	</class>

+	

+	

+	

+</hibernate-mapping>

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/index.jsp b/onap-enabler-infra/src/main/webapp/WEB-INF/index.jsp
new file mode 100644
index 0000000..b2274ff
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/index.jsp
@@ -0,0 +1,42 @@
+<%--

+  ============LICENSE_START==========================================

+  ONAP Portal SDK

+  ===================================================================

+  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============================================

+ 

+  ECOMP is a trademark and service mark of AT&T Intellectual Property.

+  --%>

+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

+

+<%-- Redirected because we can't set the welcome page to a virtual URL. --%>

+<%-- Forward to the intended start page to reduce frustration for new users. --%> 

+<c:redirect url="/login.htm"></c:redirect>

diff --git a/onap-enabler-infra/src/main/webapp/WEB-INF/web.xml b/onap-enabler-infra/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..d1de1f3
--- /dev/null
+++ b/onap-enabler-infra/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--/*-

+        * ============LICENSE_START=======================================================

+        * OSAM Core

+        * ================================================================================

+        * Copyright (C) 2018 AT&T

+        * ================================================================================

+        * Licensed under the Apache License, Version 2.0 (the "License");

+        * you may not use this file 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.

+        * ============LICENSE_END=========================================================

+        */-->

+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee" 

+         xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

+         version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee">

+

+	<display-name>ecomp-sdk-app-os</display-name>

+

+	<!-- The app can function on a HA cluster -->

+	<distributable />

+

+	<session-config>

+		<session-timeout>30</session-timeout>

+		<tracking-mode>COOKIE</tracking-mode>

+	</session-config>

+	<filter>

+    <filter-name>SecurityXssFilter</filter-name>

+    <filter-class>org.onap.portalapp.filter.SecurityXssFilter</filter-class>

+   </filter> 

+    <filter-mapping>

+    <filter-name>SecurityXssFilter</filter-name>

+    <url-pattern>/*</url-pattern>

+  </filter-mapping>

+

+</web-app>
\ No newline at end of file
diff --git a/onap-enabler-infra/src/test/java/org/onap/portalapp/conf/ExternalAppConfigTest.java b/onap-enabler-infra/src/test/java/org/onap/portalapp/conf/ExternalAppConfigTest.java
new file mode 100644
index 0000000..32faf51
--- /dev/null
+++ b/onap-enabler-infra/src/test/java/org/onap/portalapp/conf/ExternalAppConfigTest.java
@@ -0,0 +1,109 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.conf;

+

+import java.util.List;

+

+import org.junit.Test;

+import org.onap.portalapp.scheduler.RegistryAdapter;

+import org.onap.portalsdk.core.auth.LoginStrategy;

+import org.onap.portalsdk.core.service.DataAccessService;

+import org.springframework.jdbc.datasource.init.DataSourceInitializer;

+import org.springframework.jdbc.datasource.init.DatabasePopulator;

+import org.springframework.scheduling.quartz.SchedulerFactoryBean;

+import org.springframework.web.servlet.ViewResolver;

+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;

+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

+

+public class ExternalAppConfigTest {

+

+    private ExternalAppConfig createTestSubject() {

+        return new ExternalAppConfig();

+    }

+

+    @Test

+    public void testViewResolver() throws Exception {

+        ExternalAppConfig testSubject;

+        ViewResolver result;

+

+        // default test

+        testSubject = createTestSubject();

+        result = testSubject.viewResolver();

+    }

+

+

+

+    @Test

+    public void testDataAccessService() throws Exception {

+        ExternalAppConfig testSubject;

+        DataAccessService result;

+

+        // default test

+        testSubject = createTestSubject();

+        result = testSubject.dataAccessService();

+    }

+

+    @Test

+    public void testAddTileDefinitions() throws Exception {

+        ExternalAppConfig testSubject;

+        List<String> result;

+

+        // default test

+        testSubject = createTestSubject();

+        result = testSubject.addTileDefinitions();

+    }

+

+   

+

+    @Test

+    public void testCacheManager() throws Exception {

+        ExternalAppConfig testSubject;

+        //AbstractCacheManager result;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.cacheManager();

+    }

+   

+

+

+    @Test

+    public void testSetSchedulerRegistryAdapter() throws Exception {

+        ExternalAppConfig testSubject;

+        RegistryAdapter schedulerRegistryAdapter = null;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.setSchedulerRegistryAdapter(schedulerRegistryAdapter);

+    }

+

+    @Test

+    public void testLoginStrategy() throws Exception {

+        ExternalAppConfig testSubject;

+        LoginStrategy result;

+

+        // default test

+        testSubject = createTestSubject();

+        result = testSubject.loginStrategy();

+    }

+}

diff --git a/onap-enabler-infra/src/test/java/org/onap/portalapp/conf/HibernateMappingLocationsTest.java b/onap-enabler-infra/src/test/java/org/onap/portalapp/conf/HibernateMappingLocationsTest.java
new file mode 100644
index 0000000..b07f0ae
--- /dev/null
+++ b/onap-enabler-infra/src/test/java/org/onap/portalapp/conf/HibernateMappingLocationsTest.java
@@ -0,0 +1,51 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.conf;

+

+import org.junit.Test;

+

+public class HibernateMappingLocationsTest {

+

+    private HibernateMappingLocations createTestSubject() {

+        return new HibernateMappingLocations();

+    }

+

+    @Test

+    public void testGetMappingLocations() throws Exception {

+        HibernateMappingLocations testSubject;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.getMappingLocations();

+    }

+

+    @Test

+    public void testGetPackagesToScan() throws Exception {

+        HibernateMappingLocations testSubject;

+        String[] result;

+

+        // default test

+        testSubject = createTestSubject();

+        result = testSubject.getPackagesToScan();

+    }

+}

diff --git a/onap-enabler-infra/src/test/java/org/onap/portalapp/scheduler/RegisterTest.java b/onap-enabler-infra/src/test/java/org/onap/portalapp/scheduler/RegisterTest.java
new file mode 100644
index 0000000..fdbc871
--- /dev/null
+++ b/onap-enabler-infra/src/test/java/org/onap/portalapp/scheduler/RegisterTest.java
@@ -0,0 +1,61 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.scheduler;

+

+import java.util.List;

+

+import org.junit.Test;

+

+public class RegisterTest {

+

+    private Register createTestSubject() {

+        return new Register();

+    }

+

+    @Test

+    public void testGetTriggers() throws Exception {

+        Register testSubject;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.getTriggers();

+    }

+

+    @Test

+    public void testGetScheduleTriggers() throws Exception {

+        Register testSubject;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.getScheduleTriggers();

+    }

+

+    @Test

+    public void testSetScheduleTriggers() throws Exception {

+        Register testSubject;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.setScheduleTriggers(null);

+    }

+}

diff --git a/onap-enabler-infra/src/test/java/org/onap/portalapp/scheduler/RegistryAdapterTest.java b/onap-enabler-infra/src/test/java/org/onap/portalapp/scheduler/RegistryAdapterTest.java
new file mode 100644
index 0000000..19e5420
--- /dev/null
+++ b/onap-enabler-infra/src/test/java/org/onap/portalapp/scheduler/RegistryAdapterTest.java
@@ -0,0 +1,97 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.scheduler;

+

+import java.util.List;

+

+import org.junit.Test;

+import org.onap.portalsdk.core.scheduler.Registerable;

+import org.onap.portalsdk.workflow.services.WorkflowScheduleService;

+import org.springframework.scheduling.quartz.SchedulerFactoryBean;

+

+public class RegistryAdapterTest {

+

+    private RegistryAdapter createTestSubject() {

+        return new RegistryAdapter();

+    }

+

+    @Test

+    public void testSetSchedulerBean() throws Exception {

+        RegistryAdapter testSubject;

+        SchedulerFactoryBean schedulerBean = null;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.setSchedulerBean(schedulerBean);

+    }

+

+    @Test

+    public void testGetSchedulerBean() throws Exception {

+        RegistryAdapter testSubject;

+        SchedulerFactoryBean result;

+

+        // default test

+        testSubject = createTestSubject();

+        result = testSubject.getSchedulerBean();

+    }

+

+    @Test

+    public void testGetRegistry() throws Exception {

+        RegistryAdapter testSubject;

+        Registerable result;

+

+        // default test

+        testSubject = createTestSubject();

+        result = testSubject.getRegistry();

+    }

+

+    @Test

+    public void testSetRegistry() throws Exception {

+        RegistryAdapter testSubject;

+        Registerable registry = null;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.setRegistry(registry);

+    }

+

+    @Test

+    public void testGetWorkflowScheduleService() throws Exception {

+        RegistryAdapter testSubject;

+        WorkflowScheduleService result;

+

+        // default test

+        testSubject = createTestSubject();

+        result = testSubject.getWorkflowScheduleService();

+    }

+

+    @Test

+    public void testSetWorkflowScheduleService() throws Exception {

+        RegistryAdapter testSubject;

+        WorkflowScheduleService workflowScheduleService = null;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.setWorkflowScheduleService(workflowScheduleService);

+    }

+}

diff --git a/onap-enabler-infra/src/test/java/org/onap/portalapp/service/AdminAuthExtensionTest.java b/onap-enabler-infra/src/test/java/org/onap/portalapp/service/AdminAuthExtensionTest.java
new file mode 100644
index 0000000..c1758f5
--- /dev/null
+++ b/onap-enabler-infra/src/test/java/org/onap/portalapp/service/AdminAuthExtensionTest.java
@@ -0,0 +1,67 @@
+/*-

+ * ============LICENSE_START=======================================================

+ * OSAM

+ * ================================================================================

+ * Copyright (C) 2018 AT&T

+ * ================================================================================

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file 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.

+ * ============LICENSE_END=========================================================

+ */

+

+

+

+package org.onap.portalapp.service;

+

+import java.util.Set;

+

+import org.junit.Test;

+import org.onap.portalsdk.core.domain.Role;

+import org.onap.portalsdk.core.domain.User;

+

+public class AdminAuthExtensionTest {

+

+    private AdminAuthExtension createTestSubject() {

+        return new AdminAuthExtension();

+    }

+

+    @Test

+    public void testSaveUserExtension() throws Exception {

+        AdminAuthExtension testSubject;

+        User user = null;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.saveUserExtension(user);

+    }

+

+    @Test

+    public void testEditUserExtension() throws Exception {

+        AdminAuthExtension testSubject;

+        User user = null;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.editUserExtension(user);

+    }

+

+    @Test

+    public void testSaveUserRoleExtension() throws Exception {

+        AdminAuthExtension testSubject;

+        Set<Role> roles = null;

+        User user = null;

+

+        // default test

+        testSubject = createTestSubject();

+        testSubject.saveUserRoleExtension(roles, user);

+    }

+}

diff --git a/onap-enabler-infra/version.properties b/onap-enabler-infra/version.properties
new file mode 100644
index 0000000..113097b
--- /dev/null
+++ b/onap-enabler-infra/version.properties
@@ -0,0 +1,13 @@
+# Versioning variables

+# Note that these variables cannot be structured (e.g. : version.release or version.snapshot etc... )

+# because they are used in Jenkins, whose plug-in doesn't support

+

+major=0

+minor=0

+patch=1

+

+base_version=${major}.${minor}.${patch}

+

+# Release must be completed with git revision # in Jenkins

+release_version=${base_version}

+snapshot_version=${base_version}-SNAPSHOT