/*-
 * ============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: vid_openecomp_epsdk
-- Source Schemata: ecomp_sd
-- Created: Sun Nov 13 08:58:53 2016
-- Workbench Version: 6.3.6
-- ----------------------------------------------------------------------------

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------------------------------------------------------
-- Schema vid_openecomp_epsdk
-- ----------------------------------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `vid_openecomp_epsdk` ;

USE vid_openecomp_epsdk;
-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_favorite_reports
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_filehist_log
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_folder
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`cr_folder` (`FOLDER_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_folder_access
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_hist_user_map
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`cr_report_file_history` (`HIST_ID`),
  CONSTRAINT `sys_c0014617`
    FOREIGN KEY (`USER_ID`)
    REFERENCES `vid_openecomp_epsdk`.`fn_user` (`USER_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_lu_file_type
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_raptor_action_img
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_raptor_pdf_img
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_remote_schema_info
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_report
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_report_access
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`cr_report` (`REP_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_report_dwnld_log
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_report_email_sent_log
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`cr_report` (`REP_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_report_file_history
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`cr_lu_file_type` (`LOOKUP_ID`),
  CONSTRAINT `sys_c0014615`
    FOREIGN KEY (`REP_ID`)
    REFERENCES `vid_openecomp_epsdk`.`cr_report` (`REP_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_report_log
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`cr_report` (`REP_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_report_schedule
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`cr_report` (`REP_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_report_schedule_users
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`cr_report_schedule` (`SCHEDULE_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_report_template_map
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_schedule_activity_log
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.cr_table_join
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`cr_table_source` (`TABLE_NAME`),
  CONSTRAINT `fk_cr_table_ref_315_cr_tab`
    FOREIGN KEY (`DEST_TABLE_NAME`)
    REFERENCES `vid_openecomp_epsdk`.`cr_table_source` (`TABLE_NAME`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_table_role
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`cr_table_source` (`TABLE_NAME`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.cr_table_source
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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_openecomp_epsdk.demo_bar_chart
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`demo_bar_chart` (
  `label` VARCHAR(20) NULL DEFAULT NULL,
  `value` DECIMAL(25,15) NULL DEFAULT NULL)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.demo_bar_chart_inter
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`demo_bar_chart_inter` (
  `spam_date` DATE NULL DEFAULT NULL,
  `num_rpt_sources` DECIMAL(10,0) NULL DEFAULT NULL,
  `num_det_sources` DECIMAL(10,0) NULL DEFAULT NULL)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.demo_line_chart
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`demo_line_chart` (
  `series` VARCHAR(20) NULL DEFAULT NULL,
  `log_date` DATE NULL DEFAULT NULL,
  `data_value` DECIMAL(10,5) NULL DEFAULT NULL)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.demo_pie_chart
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`demo_pie_chart` (
  `legend` VARCHAR(20) NULL DEFAULT NULL,
  `data_value` DECIMAL(10,5) NULL DEFAULT NULL)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.demo_scatter_chart
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`demo_scatter_chart` (
  `rainfall` DECIMAL(10,2) NULL DEFAULT NULL,
  `key_value` VARCHAR(20) NULL DEFAULT NULL,
  `measurements` DECIMAL(10,2) NULL DEFAULT NULL)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.demo_scatter_plot
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`demo_scatter_plot` (
  `SERIES` VARCHAR(20) NULL DEFAULT NULL,
  `VALUEX` DECIMAL(25,15) NULL DEFAULT NULL,
  `VALUEY` DECIMAL(25,15) NULL DEFAULT NULL)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.demo_util_chart
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`demo_util_chart` (
  `traffic_date` DATE NULL DEFAULT NULL,
  `util_perc` DECIMAL(10,5) NULL DEFAULT NULL)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_app
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_audit_action
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_audit_action_log
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_audit_log
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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_209_FN_USER`
    FOREIGN KEY (`USER_ID`)
    REFERENCES `vid_openecomp_epsdk`.`fn_user` (`USER_ID`),
  CONSTRAINT `fk_fn_audit_ref_205_fn_lu_ac`
    FOREIGN KEY (`ACTIVITY_CD`)
    REFERENCES `vid_openecomp_epsdk`.`fn_lu_activity` (`ACTIVITY_CD`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_broadcast_message
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_chat_logs
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_chat_room
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_chat_users
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_datasource
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_function
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`fn_function` (
  `FUNCTION_CD` VARCHAR(30) NOT NULL,
  `FUNCTION_NAME` VARCHAR(50) NOT NULL,
  PRIMARY KEY (`FUNCTION_CD`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_lu_activity
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_lu_alert_method
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_lu_broadcast_site
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_lu_menu_set
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_lu_message_location
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`fn_lu_message_location` (
  `message_location_id` DECIMAL(11,0) NOT NULL,
  `message_location_descr` VARCHAR(30) NOT NULL,
  PRIMARY KEY (`message_location_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_lu_priority
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_lu_role_type
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_lu_tab_set
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_lu_timezone
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_menu
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_lu_menu_set` (`MENU_SET_CD`),
  CONSTRAINT `FK_FN_MENU_REF_196_FN_MENU`
    FOREIGN KEY (`PARENT_ID`)
    REFERENCES `vid_openecomp_epsdk`.`fn_menu` (`MENU_ID`),
  CONSTRAINT `FK_FN_MENU_REF_223_FN_FUNCT`
    FOREIGN KEY (`FUNCTION_CD`)
    REFERENCES `vid_openecomp_epsdk`.`fn_function` (`FUNCTION_CD`))
ENGINE = InnoDB
AUTO_INCREMENT = 150039
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_org
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_qz_blob_triggers
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_qz_triggers` (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_qz_calendars
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_qz_cron_triggers
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_qz_triggers` (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_qz_fired_triggers
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_qz_job_details
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_qz_locks
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_qz_paused_trigger_grps
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_qz_scheduler_state
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_qz_simple_triggers
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_qz_triggers` (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_qz_simprop_triggers
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_qz_triggers` (`SCHED_NAME` , `TRIGGER_NAME` , `TRIGGER_GROUP`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_qz_triggers
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_qz_job_details` (`SCHED_NAME` , `JOB_NAME` , `JOB_GROUP`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_restricted_url
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_function` (`FUNCTION_CD`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_role
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`fn_role` (
  `ROLE_ID` INT(11) NOT NULL AUTO_INCREMENT,
  `ROLE_NAME` VARCHAR(50) 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;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_role_composite
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_role` (`ROLE_ID`),
  CONSTRAINT `FK_FN_ROLE_COMPOSITE_PARENT`
    FOREIGN KEY (`PARENT_ROLE_ID`)
    REFERENCES `vid_openecomp_epsdk`.`fn_role` (`ROLE_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_role_function
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_role` (`ROLE_ID`),
  CONSTRAINT `fk_fn_role__ref_201_fn_funct`
    FOREIGN KEY (`FUNCTION_CD`)
    REFERENCES `vid_openecomp_epsdk`.`fn_function` (`FUNCTION_CD`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_schedule_workflows
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.fn_tab
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_function` (`FUNCTION_CD`),
  CONSTRAINT `fk_fn_tab_set_cd`
    FOREIGN KEY (`TAB_SET_CD`)
    REFERENCES `vid_openecomp_epsdk`.`fn_lu_tab_set` (`TAB_SET_CD`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_tab_selected
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_tab` (`TAB_CD`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_user
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_org` (`ORG_ID`),
  CONSTRAINT `fk_fn_user_ref_123_fn_lu_al`
    FOREIGN KEY (`ALERT_METHOD_CD`)
    REFERENCES `vid_openecomp_epsdk`.`fn_lu_alert_method` (`ALERT_METHOD_CD`),
  CONSTRAINT `fk_fn_user_ref_197_fn_user`
    FOREIGN KEY (`MANAGER_ID`)
    REFERENCES `vid_openecomp_epsdk`.`fn_user` (`USER_ID`),
  CONSTRAINT `fk_fn_user_ref_198_fn_user`
    FOREIGN KEY (`CREATED_ID`)
    REFERENCES `vid_openecomp_epsdk`.`fn_user` (`USER_ID`),
  CONSTRAINT `fk_fn_user_ref_199_fn_user`
    FOREIGN KEY (`MODIFIED_ID`)
    REFERENCES `vid_openecomp_epsdk`.`fn_user` (`USER_ID`),
  CONSTRAINT `fk_timezone`
    FOREIGN KEY (`TIMEZONE`)
    REFERENCES `vid_openecomp_epsdk`.`fn_lu_timezone` (`TIMEZONE_ID`))
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_user_pseudo_role
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_role` (`ROLE_ID`),
  CONSTRAINT `fk_pseudo_role_user_id`
    FOREIGN KEY (`USER_ID`)
    REFERENCES `vid_openecomp_epsdk`.`fn_user` (`USER_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_user_role
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 `vid_openecomp_epsdk`.`fn_user` (`USER_ID`),
  CONSTRAINT `FK_FN_USER__REF_175_FN_ROLE`
    FOREIGN KEY (`ROLE_ID`)
    REFERENCES `vid_openecomp_epsdk`.`fn_role` (`ROLE_ID`),
  CONSTRAINT `fk_fn_user__ref_178_fn_app`
    FOREIGN KEY (`APP_ID`)
    REFERENCES `vid_openecomp_epsdk`.`fn_app` (`APP_ID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.fn_workflow
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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 vid_openecomp_epsdk.rcloudinvocation
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`rcloudinvocation` (
  `id` VARCHAR(128) NOT NULL,
  `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `userinfo` VARCHAR(2048) NOT NULL,
  `notebookid` VARCHAR(128) NOT NULL,
  `parameters` VARCHAR(2048) NULL DEFAULT NULL,
  `tokenreaddate` TIMESTAMP NULL DEFAULT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.rcloudnotebook
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`rcloudnotebook` (
  `notebookname` VARCHAR(128) NOT NULL,
  `notebookid` VARCHAR(128) NOT NULL,
  PRIMARY KEY (`notebookname`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

-- ----------------------------------------------------------------------------
-- Table vid_openecomp_epsdk.schema_info
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`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;

-- ----------------------------------------------------------------------------
-- View vid_openecomp_epsdk.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;

