Merge "Fix reading entity"
diff --git a/deliveries/src/main/docker/docker-files/Dockerfile b/deliveries/src/main/docker/docker-files/Dockerfile
index 8cd2bc7..4b04e22 100755
--- a/deliveries/src/main/docker/docker-files/Dockerfile
+++ b/deliveries/src/main/docker/docker-files/Dockerfile
@@ -1,13 +1,14 @@
 FROM tomcat:8.0-jre8

+

 # add vim and uncomment alias to speedup troubleshooting purpose

 RUN apt-get update && apt-get install -y \

 	openjdk-8-jdk vim net-tools

 

+COPY conf.d/ /etc/onap/vid/conf.d/

+

 RUN sed -i 's/# alias/alias/g' /root/.bashrc

 

-RUN mkdir -p ${ROOT_DIR}/etc

-

-ENV JAVA_OPTS="-Xmx1536m -Xms1536m"

+ENV JAVA_OPTS="-Xmx1536m -Xms1536m -Dlogback.configurationFile=/etc/onap/vid/conf.d/logback.xml"

 

 ENV ROOT_DIR /opt/app/vid

 

@@ -87,4 +88,4 @@
 

 RUN chmod +x /tmp/vid/localize.sh

 

-CMD ["/tmp/vid/localize.sh"]

+CMD ["/tmp/vid/localize.sh"]
\ No newline at end of file
diff --git a/epsdk-app-onap/src/main/resources/logback.xml b/deliveries/src/main/docker/docker-files/conf.d/logback.xml
similarity index 99%
rename from epsdk-app-onap/src/main/resources/logback.xml
rename to deliveries/src/main/docker/docker-files/conf.d/logback.xml
index 14b534d..09d2414 100755
--- a/epsdk-app-onap/src/main/resources/logback.xml
+++ b/deliveries/src/main/docker/docker-files/conf.d/logback.xml
@@ -1,371 +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>

+<?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/epsdk-app-onap/src/main/resources/logback_template.xml b/deliveries/src/main/docker/docker-files/conf.d/logback_template.xml
similarity index 99%
rename from epsdk-app-onap/src/main/resources/logback_template.xml
rename to deliveries/src/main/docker/docker-files/conf.d/logback_template.xml
index 8753dd8..bbc58cf 100755
--- a/epsdk-app-onap/src/main/resources/logback_template.xml
+++ b/deliveries/src/main/docker/docker-files/conf.d/logback_template.xml
@@ -1,341 +1,341 @@
-<?xml version="1.0" encoding="UTF-8"?>

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

+<?xml version="1.0" encoding="UTF-8"?>
+<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/deliveries/src/main/scripts/localize_logback.sh b/deliveries/src/main/scripts/localize_logback.sh
index a0f1773..90ce883 100755
--- a/deliveries/src/main/scripts/localize_logback.sh
+++ b/deliveries/src/main/scripts/localize_logback.sh
@@ -1,7 +1,8 @@
 #!/bin/bash
 
-FINAL_CONFIG_FILE=$1/classes/logback.xml
-TEMPLATE_CONFIG_FILE=$1/classes/logback_template.xml
+BASE_DIR=/etc/onap/vid/conf.d
+FINAL_CONFIG_FILE=${BASE_DIR}/logback.xml
+TEMPLATE_CONFIG_FILE=${BASE_DIR}/logback_template.xml
 
 echo "Localizing the VID logback configuration"
 
diff --git a/deliveries/src/main/scripts/localize_war.sh b/deliveries/src/main/scripts/localize_war.sh
index 99cb177..53a928e 100755
--- a/deliveries/src/main/scripts/localize_war.sh
+++ b/deliveries/src/main/scripts/localize_war.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-source /tmp/vid/localize_logback.sh $1 || {
+source /tmp/vid/localize_logback.sh || {
 	echo "ERROR: Localizing logback.xml failed"
 	exit 1
 }
diff --git a/docs/offeredapis.rst b/docs/offeredapis.rst
index 4408bf6..4ee1261 100644
--- a/docs/offeredapis.rst
+++ b/docs/offeredapis.rst
@@ -17,7 +17,7 @@
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 |                     |          |                                                       | - statusCode Either 200 or 500                                                                                                                                                            |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|                     |          |                                                       | - The message contains additional detail in the case of an error, and is empty in the case of success.                                                                                    |
+|                     |          |                                                       | - detailedMsg of the result, in case of failure particular error message                                                                                                                  |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 |                     |          |                                                       |                                                                                                                                                                                           |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -25,11 +25,11 @@
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 |                     |          |                                                       | {                                                                                                                                                                                         |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|                     |          |                                                       | “statusCode”:200,                                                                                                                                                                         |
+|                     |          |                                                       | “statusCode”: 200,                                                                                                                                                                        |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|                     |          |                                                       | “message”:“health check succeeded”,                                                                                                                                                       |
+|                     |          |                                                       | “detailedMsg”: “health check succeeded”,                                                                                                                                                  |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|                     |          |                                                       | “date”:null                                                                                                                                                                               |
+|                     |          |                                                       | “date”: current date                                                                                                                                                                      |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 |                     |          |                                                       | }                                                                                                                                                                                         |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -47,7 +47,7 @@
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 |                     |          |                                                       | - statusCode Either 200 or 500                                                                                                                                                            |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|                     |          |                                                       | - message contains additional detail in the case of an error, and is empty in the case of success.                                                                                        |
+|                     |          |                                                       | - detailedMsg of the result, in case of failure particular error message                                                                                                                  |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 |                     |          |                                                       | - date string indicating the current date & time                                                                                                                                          |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -57,9 +57,9 @@
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 |                     |          |                                                       | {                                                                                                                                                                                         |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|                     |          |                                                       | “statusCode”:200,                                                                                                                                                                         |
+|                     |          |                                                       | “statusCode”: 200,                                                                                                                                                                        |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|                     |          |                                                       | “message”:“health check succeeded”,                                                                                                                                                       |
+|                     |          |                                                       | “detailedMsg”: “health check succeeded”,                                                                                                                                                  |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 |                     |          |                                                       | “date”: current date                                                                                                                                                                      |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -69,6 +69,38 @@
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 |                     |          |                                                       |                                                                                                                                                                                           |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Commit Version      | GET      | /commitInfo                                           | Displays info about the last commit of the running build                                                                                                                                  |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       |                                                                                                                                                                                           |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       | return response entity:                                                                                                                                                                   |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       | - commitId full id of the commit                                                                                                                                                          |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       | - commitMessageShort short message from the commit                                                                                                                                        |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       | - commitTime time of the commit                                                                                                                                                           |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       |                                                                                                                                                                                           |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       | Expected:                                                                                                                                                                                 |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       | {                                                                                                                                                                                         |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       | “commitId”: id of the last commit                                                                                                                                                         |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       | “commitMessageShort”: short message of the last commit                                                                                                                                    |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       | “commitTime”: time of the last commit                                                                                                                                                     |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       | }                                                                                                                                                                                         |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       |                                                                                                                                                                                           |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       |                                                                                                                                                                                           |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|                     |          |                                                       |                                                                                                                                                                                           |
++---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | Change management   | GET      | change-management/workflow {vnfStringsList}           | Get Workflow details for the VNFs list                                                                                                                                                    |
 +---------------------+----------+-------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 |                     |          |                                                       |                                                                                                                                                                                           |
diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java
index 12cc68e..86e832b 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java
@@ -25,7 +25,7 @@
 import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.vid.dao.FnAppDoaImpl;
 import org.onap.vid.model.GitRepositoryState;
-import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -38,6 +38,9 @@
 import java.util.Date;
 import java.util.Properties;
 
+import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
+import static org.springframework.http.HttpStatus.OK;
+
 /**
  * Controller for user profile view. The view is restricted to authenticated
  * users. The view name resolves to page user_profile.jsp which uses Angular.
@@ -47,151 +50,39 @@
 @RequestMapping("/")
 public class HealthCheckController extends UnRestrictedBaseController {
 
-    /**
-     * The logger.
-     */
     private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(HealthCheckController.class);
-
-    /**
-     * The Constant dateFormat.
-     */
-    final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
-
-    private static final String HEALTH_CHECK_PATH = "/healthCheck";
+    private static final DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
     private static final String GIT_PROPERTIES_FILENAME = "git.properties";
+    private FnAppDoaImpl fnAppDoaImpl;
 
-    /**
-     * Model for JSON response with health-check results.
-     */
-    public class HealthStatus {
-        // Either 200 or 500
-        public int statusCode;
-
-        // Additional detail in case of error, empty in case of success.
-        public String message;
-
-        public String date;
-
-        public HealthStatus(int code, String msg) {
-            this.statusCode = code;
-            this.message = msg;
-        }
-
-        public HealthStatus(int code, String date, String msg) {
-            this.statusCode = code;
-            this.message = msg;
-            this.date = date;
-        }
-
-        public int getStatusCode() {
-            return statusCode;
-        }
-
-        public void setStatusCode(int code) {
-            this.statusCode = code;
-        }
-
-        public String getMessage() {
-            return message;
-        }
-
-        public void setMessage(String msg) {
-            this.message = msg;
-        }
-
-        public String getDate() {
-            return date;
-        }
-
-        public void setDate(String date) {
-            this.date = date;
-        }
-
+    @Autowired
+    public HealthCheckController(FnAppDoaImpl fnAppDoaImpl) {
+        this.fnAppDoaImpl = fnAppDoaImpl;
     }
 
-    @SuppressWarnings("unchecked")
-    public int getProfileCount(String driver, String URL, String username, String password) {
-        FnAppDoaImpl doa = new FnAppDoaImpl();
-        int count = doa.getProfileCount(driver, URL, username, password);
-        return count;
-    }
-
-
     /**
      * Obtain the HealthCheck Status from the System.Properties file.
      * Used by IDNS for redundancy
      *
      * @return ResponseEntity The response entity
-     * @throws IOException Signals that an I/O exception has occurred.
      */
     @RequestMapping(value = "/healthCheck", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
-    public HealthStatus gethealthCheckStatusforIDNS() {
-
-        String driver = SystemProperties.getProperty("db.driver");
-        String URL = SystemProperties.getProperty("db.connectionURL");
-        String username = SystemProperties.getProperty("db.userName");
-        String password = SystemProperties.getProperty("db.password");
-
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, "driver ::" + driver);
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, "URL::" + URL);
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, "username::" + username);
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, "password::" + password);
-
-
-        HealthStatus healthStatus = null;
-        try {
-            LOGGER.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
-            int count = getProfileCount(driver, URL, username, password);
-            LOGGER.debug(EELFLoggerDelegate.debugLogger, "count:::" + count);
-            healthStatus = new HealthStatus(200, "health check succeeded");
-        } catch (Exception ex) {
-
-            LOGGER.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
-            healthStatus = new HealthStatus(500, "health check failed: " + ex.toString());
-        }
-        return healthStatus;
+    public HealthStatus getHealthCheckStatusForIDNS() {
+        return createCorrespondingStatus();
     }
 
     /**
      * Obtain the  HealthCheck Status from the System.Properties file.
      *
      * @return ResponseEntity The response entity
-     * @throws IOException Signals that an I/O exception has occurred.
-     *                     Project :
      */
     @RequestMapping(value = "rest/healthCheck/{User-Agent}/{X-ECOMP-RequestID}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
     public HealthStatus getHealthCheck(
             @PathVariable("User-Agent") String UserAgent,
             @PathVariable("X-ECOMP-RequestID") String ECOMPRequestID) {
-
-        String driver = SystemProperties.getProperty("db.driver");
-        String URL = SystemProperties.getProperty("db.connectionURL");
-        String username = SystemProperties.getProperty("db.userName");
-        String password = SystemProperties.getProperty("db.password");
-
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, "driver ::" + driver);
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, "URL::" + URL);
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, "username::" + username);
-        LOGGER.debug(EELFLoggerDelegate.debugLogger, "password::" + password);
-
-
-        HealthStatus healthStatus = null;
-        try {
-            LOGGER.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
-            LOGGER.debug(EELFLoggerDelegate.debugLogger, "User-Agent" + UserAgent);
-            LOGGER.debug(EELFLoggerDelegate.debugLogger, "X-ECOMP-RequestID" + ECOMPRequestID);
-
-
-            int count = getProfileCount(driver, URL, username, password);
-
-            LOGGER.debug(EELFLoggerDelegate.debugLogger, "count:::" + count);
-            healthStatus = new HealthStatus(200, dateFormat.format(new Date()), "health check succeeded");
-        } catch (Exception ex) {
-
-            LOGGER.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
-            healthStatus = new HealthStatus(500, dateFormat.format(new Date()), "health check failed: " + ex.toString());
-        }
-        return healthStatus;
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "User-Agent ", UserAgent);
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "X-ECOMP-RequestID ", ECOMPRequestID);
+        return createCorrespondingStatus();
     }
 
     @RequestMapping(value = "/commitInfo", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@@ -200,5 +91,45 @@
         properties.load(getClass().getClassLoader().getResourceAsStream(GIT_PROPERTIES_FILENAME));
         return new GitRepositoryState(properties);
     }
+
+    private HealthStatus createCorrespondingStatus() {
+        logData();
+        try {
+            int count = fnAppDoaImpl.getProfileCount(getUrl(), getUsername(), getPassword());
+            LOGGER.debug(EELFLoggerDelegate.debugLogger, "count:::", count);
+            return okStatus();
+        } catch (Exception ex) {
+            String errorMsg = ex.getMessage();
+            LOGGER.error(EELFLoggerDelegate.errorLogger, errorMsg);
+            return errorStatus(errorMsg);
+        }
+    }
+
+    private void logData() {
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "URL::", getUrl());
+        LOGGER.debug(EELFLoggerDelegate.debugLogger, "username::", getUsername());
+    }
+
+    private HealthStatus okStatus() {
+        return new HealthStatus(OK, dateFormat.format(new Date()), "health check succeeded");
+    }
+
+    private HealthStatus errorStatus(String msg) {
+        return new HealthStatus(INTERNAL_SERVER_ERROR, dateFormat.format(
+                new Date()), "health check failed: " + msg);
+    }
+
+    private String getUrl() {
+        return SystemProperties.getProperty("db.connectionURL");
+    }
+
+    private String getUsername() {
+        return SystemProperties.getProperty("db.userName");
+    }
+
+    private String getPassword() {
+        return SystemProperties.getProperty("db.password");
+    }
 }
 
diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/HealthStatus.java b/vid-app-common/src/main/java/org/onap/vid/controllers/HealthStatus.java
new file mode 100644
index 0000000..6056c28
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/controllers/HealthStatus.java
@@ -0,0 +1,31 @@
+package org.onap.vid.controllers;
+
+import org.springframework.http.HttpStatus;
+
+/**
+ * Model for JSON response with health-check results.
+ */
+public final class HealthStatus {
+
+    private final int statusCode;
+    private final String detailedMsg;
+    private final String date;
+
+    public HealthStatus(HttpStatus code, String date, String detailedMsg) {
+        this.statusCode = code.value();
+        this.detailedMsg = detailedMsg;
+        this.date = date;
+    }
+
+    public int getStatusCode() {
+        return statusCode;
+    }
+
+    public String getDetailedMsg() {
+        return detailedMsg;
+    }
+
+    public String getDate() {
+        return date;
+    }
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/dao/ConnectionFactory.java b/vid-app-common/src/main/java/org/onap/vid/dao/ConnectionFactory.java
new file mode 100644
index 0000000..bd7a67b
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/dao/ConnectionFactory.java
@@ -0,0 +1,20 @@
+package org.onap.vid.dao;
+
+import org.springframework.stereotype.Component;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+@Component
+public class ConnectionFactory {
+
+    public Connection getConnection(String url, String username, String password) throws SQLException {
+        checkNotNull(url);
+        checkNotNull(username);
+        checkNotNull(password);
+        return DriverManager.getConnection(url, username, password);
+    }
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/dao/FnAppDoaImpl.java b/vid-app-common/src/main/java/org/onap/vid/dao/FnAppDoaImpl.java
index 65fc521..e3fdc95 100644
--- a/vid-app-common/src/main/java/org/onap/vid/dao/FnAppDoaImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/dao/FnAppDoaImpl.java
@@ -7,9 +7,9 @@
  * 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.
@@ -21,94 +21,38 @@
 package org.onap.vid.dao;
 
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
 
 import java.sql.*;
 
-
+@Repository
 public class FnAppDoaImpl {
 
-	/** The logger. */
-	static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnAppDoaImpl.class);
-		
-		public int getProfileCount(String driver, String URL, String username, String password) {
-			Connection dbc = null;
-			PreparedStatement pst = null;
-			ResultSet rs = null;
-			String q = null;
-			int count = 0;
-			try {
-				 	dbc = getConnection(URL,username,password);
-				   logger.debug(EELFLoggerDelegate.debugLogger, "getConnection:::"+ dbc);
-				q = "select count(*) from fn_app";
-					pst = dbc.prepareStatement(q);
-					rs = pst.executeQuery();
-					
-					if (rs.next())
-						count = rs.getInt(1);
-			} catch(Exception ex) {
-				logger.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
-			} finally {
-				cleanup(rs,pst,dbc);
-			}
-			logger.debug(EELFLoggerDelegate.debugLogger, "count:::"+ count);
-			return count;
-		}
+    static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FnAppDoaImpl.class);
 
-		public static Connection getConnection(String url, String username, String password) throws SQLException {
-			java.sql.Connection con=null;
-		
-			if( url!=null && username!=null && password!=null ){
-			    con = DriverManager.getConnection(url, username, password);
-			}
+    private ConnectionFactory connectionFactory;
 
-			logger.info("Connection Successful");
+    @Autowired
+    public FnAppDoaImpl(ConnectionFactory connectionFactory) {
+        this.connectionFactory = connectionFactory;
+    }
 
-			return con;
-			
-		}
-		
-		public static void cleanup(ResultSet rs, PreparedStatement st, Connection c) {
-			if (rs != null) {
-				closeResultSet(rs);
-			}
-			if (st != null) {
-				closePreparedStatement(st);
-			}
-			if (c != null) {
-				rollbackAndCloseConnection(c);
-			}
-		}
-
-	private static void rollbackAndCloseConnection(Connection c) {
-		try {
-            c.rollback();
-        } catch (Exception e) {
-            if (logger != null)
-                logger.error("Error when trying to rollback connection", e);
+    public int getProfileCount(String URL, String username, String password) throws SQLException {
+        String q = "select count(*) from fn_app";
+        int count = 0;
+        try (Connection dbc = connectionFactory.getConnection(URL, username, password);
+             PreparedStatement pst = dbc.prepareStatement(q); ResultSet rs = pst.executeQuery()) {
+            logger.debug(EELFLoggerDelegate.debugLogger, "getConnection:::", dbc);
+            if (rs.next()) {
+                count = rs.getInt(1);
+            }
+        } catch (SQLException ex) {
+            logger.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check", ex);
+            throw ex;
         }
-		try {
-            c.close();
-        } catch (Exception e) {
-            if (logger != null)
-                logger.error("Error when trying to close connection", e);
-        }
-	}
 
-	private static void closePreparedStatement(PreparedStatement st) {
-		try {
-            st.close();
-        } catch (Exception e) {
-            if (logger != null)
-                logger.error("Error when trying to close statement", e);
-        }
-	}
-
-	private static void closeResultSet(ResultSet rs) {
-		try {
-            rs.close();
-        } catch (Exception e) {
-            if (logger != null)
-                logger.error("Error when trying to close result set", e);
-        }
-	}
+        logger.debug(EELFLoggerDelegate.debugLogger, "count:::", count);
+        return count;
+    }
 }
diff --git a/vid-app-common/src/test/java/org/onap/vid/controllers/HealthCheckControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controllers/HealthCheckControllerTest.java
index 6055bc3..da9cdaa 100644
--- a/vid-app-common/src/test/java/org/onap/vid/controllers/HealthCheckControllerTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/controllers/HealthCheckControllerTest.java
@@ -3,65 +3,99 @@
 import org.apache.log4j.BasicConfigurator;
 import org.junit.Before;
 import org.junit.Test;
-import org.onap.vid.controllers.HealthCheckController.HealthStatus;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.vid.dao.FnAppDoaImpl;
 import org.springframework.http.MediaType;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
+import java.sql.SQLException;
+
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Matchers.anyString;
+import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
+import static org.springframework.http.HttpStatus.OK;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
-
+@RunWith(MockitoJUnitRunner.class)
 public class HealthCheckControllerTest {
 
-	private HealthCheckController testSubject;
-	private MockMvc mockMvc;
+    private static final String ERROR_MESSAGE = "error message";
+    private HealthCheckController testSubject;
+    private MockMvc mockMvc;
 
-	@Before
-	public void setUp() {
-		testSubject = new HealthCheckController();
-		BasicConfigurator.configure();
-		mockMvc = MockMvcBuilders.standaloneSetup(testSubject).build();
-	}
+    @Mock
+    private FnAppDoaImpl fnAppDoa;
 
-	@Test
-	public void testGetProfileCount() throws Exception {
-		String driver = "";
-		String URL = "";
-		String username = "";
-		String password = "";
-		int result;
+    @Before
+    public void setUp() {
+        testSubject = new HealthCheckController(fnAppDoa);
+        BasicConfigurator.configure();
+        mockMvc = MockMvcBuilders.standaloneSetup(testSubject).build();
+    }
 
-		// default test
-		result = testSubject.getProfileCount(driver, URL, username, password);
-	}
+    @Test
+    public void getHealthCheckStatusForIDNS_shouldReturnSuccess_whenNoExceptionIsThrown() throws Exception {
+        databaseConnectionEstablished();
+        mockMvc.perform(get("/healthCheck")
+                .accept(MediaType.APPLICATION_JSON))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.statusCode").value(OK.value()))
+                .andExpect(jsonPath("$.detailedMsg").value("health check succeeded"));
+    }
 
-	@Test
-	public void testGethealthCheckStatusforIDNS() throws Exception {
-		HealthStatus result;
+    @Test
+    public void getHealthCheckStatusForIDNS_shouldReturnErrorCode_whenExceptionIsThrown() throws Exception {
+        databaseNotAccessible();
+        mockMvc.perform(get("/healthCheck")
+                .accept(MediaType.APPLICATION_JSON))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.statusCode").value(INTERNAL_SERVER_ERROR.value()))
+                .andExpect(jsonPath("$.detailedMsg").value("health check failed: " + ERROR_MESSAGE));
+    }
 
-		// default test
-		result = testSubject.gethealthCheckStatusforIDNS();
-	}
+    @Test
+    public void getHealthCheck_shouldReturnSuccess_whenNoExceptionIsThrown() throws Exception {
+        databaseConnectionEstablished();
+        mockMvc.perform(get("/rest/healthCheck/{User-Agent}/{X-ECOMP-RequestID}", "userAgent", "requestId")
+                .accept(MediaType.APPLICATION_JSON))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.statusCode").value(OK.value()))
+                .andExpect(jsonPath("$.detailedMsg").value("health check succeeded"))
+                .andExpect(jsonPath("$.date").isString());
+    }
 
-	@Test
-	public void testGetHealthCheck() throws Exception {
-		String UserAgent = "";
-		String ECOMPRequestID = "";
-		HealthStatus result;
+    @Test
+    public void getHealthCheck_shouldReturnErrorCode_whenExceptionIsThrown() throws Exception {
+        databaseNotAccessible();
+        mockMvc.perform(get("/rest/healthCheck/{User-Agent}/{X-ECOMP-RequestID}", "userAgent", "requestId")
+                .accept(MediaType.APPLICATION_JSON))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.statusCode").value(INTERNAL_SERVER_ERROR.value()))
+                .andExpect(jsonPath("$.detailedMsg").value("health check failed: " + ERROR_MESSAGE));
+    }
 
-		// default test
-		result = testSubject.getHealthCheck(UserAgent, ECOMPRequestID);
-	}
+    @Test
+    public void getCommitInfo_shouldReturnCommitData_whenCorrectPropertiesFileExists() throws Exception {
+        mockMvc.perform(get("/commitInfo")
+                .accept(MediaType.APPLICATION_JSON))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.commitId").value("123"))
+                .andExpect(jsonPath("$.commitMessageShort").value("Test short commit message"))
+                .andExpect(jsonPath("$.commitTime").value("1999-09-12T13:48:55+0200"));
+    }
 
-	@Test
-	public void testCommitInfoEndpoint() throws Exception {
-		mockMvc.perform(get("/commitInfo")
-				.accept(MediaType.APPLICATION_JSON))
-				.andExpect(status().isOk())
-				.andExpect(jsonPath("$.commitId").value("123987"))
-				.andExpect(jsonPath("$.commitMessageShort").value("Test short commit message"))
-				.andExpect(jsonPath("$.commitTime").value("1999-09-12T13:48:55+0200"));
-	}
+    private void databaseConnectionEstablished() throws SQLException {
+        given(fnAppDoa.getProfileCount(anyString(), anyString(), anyString()))
+                .willReturn(0);
+    }
+
+    private void databaseNotAccessible() throws SQLException {
+        given(fnAppDoa.getProfileCount(anyString(), anyString(), anyString()))
+                .willThrow(new SQLException(ERROR_MESSAGE));
+    }
 }
\ No newline at end of file
diff --git a/vid-app-common/src/test/java/org/onap/vid/dao/FnAppDoaImplTest.java b/vid-app-common/src/test/java/org/onap/vid/dao/FnAppDoaImplTest.java
index e7a7e3a..2c2aa89 100644
--- a/vid-app-common/src/test/java/org/onap/vid/dao/FnAppDoaImplTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/dao/FnAppDoaImplTest.java
@@ -3,95 +3,67 @@
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.SQLException;
 
-import org.junit.Assert;
+import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
 
+import static org.assertj.core.api.Java6Assertions.assertThat;
+import static org.assertj.core.api.Java6Assertions.assertThatThrownBy;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Matchers.anyString;
+
+@RunWith(MockitoJUnitRunner.class)
 public class FnAppDoaImplTest {
 
-    private FnAppDoaImpl createTestSubject() {
-        return new FnAppDoaImpl();
+    private FnAppDoaImpl fnAppDoa;
+
+    @Mock
+    private ConnectionFactory connectionFactory;
+
+    @Mock
+    private Connection connection;
+
+    @Mock
+    private PreparedStatement preparedStatement;
+
+    @Mock
+    private ResultSet resultSet;
+
+    private static final String ERROR_MESSAGE = "error message";
+    private static final String QUERY = "select count(*) from fn_app";
+
+    @Before
+    public void setUp() throws SQLException {
+        given(resultSet.next()).willReturn(true);
+        given(resultSet.getInt(1)).willReturn(5);
+        given(preparedStatement.executeQuery()).willReturn(resultSet);
+        given(connectionFactory.getConnection(anyString(), anyString(), anyString())).willReturn(connection);
+        fnAppDoa = new FnAppDoaImpl(connectionFactory);
+    }
+
+    private void okCaseSetUp() throws SQLException {
+
+        given(connection.prepareStatement(QUERY)).willReturn(preparedStatement);
+    }
+
+    private void nokCaseSetup() throws SQLException {
+        given(connection.prepareStatement(QUERY)).willThrow(new SQLException(ERROR_MESSAGE));
     }
 
     @Test
-    public void testGetConnection() throws Exception {
-        String driver2 = "";
-        String url = "";
-        String username = "";
-        String password = "";
-        Connection result;
-
-        // test 1
-        url = null;
-        username = null;
-        password = null;
-        result = FnAppDoaImpl.getConnection(driver2, url, username);
-        Assert.assertEquals(null, result);
-
-        // test 2
-        url = "";
-        username = null;
-        password = null;
-        result = FnAppDoaImpl.getConnection(driver2, url, username);
-        Assert.assertEquals(null, result);
-
-        // test 3
-        username = null;
-        url = null;
-        password = null;
-        result = FnAppDoaImpl.getConnection(driver2, url, username);
-        Assert.assertEquals(null, result);
-
-        // test 4
-        username = "";
-        url = null;
-        password = null;
-        result = FnAppDoaImpl.getConnection(driver2, url, username);
-        Assert.assertEquals(null, result);
-
-        // test 5
-        password = null;
-        url = null;
-        username = null;
-        result = FnAppDoaImpl.getConnection(driver2, url, username);
-        Assert.assertEquals(null, result);
-
-        // test 6
-        password = "";
-        url = null;
-        username = null;
-        result = FnAppDoaImpl.getConnection(driver2, url, username);
-        Assert.assertEquals(null, result);
+    public void getProfileCount_shouldReturnNumber_whenNoExceptionIsThrown() throws SQLException {
+        okCaseSetUp();
+        assertThat(fnAppDoa.getProfileCount("anyUrl", "anyUsername", "anyPassword")).isEqualTo(5);
     }
 
     @Test
-    public void testCleanup() throws Exception {
-        ResultSet rs = null;
-        PreparedStatement st = null;
-
-        // test 1
-        rs = null;
-        FnAppDoaImpl.cleanup(rs, st, null);
-
-        // test 2
-        st = null;
-        FnAppDoaImpl.cleanup(rs, st, null);
-
-        // test 3
-        FnAppDoaImpl.cleanup(rs, st, null);
-    }
-
-    @Test
-    public void testGetProfileCount() throws Exception {
-        FnAppDoaImpl testSubject;
-        String driver = "";
-        String URL = "";
-        String username = "";
-        String password = "";
-        int result;
-
-        // default test
-        testSubject = createTestSubject();
-        result = testSubject.getProfileCount(driver, URL, username, password);
+    public void getProfileCount_shouldRethrowSQLException() throws SQLException {
+        nokCaseSetup();
+        assertThatThrownBy(() -> fnAppDoa.getProfileCount("anyUrl", "anyUsername", "anyPassword"))
+                .isInstanceOf(SQLException.class).hasMessage(ERROR_MESSAGE);
     }
 }
\ No newline at end of file
diff --git a/vid-app-common/src/test/resources/git.properties b/vid-app-common/src/test/resources/git.properties
index d504e3e..6db5795 100644
--- a/vid-app-common/src/test/resources/git.properties
+++ b/vid-app-common/src/test/resources/git.properties
@@ -1,3 +1,3 @@
-git.commit.id=123987
+git.commit.id=123
 git.commit.message.short=Test short commit message
 git.commit.time=1999-09-12T13\:48\:55+0200
\ No newline at end of file