Add graphadmin microservice to oom

Add the graphadmin charts to oom
Also added the aai_schema changes to
make the application model driven
Update the resources traversal charts
to be more user configurable

Issue-ID: AAI-1545
Issue-ID: AAI-1474
Change-Id: Ie615cf3675b36a4830242a8510046c22fd95135b
Signed-off-by: Kajur, Harish (vk250x) <vk250x@att.com>
diff --git a/charts/aai-traversal/resources/config/aaiconfig.properties b/charts/aai-traversal/resources/config/aaiconfig.properties
index 3222555..3859590 100644
--- a/charts/aai-traversal/resources/config/aaiconfig.properties
+++ b/charts/aai-traversal/resources/config/aaiconfig.properties
@@ -20,64 +20,44 @@
 # ECOMP is a trademark and service mark of AT&T Intellectual Property.
 #
 
-####################################################################
-#  REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE
-#  TEMPLATE AND *ALL* DATAFILES
-####################################################################
-
-####################################################################
-#  REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE
-#  TEMPLATE AND *ALL* DATAFILES
-####################################################################
-
 aai.config.checktime=1000
 
 # this could come from siteconfig.pl?
 aai.config.nodename=AutomaticallyOverwritten
 
-
-
-aai.auth.cspcookies_on=false
-aai.dbmodel.filename=ex5.json
-
 aai.server.url.base=https://aai.{{ include "common.namespace" . }}:8443/aai/
-aai.server.url=https://aai.{{ include "common.namespace" . }}:8443/aai/v11/
+aai.server.url=https://aai.{{ include "common.namespace" . }}:8443/aai/{{ .Values.global.config.schema.version.api.default }}/
 aai.global.callback.url=https://aai.{{ include "common.namespace" . }}:8443/aai/
 
+{{ if .Values.global.config.basic.auth.enabled }}
 aai.tools.enableBasicAuth=true
-aai.tools.username=AAI
-aai.tools.password=AAI
+aai.tools.username={{ .Values.global.config.basic.auth.username }}
+aai.tools.password={{ .Values.global.config.basic.auth.passwd }}
+{{ end }}
 
-aai.truststore.filename=aai_keystore
-aai.truststore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0
-aai.keystore.filename=aai_keystore
-aai.keystore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0
+aai.truststore.filename={{ .Values.global.config.truststore.filename }}
+aai.truststore.passwd.x={{ .Values.global.config.truststore.passwd }}
+aai.keystore.filename={{ .Values.global.config.keystore.filename }}
+aai.keystore.passwd.x={{ .Values.global.config.keystore.passwd }}
 
-
-aai.notification.current.version=v11
+aai.notification.current.version={{ .Values.global.config.schema.version.api.default }}
 aai.notificationEvent.default.status=UNPROCESSED
-aai.notificationEvent.default.eventType=AAI-EVENT
-aai.notificationEvent.default.domain=dev
+aai.notificationEvent.default.eventType={{ .Values.global.config.notification.eventType }}
+aai.notificationEvent.default.domain={{ .Values.global.config.notification.domain }}
 aai.notificationEvent.default.sourceName=aai
 aai.notificationEvent.default.sequenceNumber=0
 aai.notificationEvent.default.severity=NORMAL
-aai.notificationEvent.default.version=v11
+aai.notificationEvent.default.version={{ .Values.global.config.schema.version.api.default }}
 # This one lets us enable/disable resource-version checking on updates/deletes
 aai.resourceversion.enableflag=true
 aai.logging.maxStackTraceEntries=10
-aai.default.api.version=v11
-
-
+aai.default.api.version={{ .Values.global.config.schema.version.api.default }}
 
 # Used by Model-processing code
 aai.model.delete.sleep.per.vtx.msec=500
 aai.model.query.resultset.maxcount=50
 aai.model.query.timeout.sec=90
 
-# Used by Data Grooming
-aai.grooming.default.max.file=150
-aai.grooming.default.sleep.minutes=7
-
 aai.model.proc.max.levels=50
 aai.edgeTag.proc.max.levels=50
 
@@ -89,13 +69,13 @@
 aai.transaction.logging.get=false
 aai.transaction.logging.post=false
 
-aai.realtime.clients=SDNC,MSO,SO,robot-ete
+aai.realtime.clients={{ .Values.global.config.realtime.clients }}
 
 #timeout for traversal enabled flag
-aai.traversal.timeoutenabled=true
+aai.traversal.timeoutenabled={{ .Values.config.timeout.enabled }}
 
 #timeout app specific
-aai.traversal.timeout.appspecific=JUNITTESTAPP1,1|JUNITTESTAPP2,-1|DCAE-CCS,-1|DCAES,-1|AAI-FILEGEN-GFPIP,-1
+aai.traversal.timeout.appspecific={{ .Values.config.timeout.appspecific }}
 
 #default timeout limit added for traversal if not overridden (in ms)
-aai.traversal.timeoutlimit=180000
+aai.traversal.timeoutlimit={{ .Values.config.timeout.limit | int }}
diff --git a/charts/aai-traversal/resources/config/application.properties b/charts/aai-traversal/resources/config/application.properties
index ca02055..2ff95aa 100644
--- a/charts/aai-traversal/resources/config/application.properties
+++ b/charts/aai-traversal/resources/config/application.properties
@@ -16,7 +16,7 @@
 info.build.artifact=aai-traversal
 info.build.name=traversal
 info.build.description=Traversal Microservice
-info.build.version=1.2.0
+info.build.version=1.3.0
 
 spring.application.name=aai-traversal
 spring.jersey.type=filter
@@ -24,7 +24,8 @@
 server.contextPath=/
 spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
 
-spring.profiles.active=production,dmaap
+spring.profiles.active={{ .Values.global.config.profiles.active }}
+spring.jersey.application-path=${schema.uri.base.path}
 #The max number of active threads in this pool
 server.tomcat.max-threads=200
 #The minimum number of threads always kept alive
@@ -32,15 +33,6 @@
 #The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
 server.tomcat.max-idle-time=60000
 
-
-#Add this properties only if you want to change the URL, AJSC Framework interceptors will intercept
-#com.att.ajsc.common.interceptors.PreInterceptor.url=/**
-#com.att.ajsc.common.interceptors.PostInterceptor.url=/**
-
-#Servlet context parameters
-server.context_parameters.p-name=value #context parameter with p-name as key and value as value.
-kubernetes.namespace={{ include "common.namespace" . }}
-
 # If you get an application startup failure that the port is already taken
 # If thats not it, please check if the key-store file path makes sense
 server.local.startpath=aai-traversal/src/main/resources/
@@ -48,39 +40,45 @@
 
 server.port=8446
 server.ssl.enabled-protocols=TLSv1.1,TLSv1.2
-server.ssl.key-store=${server.local.startpath}etc/auth/aai_keystore
-server.ssl.key-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0)
-server.ssl.trust-store=${server.local.startpath}etc/auth/aai_keystore
-server.ssl.trust-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0)
+server.ssl.key-store=${server.local.startpath}etc/auth/{{ .Values.global.config.keystore.filename }}
+server.ssl.key-store-password=password({{ .Values.global.config.keystore.passwd }})
+server.ssl.trust-store=${server.local.startpath}etc/auth/{{ .Values.global.config.truststore.filename }}
+server.ssl.trust-store-password=password({{ .Values.global.config.truststore.passwd }})
 server.ssl.client-auth=want
 server.ssl.key-store-type=JKS
 
 # JMS bind address host port
 jms.bind.address=tcp://localhost:61647
-dmaap.ribbon.eureka.enabled=false
 dmaap.ribbon.listOfServers=message-router.{{ include "common.namespace" . }}:3904
-# Number of milliseconds to wait before making ping requests again
-dmaap.ribbon.ServerListRefreshInterval=75000
-dmaap.ribbon.NFLoadBalancerPingInterval=75000
-dmaap.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.AvailabilityFilteringRule
-dmaap.ribbon.NFLoadBalancerPingClassName=org.onap.aai.config.HttpPingImpl
-dmaap.ribbon.EnableMarkingServerDownOnReachingFailureLimit=true
-dmaap.ribbon.ServerDownFailureLimit=1
-# This needs to be verified but it seems that adding this property should automatically
-# Make the dmaap client change the url from http to https depending on the server
-dmaap.ribbon.securePorts=3905
 
-# Custom Dmaap Specific Configuration
-dmaap.ribbon.username=
-dmaap.ribbon.password=
-dmaap.ribbon.health.endpoint=/topics/AAI-EVENT
-# Number of seconds to wait for the ping to work and might need to increase this if the pings are all failing
-dmaap.ribbon.pingport.timeout=3
+# Schema related attributes for the oxm and edges
+# Any additional schema related attributes should start with prefix schema
+schema.configuration.location=N/A
+schema.source.name={{ .Values.global.config.schema.source.name }}
+schema.nodes.location=${server.local.startpath}/schema/${schema.source.name}/oxm/
+schema.edges.location=${server.local.startpath}/schema/${schema.source.name}/dbedgerules/
+# Location of where the stored queries are
+schema.queries.location=${server.local.startpath}/schema/${schema.source.name}/query/
 
-niws.loadbalancer.dmaap.filterCircuitTripped=true
-niws.loadbalancer.dmaap.connectionFailureCountThreshold=3
-niws.loadbalancer.dmaap.circuitTripMaxTimeoutSeconds=180
-#dmaap.ribbon.retryableStatusCodes=404,503
-#dmaap.ribbon.retryableStatusCodes.MaxAutoRetriesNextServer=2
-#dmaap.ribbon.retryableStatusCodes.MaxAutoRetries=2
-#dmaap.ribbon.retryableStatusCodes.OkToRetryOnAllOperations=true
+schema.ingest.file=${server.local.startpath}/application.properties
+
+# Schema Version Related Attributes
+
+schema.uri.base.path={{ .Values.global.config.schema.uri.base.path }}
+# Lists all of the versions in the schema
+schema.version.list={{ .Values.global.config.schema.version.list }}
+# Specifies from which version should the depth parameter to default to zero
+schema.version.depth.start={{ .Values.global.config.schema.version.depth }}
+# Specifies from which version should the related link be displayed in response payload
+schema.version.related.link.start={{ .Values.global.config.schema.version.related.link }}
+
+# Specifies from which version should the client see only the uri excluding host info
+# Before this version server base will also be included
+schema.version.app.root.start={{ .Values.global.config.schema.version.app.root }}
+# Specifies from which version should the namespace be changed
+schema.version.namespace.change.start={{ .Values.global.config.schema.version.namespace.change }}
+# Specifies from which version should the client start seeing the edge label in payload
+schema.version.edge.label.start={{ .Values.global.config.schema.version.edge.label }}
+# Specifies the version that the application should default to
+schema.version.api.default={{ .Values.global.config.schema.version.api.default }}
+
diff --git a/charts/aai-traversal/resources/config/janusgraph-cached.properties b/charts/aai-traversal/resources/config/janusgraph-cached.properties
index b9216bf..2c22d14 100644
--- a/charts/aai-traversal/resources/config/janusgraph-cached.properties
+++ b/charts/aai-traversal/resources/config/janusgraph-cached.properties
@@ -23,6 +23,8 @@
 query.fast-property=true
 query.smart-limit=false
 
+{{ if .Values.global.config.cluster.cassandra.dynamic }}
+
 {{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}}
 {{- $global := . }}
 
@@ -35,9 +37,60 @@
 storage.cassandra.write-consistency-level=LOCAL_QUORUM
 storage.cassandra.replication-factor=3
 storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy
-#storage.cassandra.replication-strategy-options=MTA1cass,3
 
-#schema.default=none
+{{ else }}
+
+{{ if .Values.global.config.storage }}
+
+storage.backend={{ .Values.global.config.storage.backend }}
+
+{{ if eq .Values.global.config.storage.backend "cassandra" }}
+
+storage.hostname={{ .Values.global.config.storage.hostname }}
+storage.cassandra.keyspace={{ .Values.global.config.storage.name }}
+
+storage.cassandra.read-consistency-level={{ .Values.global.config.storage.cassandra.readConsistency }}
+storage.cassandra.write-consistency-level={{ .Values.global.config.storage.cassandra.writeConsistency }}
+storage.cassandra.replication-factor={{ .Values.global.config.storage.cassandra.replicationFactor | int }}
+storage.cassandra.astyanax.cluster-name= {{ .Values.global.config.storage.clusterName }}
+storage.cassandra.astyanax.local-datacenter= {{ .Values.global.config.storage.localDataCenter }}
+
+storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
+cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
+log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
+
+{{ else if eq .Values.global.config.storage.backend "cql" }}
+
+storage.hostname={{ .Values.global.config.storage.hostname }}
+storage.cql.keyspace={{ .Values.global.config.storage.name }}
+
+storage.cql.read-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
+storage.cql.write-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
+storage.cql.replication-factor={{ .Values.global.config.storage.cql.replicationFactor | int }}
+
+storage.cql.only-use-local-consistency-for-system-operations={{ .Values.global.config.storage.cql.localConsistencyForSysOps }}
+storage.cql.cluster-name={{ .Values.global.config.storage.clusterName }}
+storage.cql.local-datacenter={{ .Values.global.config.storage.localDataCenter }}
+
+storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
+cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
+log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
+
+{{ else if eq .Values.global.config.storage.backend "hbase" }}
+
+storage.hostname={{ .Values.global.config.storage.hostname }}
+storage.hbase.table={{ .Values.global.config.storage.name }}
+
+storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
+cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
+log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
+
+{{ end }}
+
+{{ end }}
+
+{{ end }}
+
 storage.lock.wait-time=300
 #caching on
 cache.db-cache = true
diff --git a/charts/aai-traversal/resources/config/janusgraph-realtime.properties b/charts/aai-traversal/resources/config/janusgraph-realtime.properties
index a8504dc..b19c9b6 100644
--- a/charts/aai-traversal/resources/config/janusgraph-realtime.properties
+++ b/charts/aai-traversal/resources/config/janusgraph-realtime.properties
@@ -21,10 +21,11 @@
 query.fast-property=true
 query.smart-limit=false
 
+{{ if .Values.global.config.cluster.cassandra.dynamic }}
+
 {{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}}
 {{- $global := . }}
 
-# the following parameters are not reloaded automatically and require a manual bounce
 storage.backend=cassandra
 storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-{{$global.Values.global.cassandra.serviceName}}-{{ $i }}.{{$global.Values.global.cassandra.serviceName}},{{- end }}
 
@@ -34,12 +35,62 @@
 storage.cassandra.write-consistency-level=LOCAL_QUORUM
 storage.cassandra.replication-factor=3
 storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy
-#storage.cassandra.replication-strategy-options=MTA1cass,3
 
-#schema.default=none
+{{ else }}
+
+{{ if .Values.global.config.storage }}
+
+storage.backend={{ .Values.global.config.storage.backend }}
+
+{{ if eq .Values.global.config.storage.backend "cassandra" }}
+
+storage.hostname={{ .Values.global.config.storage.hostname }}
+storage.cassandra.keyspace={{ .Values.global.config.storage.name }}
+
+storage.cassandra.read-consistency-level={{ .Values.global.config.storage.cassandra.readConsistency }}
+storage.cassandra.write-consistency-level={{ .Values.global.config.storage.cassandra.writeConsistency }}
+storage.cassandra.replication-factor={{ .Values.global.config.storage.cassandra.replicationFactor | int }}
+storage.cassandra.astyanax.cluster-name= {{ .Values.global.config.storage.clusterName }}
+storage.cassandra.astyanax.local-datacenter= {{ .Values.global.config.storage.localDataCenter }}
+
+storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
+cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
+log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
+
+{{ else if eq .Values.global.config.storage.backend "cql" }}
+
+storage.hostname={{ .Values.global.config.storage.hostname }}
+storage.cql.keyspace={{ .Values.global.config.storage.name }}
+
+storage.cql.read-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
+storage.cql.write-consistency-level={{ .Values.global.config.storage.cql.readConsistency }}
+storage.cql.replication-factor={{ .Values.global.config.storage.cql.replicationFactor | int }}
+
+storage.cql.only-use-local-consistency-for-system-operations={{ .Values.global.config.storage.cql.localConsistencyForSysOps }}
+storage.cql.cluster-name={{ .Values.global.config.storage.clusterName }}
+storage.cql.local-datacenter={{ .Values.global.config.storage.localDataCenter }}
+
+storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
+cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
+log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
+
+{{ else if eq .Values.global.config.storage.backend "hbase" }}
+
+storage.hostname={{ .Values.global.config.storage.hostname }}
+storage.hbase.table={{ .Values.global.config.storage.name }}
+
+storage.connection-timeout={{ .Values.global.config.storage.connectionTimeout | int }}
+cache.tx-cache-size={{ .Values.global.config.storage.cacheSize | int }}
+log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
+
+{{ end }}
+
+{{ end }}
+
+{{ end }}
+
 storage.lock.wait-time=300
 # Setting db-cache to false ensure the fastest propagation of changes across servers
 cache.db-cache = false
-
 #load graphson file on startup
 load.snapshot.file=false
diff --git a/charts/aai-traversal/resources/config/logback.xml b/charts/aai-traversal/resources/config/logback.xml
index 84ec4f1..96fe005 100644
--- a/charts/aai-traversal/resources/config/logback.xml
+++ b/charts/aai-traversal/resources/config/logback.xml
@@ -1,366 +1,369 @@
-<!--

-    ============LICENSE_START=======================================================

-    org.onap.aai

-    ================================================================================

-    Copyright © 2017 AT&T Intellectual Property. All rights reserved.

-    Modifications Copyright © 2018 Amdocs, Bell Canada

-    ================================================================================

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

-    you may not use this file except in compliance with the License.

-    You may obtain a copy of the License at

-       http://www.apache.org/licenses/LICENSE-2.0

-    Unless required by applicable law or agreed to in writing, software

-    distributed under the License is distributed on an "AS IS" BASIS,

-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-    See the License for the specific language governing permissions and

-    limitations under the License.

-    ============LICENSE_END=========================================================

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

--->

-<configuration scan="true" scanPeriod="60 seconds" debug="false">

-    <statusListener class="ch.qos.logback.core.status.NopStatusListener" />

-    <property resource="application.properties" />

-    <property name="namespace" value="aai-traversal"/>

-    <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />

-    <jmxConfigurator />

-    <property name="logDirectory" value="${AJSC_HOME}/logs" />

-    <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>

-    <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>

-    <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>

-    <!--  <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> -->

-    <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>

-    <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>

-    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />

-    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />

-    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

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

-        <encoder>

-            <pattern>

-                %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

-            </pattern>

-        </encoder>

-    </appender>

-    <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">

-        <file>${logDirectory}/rest/sane.log</file>

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

-            <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>

-        </rollingPolicy>

-        <encoder>

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

-            </pattern>

-        </encoder>

-    </appender>

-    <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">

-        <queueSize>1000</queueSize>

-        <includeCallerData>true</includeCallerData>

-        <appender-ref ref="SANE" />

-    </appender>

-    <appender name="METRIC"

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

-        <filter class="ch.qos.logback.classic.filter.LevelFilter">

-            <level>INFO</level>

-            <onMatch>ACCEPT</onMatch>

-            <onMismatch>DENY</onMismatch>

-        </filter>

-        <file>${logDirectory}/rest/metrics.log</file>

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

-            <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}

-            </fileNamePattern>

-        </rollingPolicy>

-        <encoder class="org.onap.aai.logging.EcompEncoder">

-            <pattern>${eelfMetricLogPattern}</pattern>

-        </encoder>

-    </appender>

-    <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">

-        <queueSize>1000</queueSize>

-        <includeCallerData>true</includeCallerData>

-        <appender-ref ref="METRIC" />

-    </appender>

-    <appender name="DEBUG"

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

-        <filter class="ch.qos.logback.classic.filter.LevelFilter">

-            <level>DEBUG</level>

-            <onMatch>ACCEPT</onMatch>

-            <onMismatch>DENY</onMismatch>

-        </filter>

-        <file>${logDirectory}/rest/debug.log</file>

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

-            <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}

-            </fileNamePattern>

-        </rollingPolicy>

-        <encoder class="org.onap.aai.logging.EcompEncoder">

-            <pattern>${eelfLogPattern}</pattern>

-        </encoder>

-    </appender>

-    <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">

-        <queueSize>1000</queueSize>

-        <includeCallerData>true</includeCallerData>

-        <appender-ref ref="DEBUG" />

-    </appender>

-    <appender name="ERROR"

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

-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

-            <level>WARN</level>

-        </filter>

-        <file>${logDirectory}/rest/error.log</file>

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

-            <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}

-            </fileNamePattern>

-        </rollingPolicy>

-        <encoder class="org.onap.aai.logging.EcompEncoder">

-            <pattern>${eelfErrorLogPattern}</pattern>

-        </encoder>

-    </appender>

-    <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">

-        <queueSize>1000</queueSize>

-        <includeCallerData>true</includeCallerData>

-        <appender-ref ref="ERROR" />

-    </appender>

-    <appender name="AUDIT"

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

-        <file>${logDirectory}/rest/audit.log</file>

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

-            <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}

-            </fileNamePattern>

-        </rollingPolicy>

-        <encoder class="org.onap.aai.logging.EcompEncoder">

-            <pattern>${eelfAuditLogPattern}</pattern>

-        </encoder>

-    </appender>

-    <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">

-        <queueSize>1000</queueSize>

-        <includeCallerData>true</includeCallerData>

-        <appender-ref ref="AUDIT" />

-    </appender>

-    <appender name="translog"

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

-        <filter class="ch.qos.logback.classic.filter.LevelFilter">

-            <level>DEBUG</level>

-            <onMatch>ACCEPT</onMatch>

-            <onMismatch>DENY</onMismatch>

-        </filter>

-        <file>${logDirectory}/rest/translog.log</file>

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

-            <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}

-            </fileNamePattern>

-        </rollingPolicy>

-        <encoder class="org.onap.aai.logging.EcompEncoder">

-            <pattern>${eelfTransLogPattern}</pattern>

-        </encoder>

-    </appender>

-    <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">

-        <queueSize>1000</queueSize>

-        <includeCallerData>true</includeCallerData>

-        <appender-ref ref="translog" />

-    </appender>

-    <appender name="dmaapAAIEventConsumer"

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

-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

-            <level>WARN</level>

-        </filter>

-        <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>

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

-            <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}

-            </fileNamePattern>

-        </rollingPolicy>

-        <encoder class="org.onap.aai.logging.EcompEncoder">

-            <pattern>${eelfLogPattern}</pattern>

-        </encoder>

-    </appender>

-    <appender name="dmaapAAIEventConsumerDebug"

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

-        <filter class="ch.qos.logback.classic.filter.LevelFilter">

-            <level>DEBUG</level>

-            <onMatch>ACCEPT</onMatch>

-            <onMismatch>DENY</onMismatch>

-        </filter>

-        <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>

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

-            <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}

-            </fileNamePattern>

-        </rollingPolicy>

-        <encoder class="org.onap.aai.logging.EcompEncoder">

-            <pattern>${eelfLogPattern}</pattern>

-        </encoder>

-    </appender>

-    <appender name="dmaapAAIEventConsumerMetric"

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

-        <filter class="ch.qos.logback.classic.filter.LevelFilter">

-            <level>INFO</level>

-            <onMatch>ACCEPT</onMatch>

-            <onMismatch>DENY</onMismatch>

-        </filter>

-        <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>

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

-            <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}

-            </fileNamePattern>

-        </rollingPolicy>

-        <encoder class="org.onap.aai.logging.EcompEncoder">

-            <pattern>${eelfMetricLogPattern}</pattern>

-        </encoder>

-    </appender>

-    <appender name="external"

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

-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

-            <level>WARN</level>

-        </filter>

-        <file>${logDirectory}/external/external.log</file>

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

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

-            </fileNamePattern>

-        </rollingPolicy>

-        <encoder class="org.onap.aai.logging.EcompEncoder">

-            <pattern>${eelfLogPattern}</pattern>

-        </encoder>

-    </appender>

-    <logger name="org.onap.aai" level="DEBUG" additivity="false">

-        <appender-ref ref="asyncDEBUG" />

-        <appender-ref ref="asyncERROR" />

-        <appender-ref ref="asyncMETRIC" />

-        <appender-ref ref="asyncSANE" />

-    </logger>

-    <!-- Spring related loggers -->

-    <logger name="org.springframework" level="WARN" />

-    <logger name="org.springframework.beans" level="WARN" />

-    <logger name="org.springframework.web" level="WARN" />

-    <logger name="com.blog.spring.jms" level="WARN" />

-    <logger name="com.jayway.jsonpath" level="WARN" />

-    <!-- AJSC Services (bootstrap services) -->

-    <logger name="ajsc" level="WARN" />

-    <logger name="ajsc.RouteMgmtService" level="WARN" />

-    <logger name="ajsc.ComputeService" level="WARN" />

-    <logger name="ajsc.VandelayService" level="WARN" />

-    <logger name="ajsc.FilePersistenceService" level="WARN" />

-    <logger name="ajsc.UserDefinedJarService" level="WARN" />

-    <logger name="ajsc.UserDefinedBeansDefService" level="WARN" />

-    <logger name="ajsc.LoggingConfigurationService" level="WARN" />

-    <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet

-        logging) -->

-    <logger name="org.codehaus.groovy" level="WARN" />

-    <logger name="com.att.scamper" level="WARN" />

-    <logger name="ajsc.utils" level="WARN" />

-    <logger name="ajsc.utils.DME2Helper" level="WARN" />

-    <logger name="ajsc.filters" level="WARN" />

-    <logger name="ajsc.beans.interceptors" level="WARN" />

-    <logger name="ajsc.restlet" level="WARN" />

-    <logger name="ajsc.servlet" level="WARN" />

-    <logger name="com.att.ajsc" level="WARN" />

-    <logger name="com.att.ajsc.csi.logging" level="WARN" />

-    <logger name="com.att.ajsc.filemonitor" level="WARN" />

-    <logger name="com.netflix.loadbalancer" level="WARN" />

-    <logger name="org.apache.zookeeper" level="OFF" />

-    <!-- Other Loggers that may help troubleshoot -->

-    <logger name="net.sf" level="WARN" />

-    <logger name="org.apache.commons.httpclient" level="WARN" />

-    <logger name="org.apache.commons" level="WARN" />

-    <logger name="org.apache.coyote" level="WARN" />

-    <logger name="org.apache.jasper" level="WARN" />

-    <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.

-        May aid in troubleshooting) -->

-    <logger name="org.apache.camel" level="WARN" />

-    <logger name="org.apache.cxf" level="WARN" />

-    <logger name="org.apache.camel.processor.interceptor" level="WARN" />

-    <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" />

-    <logger name="org.apache.cxf.service" level="WARN" />

-    <logger name="org.restlet" level="WARN" />

-    <logger name="org.apache.camel.component.restlet" level="WARN" />

-    <logger name="org.hibernate.validator" level="WARN" />

-    <logger name="org.hibernate" level="WARN" />

-    <logger name="org.hibernate.ejb" level="OFF" />

-    <!-- logback internals logging -->

-    <logger name="ch.qos.logback.classic" level="WARN" />

-    <logger name="ch.qos.logback.core" level="WARN" />

-    <logger name="org.eclipse.jetty" level="WARN" />

-    <!-- logback jms appenders & loggers definition starts here -->

-    <appender name="auditLogs"

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

-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />

-        <file>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.log

-        </file>

-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

-            <fileNamePattern>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.%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 [%thread] %-5level %logger{1024} - %msg%n"</pattern>

-        </encoder>

-    </appender>

-    <appender name="perfLogs"

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

-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />

-        <file>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.log

-        </file>

-        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

-            <fileNamePattern>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.%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 [%thread] %-5level %logger{1024} - %msg%n"</pattern>

-        </encoder>

-    </appender>

-    <appender name="miscLogs" class="ch.qos.logback.core.rolling.RollingFileAppender">

-                <file>${logDirectory}/misc/misc.log</file>

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

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

-                </rollingPolicy>

-                <encoder>

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

-                        </pattern>

-        </encoder>

-        </appender>

-    <logger name="AuditRecord" level="INFO" additivity="false">

-        <appender-ref ref="auditLogs" />

-    </logger>

-    <logger name="AuditRecord_DirectCall" level="INFO" additivity="false">

-        <appender-ref ref="auditLogs" />

-    </logger>

-    <logger name="PerfTrackerRecord" level="INFO" additivity="false">

-        <appender-ref ref="perfLogs" />

-    </logger>

-    <logger name="MiscRecord" level="INFO" additivity="false">

-                <appender-ref ref="miscLogs" />

-        </logger>

-    <!-- logback jms appenders & loggers definition ends here -->

-    <logger name="org.onap.aai.interceptors.post" level="DEBUG"

-            additivity="false">

-        <appender-ref ref="asynctranslog" />

-    </logger>

-    <logger name="org.onap.aai.interceptors.pre.SetLoggingContext" level="DEBUG">

-        <appender-ref ref="asyncAUDIT"/>

-    </logger>

-    <logger name="org.onap.aai.interceptors.post.ResetLoggingContext" level="DEBUG">

-        <appender-ref ref="asyncAUDIT"/>

-    </logger>

-    <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">

-        <appender-ref ref="dmaapAAIEventConsumer" />

-        <appender-ref ref="dmaapAAIEventConsumerDebug" />

-        <appender-ref ref="dmaapAAIEventConsumerMetric" />

-    </logger>

-    <logger name="org.apache" level="OFF" />

-    <logger name="org.zookeeper" level="OFF" />

-    <logger name="com.thinkaurelius" level="WARN" />

-    <logger name="com.att.aft.dme2" level="WARN" />

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

-    <!-- General EELF logger -->

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

-    <logger name="com.att.eelf" level="WARN" additivity="false">

-        <appender-ref ref="asyncDEBUG" />

-        <appender-ref ref="asyncERROR" />

-        <appender-ref ref="asyncMETRIC" />

-    </logger>

-    <root level="DEBUG">

-        <appender-ref ref="external" />

-    </root>

-</configuration>

+<!--
+    ============LICENSE_START=======================================================
+    org.onap.aai
+    ================================================================================
+    Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+    Modifications Copyright © 2018 Amdocs, Bell Canada
+    ================================================================================
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+    ============LICENSE_END=========================================================
+    ECOMP is a trademark and service mark of AT&T Intellectual Property.
+-->
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
+    <property resource="application.properties" />
+    <property name="namespace" value="aai-traversal"/>
+    <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />
+    <jmxConfigurator />
+    <property name="logDirectory" value="${AJSC_HOME}/logs" />
+    <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+    <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+    <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+    <!--  <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> -->
+    <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/>
+    <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/>
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>
+                %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
+            </pattern>
+        </encoder>
+    </appender>
+    <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDirectory}/rest/sane.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+    <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <includeCallerData>true</includeCallerData>
+        <appender-ref ref="SANE" />
+    </appender>
+    <appender name="METRIC"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>INFO</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <file>${logDirectory}/rest/metrics.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd}
+            </fileNamePattern>
+        </rollingPolicy>
+        <encoder class="org.onap.aai.logging.EcompEncoder">
+            <pattern>${eelfMetricLogPattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <includeCallerData>true</includeCallerData>
+        <appender-ref ref="METRIC" />
+    </appender>
+    <appender name="DEBUG"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>DEBUG</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <file>${logDirectory}/rest/debug.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd}
+            </fileNamePattern>
+        </rollingPolicy>
+        <encoder class="org.onap.aai.logging.EcompEncoder">
+            <pattern>${eelfLogPattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <includeCallerData>true</includeCallerData>
+        <appender-ref ref="DEBUG" />
+    </appender>
+    <appender name="ERROR"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>WARN</level>
+        </filter>
+        <file>${logDirectory}/rest/error.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd}
+            </fileNamePattern>
+        </rollingPolicy>
+        <encoder class="org.onap.aai.logging.EcompEncoder">
+            <pattern>${eelfErrorLogPattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <includeCallerData>true</includeCallerData>
+        <appender-ref ref="ERROR" />
+    </appender>
+    <appender name="AUDIT"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDirectory}/rest/audit.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd}
+            </fileNamePattern>
+        </rollingPolicy>
+        <encoder class="org.onap.aai.logging.EcompEncoder">
+            <pattern>${eelfAuditLogPattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <includeCallerData>true</includeCallerData>
+        <appender-ref ref="AUDIT" />
+    </appender>
+    <appender name="translog"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>DEBUG</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <file>${logDirectory}/rest/translog.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd}
+            </fileNamePattern>
+        </rollingPolicy>
+        <encoder class="org.onap.aai.logging.EcompEncoder">
+            <pattern>${eelfTransLogPattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <includeCallerData>true</includeCallerData>
+        <appender-ref ref="translog" />
+    </appender>
+    <appender name="dmaapAAIEventConsumer"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>WARN</level>
+        </filter>
+        <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd}
+            </fileNamePattern>
+        </rollingPolicy>
+        <encoder class="org.onap.aai.logging.EcompEncoder">
+            <pattern>${eelfLogPattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="dmaapAAIEventConsumerDebug"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>DEBUG</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd}
+            </fileNamePattern>
+        </rollingPolicy>
+        <encoder class="org.onap.aai.logging.EcompEncoder">
+            <pattern>${eelfLogPattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="dmaapAAIEventConsumerMetric"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>INFO</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd}
+            </fileNamePattern>
+        </rollingPolicy>
+        <encoder class="org.onap.aai.logging.EcompEncoder">
+            <pattern>${eelfMetricLogPattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="external"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>WARN</level>
+        </filter>
+        <file>${logDirectory}/external/external.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd}
+            </fileNamePattern>
+        </rollingPolicy>
+        <encoder class="org.onap.aai.logging.EcompEncoder">
+            <pattern>${eelfLogPattern}</pattern>
+        </encoder>
+    </appender>
+    <logger name="org.onap.aai" level="DEBUG" additivity="false">
+        <appender-ref ref="asyncDEBUG" />
+        <appender-ref ref="asyncERROR" />
+        <appender-ref ref="asyncMETRIC" />
+        <appender-ref ref="asyncSANE" />
+    </logger>
+    <!-- Spring related loggers -->
+    <logger name="org.springframework" level="WARN" />
+    <logger name="org.springframework.beans" level="WARN" />
+    <logger name="org.springframework.web" level="WARN" />
+    <logger name="com.blog.spring.jms" level="WARN" />
+    <logger name="com.jayway.jsonpath" level="WARN" />
+    <!-- AJSC Services (bootstrap services) -->
+    <logger name="ajsc" level="WARN" />
+    <logger name="ajsc.RouteMgmtService" level="WARN" />
+    <logger name="ajsc.ComputeService" level="WARN" />
+    <logger name="ajsc.VandelayService" level="WARN" />
+    <logger name="ajsc.FilePersistenceService" level="WARN" />
+    <logger name="ajsc.UserDefinedJarService" level="WARN" />
+    <logger name="ajsc.UserDefinedBeansDefService" level="WARN" />
+    <logger name="ajsc.LoggingConfigurationService" level="WARN" />
+    <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet
+        logging) -->
+    <logger name="org.codehaus.groovy" level="WARN" />
+    <logger name="com.att.scamper" level="WARN" />
+    <logger name="ajsc.utils" level="WARN" />
+    <logger name="ajsc.utils.DME2Helper" level="WARN" />
+    <logger name="ajsc.filters" level="WARN" />
+    <logger name="ajsc.beans.interceptors" level="WARN" />
+    <logger name="ajsc.restlet" level="WARN" />
+    <logger name="ajsc.servlet" level="WARN" />
+    <logger name="com.att.ajsc" level="WARN" />
+    <logger name="com.att.ajsc.csi.logging" level="WARN" />
+    <logger name="com.att.ajsc.filemonitor" level="WARN" />
+    <logger name="com.netflix.loadbalancer" level="WARN" />
+    <logger name="org.apache.zookeeper" level="OFF" />
+    <!-- Other Loggers that may help troubleshoot -->
+    <logger name="net.sf" level="WARN" />
+    <logger name="org.apache.commons.httpclient" level="WARN" />
+    <logger name="org.apache.commons" level="WARN" />
+    <logger name="org.apache.coyote" level="WARN" />
+    <logger name="org.apache.jasper" level="WARN" />
+    <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
+        May aid in troubleshooting) -->
+    <logger name="org.apache.camel" level="WARN" />
+    <logger name="org.apache.cxf" level="WARN" />
+    <logger name="org.apache.camel.processor.interceptor" level="WARN" />
+    <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" />
+    <logger name="org.apache.cxf.service" level="WARN" />
+    <logger name="org.restlet" level="WARN" />
+    <logger name="org.apache.camel.component.restlet" level="WARN" />
+    <logger name="org.hibernate.validator" level="WARN" />
+    <logger name="org.hibernate" level="WARN" />
+    <logger name="org.hibernate.ejb" level="OFF" />
+    <!-- logback internals logging -->
+    <logger name="ch.qos.logback.classic" level="WARN" />
+    <logger name="ch.qos.logback.core" level="WARN" />
+    <logger name="org.eclipse.jetty" level="WARN" />
+    <!-- logback jms appenders & loggers definition starts here -->
+    <appender name="auditLogs"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />
+        <file>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.log
+        </file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+            <fileNamePattern>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.%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 [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+        </encoder>
+    </appender>
+    <appender name="perfLogs"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter" />
+        <file>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.log
+        </file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+            <fileNamePattern>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.%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 [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+        </encoder>
+    </appender>
+    <appender name="miscLogs" class="ch.qos.logback.core.rolling.RollingFileAppender">
+                <file>${logDirectory}/misc/misc.log</file>
+                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+                        <fileNamePattern>${logDirectory}/misc/misc.log.%d{yyyy-MM-dd}</fileNamePattern>
+                </rollingPolicy>
+                <encoder>
+                        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n                                                              
+                        </pattern>
+        </encoder>
+        </appender>
+    <logger name="AuditRecord" level="INFO" additivity="false">
+        <appender-ref ref="auditLogs" />
+    </logger>
+    <logger name="AuditRecord_DirectCall" level="INFO" additivity="false">
+        <appender-ref ref="auditLogs" />
+    </logger>
+    <logger name="PerfTrackerRecord" level="INFO" additivity="false">
+        <appender-ref ref="perfLogs" />
+    </logger>
+    <logger name="MiscRecord" level="INFO" additivity="false">
+                <appender-ref ref="miscLogs" />
+        </logger>
+    <!-- logback jms appenders & loggers definition ends here -->
+    <logger name="org.onap.aai.interceptors.post" level="DEBUG"
+            additivity="false">
+        <appender-ref ref="asynctranslog" />
+    </logger>
+    <logger name="org.onap.aai.interceptors.pre.SetLoggingContext" level="DEBUG">
+        <appender-ref ref="asyncAUDIT"/>
+    </logger>
+    <logger name="org.onap.aai.interceptors.post.ResetLoggingContext" level="DEBUG">
+        <appender-ref ref="asyncAUDIT"/>
+    </logger>
+    <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false">
+        <appender-ref ref="dmaapAAIEventConsumer" />
+        <appender-ref ref="dmaapAAIEventConsumerDebug" />
+        <appender-ref ref="dmaapAAIEventConsumerMetric" />
+    </logger>
+    <logger name="org.apache" level="OFF" />
+    <logger name="org.zookeeper" level="OFF" />
+    <logger name="com.thinkaurelius" level="WARN" />
+    <logger name="com.att.aft.dme2" level="WARN" />
+    <!-- ============================================================================ -->
+    <!-- General EELF logger -->
+    <!-- ============================================================================ -->
+    <logger name="com.att.eelf" level="WARN" additivity="false">
+        <appender-ref ref="asyncDEBUG" />
+        <appender-ref ref="asyncERROR" />
+        <appender-ref ref="asyncMETRIC" />
+    </logger>
+    <root level="DEBUG">
+        <appender-ref ref="external" />
+        {{if .Values.global.config.logback.console.enabled}}
+        <appender-ref ref="STDOUT" />
+        {{ end }}
+    </root>
+</configuration>