<artifactId>common-parameters</artifactId>
             <version>${policy.common.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.onap.policy.common</groupId>
-            <artifactId>ONAP-Logging</artifactId>
-            <version>${policy.common.version}</version>
-        </dependency>
     </dependencies>
 </project>
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.distribution.forwarding.parameters;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.GroupValidationResult;
 import org.onap.policy.common.parameters.ParameterGroup;
 import org.onap.policy.common.parameters.ValidationStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to hold all the policy forwarder parameters.
  */
 public class PolicyForwarderParameters implements ParameterGroup {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(PolicyForwarderParameters.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(PolicyForwarderParameters.class);
 
     private String forwarderType;
     private String forwarderClassName;
 
             <artifactId>capabilities</artifactId>
             <version>${policy.common.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.onap.policy.common</groupId>
-            <artifactId>policy-endpoints</artifactId>
-            <version>${policy.common.version}</version>
-        </dependency>
         <dependency>
             <groupId>commons-cli</groupId>
             <artifactId>commons-cli</artifactId>
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 import java.io.FileReader;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.GroupValidationResult;
 import org.onap.policy.distribution.main.PolicyDistributionException;
 import org.onap.policy.distribution.main.startstop.DistributionCommandLineArguments;
 import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParametersJsonAdapter;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParametersJsonAdapter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class handles reading, parsing and validating of policy distribution parameters from JSON files.
  */
 public class DistributionParameterHandler {
-    private static final Logger LOGGER = FlexLogger.getLogger(DistributionParameterHandler.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(DistributionParameterHandler.class);
 
     /**
      * Read the parameters from the parameter file.
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * 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.
- * 
+ *
  * SPDX-License-Identifier: Apache-2.0
  * ============LICENSE_END=========================================================
  */
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonPrimitive;
+
 import java.lang.reflect.Type;
-import org.slf4j.ext.XLogger;
-import org.slf4j.ext.XLoggerFactory;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class deserialises policy forwarder parameters from JSON.
  */
 public class PolicyForwarderConfigurationParametersJsonAdapter
         implements JsonDeserializer<PolicyForwarderConfigurationParameterGroup> {
-    private static final XLogger LOGGER =
-            XLoggerFactory.getXLogger(PolicyForwarderConfigurationParametersJsonAdapter.class);
+    private static final Logger LOGGER =
+            LoggerFactory.getLogger(PolicyForwarderConfigurationParametersJsonAdapter.class);
 
     private static final String PARAMETER_CLASS_NAME = "parameterClassName";
     private static final String POLICY_FORWARDER_PARAMETERS = "parameters";
         final JsonObject jsonObject = json.getAsJsonObject();
 
         final String policyForwarderParameterClassName = getParameterGroupClassName(jsonObject);
-        Class<?> policyForwarderParameterClass = getParameterGroupClass(policyForwarderParameterClassName);
+        final Class<?> policyForwarderParameterClass = getParameterGroupClass(policyForwarderParameterClassName);
 
         return context.deserialize(jsonObject.get(POLICY_FORWARDER_PARAMETERS), policyForwarderParameterClass);
     }
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 import org.onap.policy.common.capabilities.Startable;
 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.distribution.main.parameters.RestServerParameters;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to manage life cycle of distribution rest server.
  */
 public class DistributionRestServer implements Startable {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(DistributionRestServer.class);
     private static final String SEPARATOR = ".";
     private static final String HTTP_SERVER_SERVICES = "http.server.services";
-    private static final Logger LOGGER = FlexLogger.getLogger(DistributionRestServer.class);
 
     private List<HttpServletServer> servers = new ArrayList<>();
 
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.main.PolicyDistributionException;
 import org.onap.policy.distribution.main.parameters.DistributionParameterGroup;
 import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerParameters;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class wraps a distributor so that it can be activated as a complete service together with all its distribution
  * and forwarding handlers.
  */
 public class DistributionActivator {
-    // The logger for this class
-    private static final Logger LOGGER = FlexLogger.getLogger(DistributionActivator.class);
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DistributionActivator.class);
 
     // The parameters of this policy distribution activator
     private final DistributionParameterGroup distributionParameterGroup;
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 import java.util.Arrays;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.distribution.main.PolicyDistributionException;
 import org.onap.policy.distribution.main.parameters.DistributionParameterGroup;
 import org.onap.policy.distribution.main.parameters.DistributionParameterHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class initiates ONAP Policy Framework policy distribution.
  * @author Liam Fallon (liam.fallon@ericsson.com)
  */
 public class Main {
-    private static final Logger LOGGER = FlexLogger.getLogger(Main.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
 
     // The policy distribution Activator that activates the policy distribution service
     private DistributionActivator activator;
      */
     public Main(final String[] args) {
         final String argumentString = Arrays.toString(args);
-        LOGGER.info("Starting policy distribution service with arguments - " + argumentString);
+        LOGGER.info("Starting policy distribution service with arguments - {}", argumentString);
 
         // Check the arguments
         final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
 
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.ClientBuilder;
 import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
 import org.junit.Test;
 import org.onap.policy.common.endpoints.report.HealthCheckReport;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.common.utils.network.NetworkUtil;
 import org.onap.policy.distribution.main.PolicyDistributionException;
 import org.onap.policy.distribution.main.parameters.CommonTestData;
 import org.onap.policy.distribution.main.parameters.RestServerParameters;
 import org.onap.policy.distribution.main.startstop.Main;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to perform unit test of HealthCheckMonitor.
  */
 public class TestDistributionRestServer {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(TestDistributionRestServer.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(TestDistributionRestServer.class);
     private static final String NOT_ALIVE = "not alive";
     private static final String ALIVE = "alive";
     private static final String SELF = "self";
     private static final String NAME = "Policy SSD";
 
     @Test
-    public void testHealthCheckSuccess() throws PolicyDistributionException, InterruptedException {
+    public void testHealthCheckSuccess() {
         final String reportString = "Report [name=Policy SSD, url=self, healthy=true, code=200, message=alive]";
-        final Main main = startDistributionService();
-        final HealthCheckReport report = performHealthCheck();
-        validateReport(NAME, SELF, true, 200, ALIVE, reportString, report);
-        stopDistributionService(main);
+        try {
+            final Main main = startDistributionService();
+            final HealthCheckReport report = performHealthCheck();
+            validateReport(NAME, SELF, true, 200, ALIVE, reportString, report);
+            stopDistributionService(main);
+        } catch (final Exception exp) {
+            LOGGER.error("testHealthCheckSuccess failed", exp);
+            fail("Test should not throw an exception");
+        }
     }
 
     @Test
-    public void testHealthCheckFailure() throws InterruptedException {
+    public void testHealthCheckFailure() {
         final String reportString = "Report [name=Policy SSD, url=self, healthy=false, code=500, message=not alive]";
         final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false);
         restServerParams.setName(CommonTestData.DISTRIBUTION_GROUP_NAME);
         final DistributionRestServer restServer = new DistributionRestServer(restServerParams);
-        restServer.start();
-        final HealthCheckReport report = performHealthCheck();
-        validateReport(NAME, SELF, false, 500, NOT_ALIVE, reportString, report);
-        assertTrue(restServer.isAlive());
-        assertTrue(restServer.toString().startsWith("DistributionRestServer [servers="));
-        restServer.shutdown();
+        try {
+            restServer.start();
+            final HealthCheckReport report = performHealthCheck();
+            validateReport(NAME, SELF, false, 500, NOT_ALIVE, reportString, report);
+            assertTrue(restServer.isAlive());
+            assertTrue(restServer.toString().startsWith("DistributionRestServer [servers="));
+            restServer.shutdown();
+        } catch (final Exception exp) {
+            LOGGER.error("testHealthCheckFailure failed", exp);
+            fail("Test should not throw an exception");
+        }
     }
 
     private Main startDistributionService() {
         main.shutdown();
     }
 
-    private HealthCheckReport performHealthCheck() throws InterruptedException {
-        HealthCheckReport response = null;
+    private HealthCheckReport performHealthCheck() throws InterruptedException, IOException {
         final ClientConfig clientConfig = new ClientConfig();
 
         final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
         final WebTarget webTarget = client.target("http://localhost:6969/healthcheck");
 
         final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
-        while (response == null) {
-            try {
-                response = invocationBuilder.get(HealthCheckReport.class);
-            } catch (final Exception exp) {
-                LOGGER.info("the server is not started yet. We will retry again");
-            }
+
+        if (!NetworkUtil.isTcpPortOpen("localhost", 6969, 6, 10000L)) {
+            throw new IllegalStateException("cannot connect to port 6969");
         }
-        return response;
+        return invocationBuilder.get(HealthCheckReport.class);
     }
 
     private void validateReport(final String name, final String url, final boolean healthy, final int code,
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 package org.onap.policy.distribution.main.rest;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
 
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.ClientBuilder;
 import org.glassfish.jersey.client.ClientConfig;
 import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
 import org.junit.Test;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.common.utils.network.NetworkUtil;
 import org.onap.policy.distribution.main.PolicyDistributionException;
 import org.onap.policy.distribution.main.parameters.CommonTestData;
 import org.onap.policy.distribution.main.parameters.RestServerParameters;
 import org.onap.policy.distribution.main.startstop.Main;
 import org.onap.policy.distribution.reception.statistics.DistributionStatisticsManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to perform unit test of {@link DistributionRestController}.
  */
 public class TestDistributionStatistics {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(TestDistributionStatistics.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(TestDistributionStatistics.class);
 
 
     @Test
-    public void testDistributionStatistics_200() throws PolicyDistributionException, InterruptedException {
-        final Main main = startDistributionService();
-        StatisticsReport report = getDistributionStatistics();
-
-        validateReport(report, 0, 200);
-        updateDistributionStatistics();
-        report = getDistributionStatistics();
-        validateReport(report, 1, 200);
-        stopDistributionService(main);
-        DistributionStatisticsManager.resetAllStatistics();
+    public void testDistributionStatistics_200() {
+        try {
+            final Main main = startDistributionService();
+            StatisticsReport report = getDistributionStatistics();
+            validateReport(report, 0, 200);
+            updateDistributionStatistics();
+            report = getDistributionStatistics();
+            validateReport(report, 1, 200);
+            stopDistributionService(main);
+            DistributionStatisticsManager.resetAllStatistics();
+        } catch (final Exception exp) {
+            LOGGER.error("testDistributionStatistics_200 failed", exp);
+            fail("Test should not throw an exception");
+        }
     }
 
     @Test
     public void testDistributionStatistics_500() throws InterruptedException {
         final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false);
         restServerParams.setName(CommonTestData.DISTRIBUTION_GROUP_NAME);
-
         final DistributionRestServer restServer = new DistributionRestServer(restServerParams);
-        restServer.start();
-        final StatisticsReport report = getDistributionStatistics();
-
-        validateReport(report, 0, 500);
-        restServer.shutdown();
-        DistributionStatisticsManager.resetAllStatistics();
+        try {
+            restServer.start();
+            final StatisticsReport report = getDistributionStatistics();
+            validateReport(report, 0, 500);
+            restServer.shutdown();
+            DistributionStatisticsManager.resetAllStatistics();
+        } catch (final Exception exp) {
+            LOGGER.error("testDistributionStatistics_500 failed", exp);
+            fail("Test should not throw an exception");
+        }
     }
 
-
     private Main startDistributionService() {
-        final String[] distributionConfigParameters =
-            { "-c", "parameters/DistributionConfigParameters.json" };
+        final String[] distributionConfigParameters = { "-c", "parameters/DistributionConfigParameters.json" };
         return new Main(distributionConfigParameters);
     }
 
         main.shutdown();
     }
 
-    private StatisticsReport getDistributionStatistics() throws InterruptedException {
-        StatisticsReport response = null;
+    private StatisticsReport getDistributionStatistics() throws InterruptedException, IOException {
         final ClientConfig clientConfig = new ClientConfig();
 
         final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
         final WebTarget webTarget = client.target("http://localhost:6969/statistics");
 
         final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
-        while (response == null) {
-            try {
-                response = invocationBuilder.get(StatisticsReport.class);
-            } catch (final Exception exp) {
-                LOGGER.info("the server is not started yet. We will retry again");
-            }
+
+        if (!NetworkUtil.isTcpPortOpen("localhost", 6969, 6, 10000L)) {
+            throw new IllegalStateException("cannot connect to port 6969");
         }
-        return response;
+        return invocationBuilder.get(StatisticsReport.class);
     }
 
     private void updateDistributionStatistics() {
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Intel. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 package org.onap.policy.distribution.main.rest;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
 
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 import java.security.cert.X509Certificate;
 import java.util.Properties;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
-
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.client.Invocation;
 import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
 import org.junit.Test;
 import org.onap.policy.common.endpoints.report.HealthCheckReport;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.common.utils.network.NetworkUtil;
 import org.onap.policy.distribution.main.PolicyDistributionException;
 import org.onap.policy.distribution.main.startstop.Main;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to perform unit test of HealthCheckMonitor.
  */
 public class TestHttpsDistributionRestServer {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(TestDistributionRestServer.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(TestHttpsDistributionRestServer.class);
     private static final String ALIVE = "alive";
     private static final String SELF = "self";
     private static final String NAME = "Policy SSD";
     private static String KEYSTORE = System.getProperty("user.dir") + "/src/test/resources/ssl/policy-keystore";
 
     @Test
-    public void testHealthCheckSuccess()
-        throws PolicyDistributionException, InterruptedException, KeyManagementException, NoSuchAlgorithmException {
+    public void testHttpsHealthCheckSuccess() {
         final String reportString = "Report [name=Policy SSD, url=self, healthy=true, code=200, message=alive]";
-        final Main main = startDistributionService();
-        final HealthCheckReport report = performHealthCheck();
-        validateReport(NAME, SELF, true, 200, ALIVE, reportString, report);
-        stopDistributionService(main);
+        try {
+            final Main main = startDistributionService();
+            final HealthCheckReport report = performHealthCheck();
+            validateReport(NAME, SELF, true, 200, ALIVE, reportString, report);
+            stopDistributionService(main);
+        } catch (final Exception exp) {
+            LOGGER.error("testHttpsHealthCheckSuccess failed", exp);
+            fail("Test should not throw an exception");
+        }
     }
 
     private Main startDistributionService() {
-        Properties systemProps = System.getProperties();
+        final Properties systemProps = System.getProperties();
         systemProps.put("javax.net.ssl.keyStore", KEYSTORE);
         systemProps.put("javax.net.ssl.keyStorePassword", "Pol1cy_0nap");
         System.setProperties(systemProps);
         main.shutdown();
     }
 
-    private HealthCheckReport performHealthCheck()
-        throws InterruptedException, KeyManagementException, NoSuchAlgorithmException {
-        HealthCheckReport response = null;
+    private HealthCheckReport performHealthCheck() throws Exception {
 
-        TrustManager[] noopTrustManager = new TrustManager[] { new X509TrustManager() {
+        final TrustManager[] noopTrustManager = new TrustManager[] { new X509TrustManager() {
 
             @Override
             public X509Certificate[] getAcceptedIssuers() {
             }
 
             @Override
-            public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-            }
+            public void checkClientTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {}
 
             @Override
-            public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-            }
+            public void checkServerTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {}
         } };
 
-        SSLContext sc = SSLContext.getInstance("TLSv1.2");
+        final SSLContext sc = SSLContext.getInstance("TLSv1.2");
         sc.init(null, noopTrustManager, new SecureRandom());
-        final ClientBuilder clientBuilder = ClientBuilder.newBuilder().sslContext(sc)
-            .hostnameVerifier((host, session) -> true);
+        final ClientBuilder clientBuilder =
+                ClientBuilder.newBuilder().sslContext(sc).hostnameVerifier((host, session) -> true);
         final Client client = clientBuilder.build();
         final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
         client.register(feature);
         final WebTarget webTarget = client.target("https://localhost:6969/healthcheck");
 
         final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
-        while (response == null) {
-            try {
-                response = invocationBuilder.get(HealthCheckReport.class);
-            } catch (final Exception exp) {
-                LOGGER.error("the server is not started yet. We will retry again", exp);
-            }
+
+        if (!NetworkUtil.isTcpPortOpen("localhost", 6969, 6, 10000L)) {
+            throw new IllegalStateException("cannot connect to port 6969");
         }
-        return response;
+        return invocationBuilder.get(HealthCheckReport.class);
     }
 
     private void validateReport(final String name, final String url, final boolean healthy, final int code,
-        final String message, final String reportString, final HealthCheckReport report) {
+            final String message, final String reportString, final HealthCheckReport report) {
         assertEquals(name, report.getName());
         assertEquals(url, report.getUrl());
         assertEquals(healthy, report.isHealthy());
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Intel. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 package org.onap.policy.distribution.main.rest;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
 
 import java.security.KeyManagementException;
 import java.security.NoSuchAlgorithmException;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
-
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.client.Invocation;
 
 import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
 import org.junit.Test;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.common.utils.network.NetworkUtil;
 import org.onap.policy.distribution.main.PolicyDistributionException;
 import org.onap.policy.distribution.main.startstop.Main;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to perform unit test of HealthCheckMonitor.
  */
 public class TestHttpsStatisticDistributionRestServer {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(TestHttpsStatisticDistributionRestServer.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(TestHttpsStatisticDistributionRestServer.class);
     private static String KEYSTORE = System.getProperty("user.dir") + "/src/test/resources/ssl/policy-keystore";
 
     @Test
-    public void testDistributionStatistic()
-        throws PolicyDistributionException, InterruptedException, KeyManagementException, NoSuchAlgorithmException {
-        final String reportString = "StatisticsReport [code=200, totalDistributionCount=0, distributionSuccessCount=0, "
-            + "distributionFailureCount=0, totalDownloadCount=0, " + "downloadSuccessCount=0, downloadFailureCount=0]";
-        final Main main = startDistributionService();
-        final StatisticsReport report = performStatisticCheck();
-        validateReport(200, 0, 0, 0, 0, 0, 0, reportString, report);
-        stopDistributionService(main);
+    public void testHttpsDistributionStatistic()
+            throws PolicyDistributionException, InterruptedException, KeyManagementException, NoSuchAlgorithmException {
+        try {
+            final Main main = startDistributionService();
+            final StatisticsReport report = performStatisticCheck();
+            validateReport(200, 0, 0, 0, 0, 0, 0, report);
+            stopDistributionService(main);
+        } catch (final Exception exp) {
+            LOGGER.error("testHttpsDistributionStatistic failed", exp);
+            fail("Test should not throw an exception");
+        }
     }
 
     private Main startDistributionService() {
-        Properties systemProps = System.getProperties();
+        final Properties systemProps = System.getProperties();
         systemProps.put("javax.net.ssl.keyStore", KEYSTORE);
         systemProps.put("javax.net.ssl.keyStorePassword", "Pol1cy_0nap");
         System.setProperties(systemProps);
         main.shutdown();
     }
 
-    private StatisticsReport performStatisticCheck()
-        throws InterruptedException, KeyManagementException, NoSuchAlgorithmException {
-        StatisticsReport response = null;
+    private StatisticsReport performStatisticCheck() throws Exception {
 
-        TrustManager[] noopTrustManager = new TrustManager[] { new X509TrustManager() {
+        final TrustManager[] noopTrustManager = new TrustManager[] { new X509TrustManager() {
 
             @Override
             public X509Certificate[] getAcceptedIssuers() {
             }
 
             @Override
-            public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-            }
+            public void checkClientTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {}
 
             @Override
-            public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-            }
+            public void checkServerTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {}
         } };
 
-        SSLContext sc = SSLContext.getInstance("TLSv1.2");
+        final SSLContext sc = SSLContext.getInstance("TLSv1.2");
         sc.init(null, noopTrustManager, new SecureRandom());
-        final ClientBuilder clientBuilder = ClientBuilder.newBuilder().sslContext(sc)
-            .hostnameVerifier((host, session) -> true);
+        final ClientBuilder clientBuilder =
+                ClientBuilder.newBuilder().sslContext(sc).hostnameVerifier((host, session) -> true);
         final Client client = clientBuilder.build();
         final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
         client.register(feature);
         final WebTarget webTarget = client.target("https://localhost:6969/statistics");
 
         final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
-        while (response == null) {
-            try {
-                response = invocationBuilder.get(StatisticsReport.class);
-            } catch (final Exception exp) {
-                LOGGER.error("the server is not started yet. We will retry again", exp);
-            }
+
+        if (!NetworkUtil.isTcpPortOpen("localhost", 6969, 6, 10000L)) {
+            throw new IllegalStateException("cannot connect to port 6969");
         }
-        return response;
+        return invocationBuilder.get(StatisticsReport.class);
     }
 
     private void validateReport(final int code, final int total, final int successCount, final int failureCount,
-        final int download, final int downloadSuccess, final int downloadFailure, final String reportString,
-        final StatisticsReport report) {
+            final int download, final int downloadSuccess, final int downloadFailure, final StatisticsReport report) {
         assertEquals(code, report.getCode());
         assertEquals(total, report.getTotalDistributionCount());
         assertEquals(successCount, report.getDistributionSuccessCount());
         assertEquals(download, report.getTotalDownloadCount());
         assertEquals(downloadSuccess, report.getDownloadSuccessCount());
         assertEquals(downloadFailure, report.getDownloadFailureCount());
-        assertEquals(reportString, report.toString());
     }
 }
 
 ARG HTTP_PROXY=${HTTP_PROXY}
 ARG HTTPS_PROXY=${HTTPS_PROXY}
 ARG BUILD_VERSION=${BUILD_VERSION}
-ARG POLICY_LOGS=/var/log/onap
+ARG POLICY_LOGS=/var/log/onap/policy/distribution
 
 ENV http_proxy $HTTP_PROXY
 ENV https_proxy $HTTPS_PROXY
 
   ============LICENSE_END=========================================================
 -->
 
-<configuration scan="true" scanPeriod="3 seconds" debug="true">
-  <!--<jmxConfigurator /> -->
-  <!-- directory path for all other type logs -->
-  <property name="logDir" value="${POLICY_LOGS}" />
-  
-  <!-- directory path for debugging type logs -->
-  <property name="debugDir" value="${POLICY_LOGS}" />
-  
-  <!--  specify the component name 
-    <ONAP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC"  -->
-  <property name="componentName" value="policy"></property>
-  <property name="subComponentName" value="distribution"></property>
-  
-  <!--  log file names -->
-  <property name="errorLogName" value="error" />
-  <property name="metricsLogName" value="metrics" />
-  <property name="auditLogName" value="audit" />
-  <property name="debugLogName" value="debug" />
-  
-  
-      <!-- modified time stamp format -->
- 
-   <!--    A U D I T 
-           <property name="defaultAuditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
-           <property name="defaultAuditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{requestId}|%X{serviceInstanceId}|%t|%X{serverName}|%X{serviceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{instanceUuid}|%p|%X{severity}|%X{serverIpAddress}|%X{ElapsedTime}|%X{server}|%X{clientIpAddress}|%c||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
-   -->
-   <property name="defaultAuditPattern" value="%X{TransactionBeginTimestamp}|%X{TransactionEndTimestamp}|%X{requestId}|%X{serviceInstanceId}|%t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{instanceUuid}|%p|%X{severity}|%X{serverIpAddress}|%X{TransactionElapsedTime}|%X{server}|%X{clientIpAddress}|%c||%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
-  
-  
-  
-   <!--    M E T R I C 
-          <property name="defaultMetricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
-   -->
-   <property name="defaultMetricPattern" value="%X{MetricBeginTimestamp}|%X{MetricEndTimestamp}|%X{requestId}|%X{serviceInstanceId}|%t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%X{statusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%p|%X{severity}|%X{serverIpAddress}|%X{MetricElapsedTime}|%X{server}|%X{clientIpAddress}|%c||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
-  
-     
-   
-   <!--   E R R O R
-          <property name="defaultErrorPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{ErrorCategory}|%X{ErrorCode}|%X{ErrorDesciption}|%msg%n" />
-   -->
-   <property name="defaultErrorPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%X{requestId}|%t|%X{serviceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{ErrorCategory}|%X{ErrorCode}|%X{ErrorDesciption}|%msg%n" />
-  
-  
-  
-   <!--   D E B U G
-          <property name="debugLoggerPatternOld" value="%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|[%caller{3}]|%msg%n" />
-          <property name="debugLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}||%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" /> -->
-   -->
-   <property name="debugLoggerPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%X{RequestId}|%msg%n" />  
-   
- 
-   
-   <!--   D E F A U L T 
-          <property name="defaultPatternOld" value="%d{MM/dd-HH:mm:ss.SSS}|%logger|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}|%msg%n" />
-          <property name="defaultPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%msg%n" />
-   -->
-   <property name="defaultPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX, UTC}|%X{requestId}|%X{serviceInstanceId}|%t|%X{serverName}|%X{serviceName}|%X{instanceUuid}|%p|%X{severity}|%X{serverIpAddress}|%X{server}|%X{clientIpAddress}|%c||%msg%n" />
-   
- 
- 
-   <!--   P A T H
-          <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" />
-          <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" />
-
-   -->   
-   <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" />
-   <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" />
-   
-
- 
- 
-  <!-- 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 -->
-        
-  <!-- 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.SizeAndTimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
-      
-      <!-- keep 30 days' worth of history capped at 3GB total size --> 
-      <maxFileSize>50MB</maxFileSize>
-      <maxHistory>30</maxHistory>
-      <totalSizeCap>10GB</totalSizeCap>
-    </rollingPolicy>
-    
-    <encoder>
-         <pattern>${defaultAuditPattern}</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.SizeAndTimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
-      
-      <!-- keep 30 days' worth of history capped at 3GB total size --> 
-      <maxFileSize>50MB</maxFileSize>
-      <maxHistory>30</maxHistory>
-      <totalSizeCap>10GB</totalSizeCap>
-    </rollingPolicy>
-    
-    <encoder>
-      <pattern>${defaultMetricPattern}</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.SizeAndTimeBasedRollingPolicy">
-      <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
-     
-     <!-- keep 30 days' worth of history capped at 3GB total size --> 
-      <maxFileSize>50MB</maxFileSize>
-      <maxHistory>30</maxHistory>
-      <totalSizeCap>10GB</totalSizeCap>
-    </rollingPolicy>
-    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-     <level>ERROR</level>
-    </filter>
-    <encoder>
-      <pattern>${defaultErrorPattern}</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.SizeAndTimeBasedRollingPolicy">
-      <fileNamePattern>${debugLogDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
-      
-      <!-- keep 30 days' worth of history capped at 3GB total size --> 
-      <maxFileSize>50MB</maxFileSize>
-      <maxHistory>30</maxHistory>
-      <totalSizeCap>10GB</totalSizeCap>
-    </rollingPolicy>
-    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-     <level>DEBUG</level>
-     </filter>
- 
-    <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.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="error" additivity="false">
-  <appender-ref ref="asyncEELFError" />
-  </logger>
-  
-   <logger name="com.att.eelf.debug" level="debug" additivity="false">
-        <appender-ref ref="asyncEELFDebug" />
-  </logger>
-  
-  <logger name="org.onap.sdc" level="trace">
-      <appender-ref ref="asyncEELFDebug" />
-  </logger>
-  
-  
-  <root level="INFO">
-        <appender-ref ref="asyncEELFDebug" />
-        <appender-ref ref="asyncEELFError" />
-  </root>
+<configuration scan="true" scanPeriod="30 seconds" debug="false">
+
+    <property name="logDir" value="${POLICY_LOGS}" />
+
+    <property name="errorLog" value="error" />
+    <property name="debugLog" value="debug" />
+    <property name="networkLog" value="network" />
+
+    <property name="metricLog" value="metric" />
+    <property name="transactionLog" value="audit" />
+
+    <property name="debugPattern"
+        value="[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%level|%logger{0}|%thread] %msg%n" />
+    <property name="errorPattern" value="${debugPattern}" />
+    <property name="networkPattern"
+        value="[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%t]%m%n" />
+
+    <property name="metricPattern"
+        value="%X{RequestID}|%X{InvocationID}|%X{ServiceName}|%X{PartnerName}|%X{BeginTimestamp}|%X{EndTimestamp}|%X{ElapsedTime}|%X{ServiceInstanceID}|%X{VirtualServerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%X{Severity}|%X{TargetEntity}|%X{TargetServiceName}|%X{Server}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ProcessKey}|%X{RemoteHost}|%X{AlertSeverity}|%X{TargetVirtualEntity}|%level|%thread| %msg%n" />
+    <property name="transactionPattern" value="${metricPattern}" />
+
+    <appender name="ErrorOut"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDir}/${errorLog}.log</file>
+        <rollingPolicy
+            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${logDir}/${errorLog}.%d{yyyy-MM-dd}.%i.log.zip
+            </fileNamePattern>
+            <maxFileSize>50MB</maxFileSize>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>10GB</totalSizeCap>
+        </rollingPolicy>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>WARN</level>
+        </filter>
+        <encoder>
+            <pattern>${errorPattern}</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="AsyncErrorOut"
+        class="ch.qos.logback.classic.AsyncAppender">
+        <appender-ref ref="ErrorOut" />
+    </appender>
+
+    <appender name="DebugOut"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDir}/${debugLog}.log</file>
+        <rollingPolicy
+            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${logDir}/${debugLog}.%d{yyyy-MM-dd}.%i.log.zip
+            </fileNamePattern>
+            <maxFileSize>50MB</maxFileSize>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>10GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${debugPattern}</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="AsyncDebugOut"
+        class="ch.qos.logback.classic.AsyncAppender">
+        <appender-ref ref="DebugOut" />
+    </appender>
+
+    <appender name="NetworkOut"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDir}/${networkLog}.log</file>
+        <rollingPolicy
+            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${logDir}/${networkLog}.%d{yyyy-MM-dd}.%i.log.zip
+            </fileNamePattern>
+            <maxFileSize>50MB</maxFileSize>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>10GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${networkPattern}</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="AsyncNetworkOut"
+        class="ch.qos.logback.classic.AsyncAppender">
+        <appender-ref ref="NetworkOut" />
+    </appender>
+
+    <logger name="network" level="INFO" additivity="false">
+        <appender-ref ref="AsyncNetworkOut" />
+    </logger>
+
+    <logger name="org.eclipse.jetty.server.RequestLog" level="info"
+        additivity="false">
+        <appender-ref ref="AsyncNetworkOut" />
+    </logger>
+
+    <root level="INFO">
+        <appender-ref ref="AsyncDebugOut" />
+        <appender-ref ref="AsyncErrorOut" />
+    </root>
 
 </configuration>
 
+++ /dev/null
-###
-# ============LICENSE_START=======================================================
-#  Copyright (C) 2018 Ericsson. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# SPDX-License-Identifier: Apache-2.0
-# ============LICENSE_END=========================================================
-###
-
-################################## Set concurrentHashMap and timer info  #######################
-#Timer initial delay and the delay between in milliseconds before task is to be execute.
-timer.delay.time=1000
-#Timer scheduleAtFixedRate period - time in milliseconds between successive task executions.
-check.interval= 30000
-#Longest time an event info can be stored in the concurrentHashMap for logging - in seconds. 
-event.expired.time=86400
-#Size of the concurrentHashMap which stores the event starting time, etc - when its size reaches this limit, the Timer gets executed 
-#to remove all expired records from this concurrentHashMap.
-concurrentHashMap.limit=5000
-#Size of the concurrentHashMap - when its size drops to this point, stop the Timer
-stop.check.point=2500
-################################### Set logging format #############################################
-# set EELF for EELF logging format, set LOG4J for using log4j, set SYSTEMOUT for using system.out.println
-logger.type=EELF
-#################################### Set level for EELF or SYSTEMOUT logging ##################################
-# Set level for debug file. Set DEBUG to enable .info, .warn and .debug; set INFO for enable .info and .warn; set OFF to disable all 
-debugLogger.level=INFO
-# Set level for metrics file. Set OFF to disable; set ON to enable
-metricsLogger.level=ON
-# Set level for error file. Set OFF to disable; set ON to enable
-error.level=ON
-# Set level for audit file. Set OFF to disable; set ON to enable
-audit.level=ON
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
 import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
 import org.onap.sdc.toscaparser.api.CapabilityAssignment;
 import org.onap.sdc.toscaparser.api.RequirementAssignment;
 import org.onap.sdc.toscaparser.api.RequirementAssignments;
 import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Extract concerned info from NodeTemplate, currently ONLY HPA Feature.
  */
 public class ExtractFromNode {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(ExtractFromNode.class);
+
     private static final String CONFIGURATION_VALUE = "configurationValue";
-    private static final Logger LOGGER = FlexLogger.getLogger(ExtractFromNode.class);
     private static final String VDU_TYPE = "tosca.nodes.nfv.Vdu.Compute";
     private static final String VDU_CP_TYPE = "tosca.nodes.nfv.VduCp";
     private static final String VIRTUAL_MEM_SIZE_PATH = "virtual_memory#virtual_mem_size";
     private static final String MEMORY_PAGE_SIZE_PATH = "virtual_memory#vdu_memory_requirements#memoryPageSize";
     private static final String NETWORK_INTERFACE_TYPE_PATH =
             "virtual_network_interface_requirements#network_interface_requirements#interfaceType";
-    private static final String NETWORK_PCI_PATH = 
+    private static final String NETWORK_PCI_PATH =
             "virtual_network_interface_requirements#nic_io_requirements#logical_node_requirements";
     private static final String BASIC_CAPABILITIES_HPA_FEATURE = "basicCapabilities";
     private static final String HUGE_PAGES_HPA_FEATURE = "hugePages";
      * @throws PolicyDecodingException if extract fails
      */
     public Content extractInfo(final NodeTemplate node) throws PolicyDecodingException {
-        Metadata metaData = sdcCsarHelper.getNodeTemplateMetadata(node);
-        LOGGER.debug("the meta data of this nodetemplate = " + metaData);
+        final Metadata metaData = sdcCsarHelper.getNodeTemplateMetadata(node);
+        LOGGER.debug("the meta data of this nodetemplate = {}", metaData);
         final List<NodeTemplate> lnodeChild = sdcCsarHelper.getNodeTemplateChildren(node);
-        LOGGER.debug("the size of lnodeChild = " + lnodeChild.size());
+        LOGGER.debug("the size of lnodeChild = {}", lnodeChild.size());
 
         // Store all the VDUs under one VNF
         final List<NodeTemplate> lnodeVdu = new ArrayList<>();
         final List<NodeTemplate> lnodeVduCp = new ArrayList<>();
         for (final NodeTemplate nodeChild : lnodeChild) {
             final String type = sdcCsarHelper.getTypeOfNodeTemplate(nodeChild);
-            LOGGER.debug("the type of this nodeChild = " + type);
-            LOGGER.debug("the meta data of this nodeChild = " + sdcCsarHelper.getNodeTemplateMetadata(nodeChild));
+            LOGGER.debug("the type of this nodeChild = {}", type);
+            LOGGER.debug("the meta data of this nodeChild = {}", sdcCsarHelper.getNodeTemplateMetadata(nodeChild));
             if (type.equalsIgnoreCase(VDU_TYPE)) {
                 lnodeVdu.add(nodeChild);
             } else if (type.equalsIgnoreCase(VDU_CP_TYPE)) {
                 lnodeVduCp.add(nodeChild);
             }
         }
-        LOGGER.debug("the size of vdu is =" + lnodeVdu.size());
-        LOGGER.debug("the size of cp is =" + lnodeVduCp.size());
+        LOGGER.debug("the size of vdu is = {}", lnodeVdu.size());
+        LOGGER.debug("the size of cp is = {}", lnodeVduCp.size());
 
         final Content content = new Content();
         content.getResources().add(metaData.getValue("name"));
             flavorDirective.getAttributes().add(flavorAttribute);
             final FlavorFeature flavorFeature = new FlavorFeature();
             flavorFeature.setId(node.toString());
-            LOGGER.debug("the name of node =" + node.toString());
+            LOGGER.debug("the name of node = {}", node);
             flavorFeature.getDirectives().add(flavorDirective);
 
             final CapabilityAssignments capabilityAssignments = sdcCsarHelper.getCapabilitiesOf(node);
         final String virtualMemSize =
                 sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, VIRTUAL_MEM_SIZE_PATH);
         if (virtualMemSize != null) {
-            LOGGER.debug("the virtualMemSize = " + virtualMemSize);
+            LOGGER.debug("the virtualMemSize = {}", virtualMemSize);
             final HpaFeatureAttribute hpaFeatureAttribute =
                     generateHpaFeatureAttribute("virtualMemSize", virtualMemSize);
             final FlavorProperty flavorProperty = new FlavorProperty();
         final String numVirtualCpu =
                 sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, NUM_VIRTUAL_CPU_PATH);
         if (numVirtualCpu != null) {
-            LOGGER.debug("the numVirtualCpu = " + numVirtualCpu);
+            LOGGER.debug("the numVirtualCpu = {}", numVirtualCpu);
             final HpaFeatureAttribute hpaFeatureAttribute = generateHpaFeatureAttribute("numVirtualCpu", numVirtualCpu);
             final String cpuArchitecture =
                     sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, CPU_ARCHITECTURE_PATH);
         final String modifiedValue = featureValue.replace(" ", "");
         final Matcher matcher = PATTERN.matcher(modifiedValue);
         if (matcher.find()) {
-            LOGGER.debug("operator " + matcher.group(1) + ", value = " + matcher.group(2)
-                    + ", unit = " + matcher.group(3));
-            if ( matcher.group(1).length() == 0 ) {
+            final String matcher1 = matcher.group(1);
+            final String matcher2 = matcher.group(2);
+            final String matcher3 = matcher.group(3);
+            LOGGER.debug("operator {} , value = {} , unit = {}", matcher1, matcher2, matcher3);
+            if (matcher.group(1).length() == 0) {
                 hpaFeatureAttribute.setOperator("=");
             } else {
-                hpaFeatureAttribute.setOperator(matcher.group(1));
+                hpaFeatureAttribute.setOperator(matcher1);
             }
-            hpaFeatureAttribute.setHpaAttributeValue(matcher.group(2));
-            hpaFeatureAttribute.setUnit(matcher.group(3));
+            hpaFeatureAttribute.setHpaAttributeValue(matcher2);
+            hpaFeatureAttribute.setUnit(matcher3);
         }
         return hpaFeatureAttribute;
     }
     private void generateHugePages(final CapabilityAssignment capabilityAssignment, final FlavorFeature flavorFeature) {
         final String memoryPageSize =
                 sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, MEMORY_PAGE_SIZE_PATH);
-        LOGGER.debug("the memoryPageSize = " + memoryPageSize);
+        LOGGER.debug("the memoryPageSize = {}", memoryPageSize);
         if (memoryPageSize != null) {
             final Map<String, String> retMap =
                     gson.fromJson(memoryPageSize, new TypeToken<HashMap<String, String>>() {}.getType());
-            LOGGER.debug("the retMap = " + retMap);
+            LOGGER.debug("the retMap = {}", retMap);
             final String memoryPageSizeValue = retMap.get(CONFIGURATION_VALUE);
             final String mandatory = retMap.get("mandatory");
             if (memoryPageSizeValue == null) {
         // each CP will binds to a VDU so need the vdu flavor map info.
         final Map<String, FlavorFeature> vduFlavorMap = new HashMap<>();
         for (final FlavorFeature flavorFeature : content.getFlavorFeatures()) {
-            LOGGER.debug("the id = " + flavorFeature.getId());
+            LOGGER.debug("the id = {}", flavorFeature.getId());
             vduFlavorMap.put(flavorFeature.getId(), flavorFeature);
         }
+        parseNodeVduCp(lnodeVduCp, vduFlavorMap);
+    }
+
+    /**
+     * Parse the VduCp list.
+     *
+     * @param lnodeVduCp the lnodeVduCp
+     * @param vduFlavorMap the vduFlavorMap
+     * @throws PolicyDecodingException if any error occurs
+     */
+    private void parseNodeVduCp(final List<NodeTemplate> lnodeVduCp, final Map<String, FlavorFeature> vduFlavorMap)
+            throws PolicyDecodingException {
         for (final NodeTemplate node : lnodeVduCp) {
             final String interfaceType =
                     sdcCsarHelper.getNodeTemplatePropertyLeafValue(node, NETWORK_INTERFACE_TYPE_PATH);
-            LOGGER.debug("the interfaceType = " + interfaceType);
+            LOGGER.debug("the interfaceType = {}", interfaceType);
             Map<String, Object> retMap = new HashMap<>();
             if (interfaceType != null) {
                 retMap = gson.fromJson(interfaceType, new TypeToken<HashMap<String, Object>>() {}.getType());
-                LOGGER.debug("the retMap = " + retMap);
+                LOGGER.debug("the retMap = {}", retMap);
             }
 
             String networkHpaFeature;
             if (retMap.containsKey(CONFIGURATION_VALUE)
-                && NETWORK_HPA_FEATURE_MAP.containsKey(retMap.get(CONFIGURATION_VALUE).toString())) {
+                    && NETWORK_HPA_FEATURE_MAP.containsKey(retMap.get(CONFIGURATION_VALUE).toString())) {
                 final String interfaceTypeValue = retMap.get(CONFIGURATION_VALUE).toString();
                 networkHpaFeature = NETWORK_HPA_FEATURE_MAP.get(interfaceTypeValue);
-                LOGGER.debug(" the networkHpaFeature is =" + networkHpaFeature);
+                LOGGER.debug(" the networkHpaFeature is = {}", networkHpaFeature);
             } else {
                 LOGGER.debug(" no networkHpaFeature defined in interfaceType");
                 continue;
             }
 
             final RequirementAssignments requriements =
-                sdcCsarHelper.getRequirementsOf(node).getRequirementsByName("virtual_binding");
-            for (final RequirementAssignment requriement: requriements.getAll()) {
+                    sdcCsarHelper.getRequirementsOf(node).getRequirementsByName("virtual_binding");
+            for (final RequirementAssignment requriement : requriements.getAll()) {
                 final String nodeTemplateName = requriement.getNodeTemplateName();
-                LOGGER.debug("getNodeTemplateName =" + nodeTemplateName);
+                LOGGER.debug("getNodeTemplateName = {}", nodeTemplateName);
                 if (nodeTemplateName == null) {
                     continue;
                 }
         flavorProperty.setHpaFeature(networkHpaFeature);
         final String[] pciKeys = { "pciVendorId", "pciDeviceId", "pciNumDevices", "physicalNetwork" };
         for (final String pciKey : pciKeys) {
-            LOGGER.debug("the pciKey = " + pciKey);
+            LOGGER.debug("the pciKey = {}", pciKey);
             final String pciKeyPath = NETWORK_PCI_PATH + "#" + pciKey;
             final String pciValue = sdcCsarHelper.getNodeTemplatePropertyLeafValue(node, pciKeyPath);
             if (pciValue != null) {
-                LOGGER.debug("the pciValue = " + pciValue);
+                LOGGER.debug("the pciValue = {}", pciValue);
                 final Map<String, String> retMap =
                         gson.fromJson(pciValue, new TypeToken<HashMap<String, String>>() {}.getType());
                 final String pciConfigValue = retMap.get(CONFIGURATION_VALUE);
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
+
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.model.Csar;
 import org.onap.policy.distribution.model.OptimizationPolicy;
 import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
 import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
 import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Decodes PDP-X policies from a CSAR file.
  */
 public class PolicyDecoderCsarPdpx implements PolicyDecoder<Csar, OptimizationPolicy> {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(PolicyDecoderCsarPdpx.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(PolicyDecoderCsarPdpx.class);
     private final Gson gson = new GsonBuilder().serializeNulls().disableHtmlEscaping().create();
     private PolicyDecoderCsarPdpxConfigurationParameterGroup decoderParameters;
 
         final List<OptimizationPolicy> policys = new ArrayList<>();
         final ISdcCsarHelper sdcCsarHelper = parseCsar(csar);
         final List<NodeTemplate> lnodeVf = sdcCsarHelper.getServiceVfList();
-        LOGGER.debug("the size of Vf = " + lnodeVf.size());
+        LOGGER.debug("the size of Vf = {}", lnodeVf.size());
         final ExtractFromNode extractFromNode = new ExtractFromNode();
         extractFromNode.setSdcCsarHelper(sdcCsarHelper);
         final String serviceName = sdcCsarHelper.getServiceMetadata().getValue("name");
-        LOGGER.debug("the name of the service = " + serviceName);
+        LOGGER.debug("the name of the service = {}", serviceName);
         for (final NodeTemplate node : lnodeVf) {
             final Content content = extractFromNode.extractInfo(node);
             if (content != null) {
                 final String policyName = decoderParameters.getPolicyNamePrefix() + "." + content.getIdentity();
                 policy.setOnapName(decoderParameters.getOnapName());
                 policy.setPolicyName(policyName);
-                ConfigBody configBody = new ConfigBody();
+                final ConfigBody configBody = new ConfigBody();
                 configBody.setService("hpaPolicy");
                 configBody.setPolicyName(policyName);
                 configBody.setDescription("OOF Policy");
         ISdcCsarHelper sdcCsarHelper;
         try {
             final SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
-            LOGGER.debug("Csar File Path = " + csar.getCsarPath());
+            LOGGER.debug("Csar File Path = {}", csar.getCsarPath());
             final File csarFile = new File(csar.getCsarPath());
             sdcCsarHelper = factory.getSdcCsarHelper(csarFile.getAbsolutePath());
         } catch (final Exception exp) {
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 import java.util.zip.ZipFile;
 
 import org.apache.commons.io.IOUtils;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.model.Csar;
 import org.onap.policy.distribution.model.PolicyAsString;
 import org.onap.policy.distribution.model.PolicyInput;
 import org.onap.policy.distribution.reception.decoding.PolicyDecoder;
 import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class extracts policy files from a CSAR file.
  */
 public class PolicyDecoderFileInCsarToPolicy implements PolicyDecoder<Csar, PolicyAsString> {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(PolicyDecoderFileInCsarToPolicy.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(PolicyDecoderFileInCsarToPolicy.class);
     PolicyDecoderFileInCsarToPolicyParameterGroup decoderParameters;
 
     /**
 
 
 import java.io.IOException;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class implements Runnable interface for creating new thread which will be used as file watcher.
  */
 public class FileClientHandler implements Runnable {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(FileClientHandler.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(FileClientHandler.class);
 
     private FileSystemReceptionHandler fileReceptionHandler;
     private String watchPath;
         try {
             fileReceptionHandler.initFileWatcher(watchPath);
         } catch (final IOException ex) {
-            LOGGER.error(ex);
+            LOGGER.error("Failed initializing file watcher thread", ex);
         }
     }
 }
 
 import java.util.concurrent.TimeUnit;
 import java.util.zip.ZipFile;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.model.Csar;
 import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
 import org.onap.policy.distribution.reception.handling.AbstractReceptionHandler;
 import org.onap.policy.distribution.reception.statistics.DistributionStatisticsManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Handles reception of inputs from File System which can be used to decode policies.
  */
 public class FileSystemReceptionHandler extends AbstractReceptionHandler {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(FileSystemReceptionHandler.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(FileSystemReceptionHandler.class);
     private boolean running = false;
 
     /**
             final Thread fileWatcherThread = new Thread(fileClientHandler);
             fileWatcherThread.start();
         } catch (final Exception ex) {
-            LOGGER.error(ex);
+            LOGGER.error("FileSystemReceptionHandler initialization failed", ex);
         }
     }
 
         try (final WatchService watcher = FileSystems.getDefault().newWatchService()) {
             final Path dir = Paths.get(watchPath);
             dir.register(watcher, ENTRY_CREATE);
-            LOGGER.debug("Watch Service registered for dir: " + dir.getFileName());
+            LOGGER.debug("Watch Service registered for dir: {}", dir.getFileName());
             startWatchService(watcher, dir);
         } catch (final InterruptedException ex) {
-            LOGGER.debug(ex);
+            LOGGER.error("FileWatcher initialization failed", ex);
             Thread.currentThread().interrupt();
         }
     }
             for (final WatchEvent<?> event : key.pollEvents()) {
                 final WatchEvent<Path> ev = (WatchEvent<Path>) event;
                 final Path fileName = ev.context();
-                LOGGER.debug("new CSAR found: " + fileName);
+                LOGGER.debug("new CSAR found: {}", fileName);
                 DistributionStatisticsManager.updateTotalDistributionCount();
                 final String fullFilePath = dir.toString() + File.separator + fileName.toString();
                 waitForFileToBeReady(fullFilePath);
                 createPolicyInputAndCallHandler(fullFilePath);
-                LOGGER.debug("CSAR complete: " + fileName);
+                LOGGER.debug("CSAR complete: {}", fileName);
             }
             final boolean valid = key.reset();
             if (!valid) {
         } catch (final PolicyDecodingException ex) {
             DistributionStatisticsManager.updateDownloadFailureCount();
             DistributionStatisticsManager.updateDistributionFailureCount();
-            LOGGER.error(ex);
+            LOGGER.error("Policy creation failed", ex);
         }
     }
 
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 import java.nio.file.Files;
 import java.nio.file.Path;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.model.Csar;
 import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
 import org.onap.sdc.impl.DistributionClientFactory;
 import org.onap.sdc.utils.DistributionActionResultEnum;
 import org.onap.sdc.utils.DistributionStatusEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Handles reception of inputs from ONAP Service Design and Creation (SDC) from which policies may be decoded.
  */
 public class SdcReceptionHandler extends AbstractReceptionHandler implements INotificationCallback {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(SdcReceptionHandler.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(SdcReceptionHandler.class);
     private static final String SECONDS = "Seconds";
 
     private SdcReceptionHandlerStatus sdcReceptionHandlerStatus = SdcReceptionHandlerStatus.STOPPED;
 
     @Override
     public void activateCallback(final INotificationData notificationData) {
-        LOGGER.debug("Receieved the notification from SDC with ID: " + notificationData.getDistributionID());
+        LOGGER.debug("Receieved the notification from SDC with ID: {}", notificationData.getDistributionID());
         changeSdcReceptionHandlerStatus(SdcReceptionHandlerStatus.BUSY);
         processCsarServiceArtifacts(notificationData);
         changeSdcReceptionHandlerStatus(SdcReceptionHandlerStatus.IDLE);
-        LOGGER.debug("Processed the notification from SDC with ID: " + notificationData.getDistributionID());
+        LOGGER.debug("Processed the notification from SDC with ID: {}", notificationData.getDistributionID());
     }
 
     /**
         }
         final IDistributionClientResult clientResult = distributionClient.init(sdcConfig, this);
         if (!clientResult.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
-            LOGGER.error("SDC client initialization failed with reason:" + clientResult.getDistributionMessageResult()
-                    + ". Initialization will be retried after " + retryDelay + SECONDS);
+            LOGGER.error("SDC client initialization failed with reason: {}. Initialization will be retried after {} {}",
+                    clientResult.getDistributionMessageResult(), retryDelay, SECONDS);
             return;
         }
         LOGGER.debug("SDC Client is initialized successfully");
         }
         final IDistributionClientResult clientResult = distributionClient.start();
         if (!clientResult.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
-            LOGGER.error("SDC client start failed with reason:" + clientResult.getDistributionMessageResult()
-                    + ". Start will be retried after " + retryDelay + SECONDS);
+            LOGGER.error("SDC client start failed with reason: {}. Start will be retried after {} {}",
+                    clientResult.getDistributionMessageResult(), retryDelay, SECONDS);
             return;
         }
         LOGGER.debug("SDC Client is started successfully");
         LOGGER.debug("Going to stop the SDC Client...");
         final IDistributionClientResult clientResult = distributionClient.stop();
         if (!clientResult.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
-            LOGGER.error("SDC client stop failed with reason:" + clientResult.getDistributionMessageResult()
-                    + ". Stop will be retried after " + retryDelay + SECONDS);
+            LOGGER.error("SDC client stop failed with reason: {}. Stop will be retried after {} {}",
+                    clientResult.getDistributionMessageResult(), retryDelay, SECONDS);
             return;
         }
         LOGGER.debug("SDC Client is stopped successfully");
         }
         if (!clientResult.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
             loggerMessage.insert(0, "Failed sending ");
-            LOGGER.debug(loggerMessage);
+            LOGGER.debug("Failed sending {}", loggerMessage);
         } else {
             loggerMessage.insert(0, "Successfully Sent ");
-            LOGGER.debug(loggerMessage);
+            LOGGER.debug("Successfully Sent {}", loggerMessage);
         }
     }
 
             loggerMessage.append(" ErrorReason: ").append(errorReason);
         }
         if (!clientResult.getDistributionActionResult().equals(DistributionActionResultEnum.SUCCESS)) {
-            loggerMessage.insert(0, "Failed sending ");
-            LOGGER.debug(loggerMessage);
+            LOGGER.debug("Failed sending {}", loggerMessage);
         } else {
-            loggerMessage.insert(0, "Successfully Sent ");
-            LOGGER.debug(loggerMessage);
+            LOGGER.debug("Successfully Sent {}", loggerMessage);
         }
     }
 
 
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.mockito.stubbing.Answer;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
 import org.onap.policy.distribution.reception.statistics.DistributionStatisticsManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to perform unit test of {@link FileSystemReceptionHandler}.
 @RunWith(MockitoJUnitRunner.class)
 public class TestFileSystemReceptionHandler {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(TestFileSystemReceptionHandler.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(TestFileSystemReceptionHandler.class);
 
     @Rule
     public TemporaryFolder tempFolder = new TemporaryFolder();
         try {
             sypHandler.initializeReception(pssdConfigParameters.getName());
         } catch (final Exception exp) {
-            LOGGER.error(exp);
+            LOGGER.error("testInit failed", exp);
             fail("Test should not throw any exception");
         }
     }
             sypHandler.initializeReception(pssdConfigParameters.getName());
             sypHandler.destroy();
         } catch (final Exception exp) {
-            LOGGER.error(exp);
+            LOGGER.error("testDestroy failed", exp);
             fail("Test should not throw any exception");
         }
 
             try {
                 sypHandler.initFileWatcher(watchPath);
             } catch (final IOException ex) {
-                LOGGER.error(ex);
+                LOGGER.error("testMain failed", ex);
             }
         });
 
             th.interrupt();
             th.join();
         } catch (final InterruptedException ex) {
-            LOGGER.error(ex);
+            LOGGER.error("testMain failed", ex);
         }
         Mockito.verify(sypHandler, Mockito.times(1)).createPolicyInputAndCallHandler(Mockito.isA(String.class));
 
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Intel. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.forwarding.PolicyForwarder;
 import org.onap.policy.distribution.forwarding.parameters.PolicyForwarderParameters;
 import org.onap.sdc.api.results.IDistributionClientResult;
 import org.onap.sdc.impl.mock.DistributionClientStubImpl;
 import org.onap.sdc.utils.DistributionActionResultEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to perform unit test of {@link SdcReceptionHandler}.
 @RunWith(MockitoJUnitRunner.class)
 public class TestSdcReceptionHandler {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(TestSdcReceptionHandler.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(TestSdcReceptionHandler.class);
     private static final String DUMMY_SERVICE_CSAR = "dummyService.csar";
 
     @Mock
         try {
             sypHandler.initializeReception(pssdConfigParameters.getName());
         } catch (final Exception exp) {
-            LOGGER.error(exp);
+            LOGGER.error("testInitializeSdcClient failed", exp);
             fail("Test should not throw any exception");
         }
     }
         try {
             sypHandler.initializeReception(pssdConfigParameters.getName());
         } catch (final Exception exp) {
-            LOGGER.error(exp);
+            LOGGER.error("testInitializeSdcClient_Failure failed", exp);
             fail("Test should not throw any exception");
         }
     }
                     .thenReturn(successfulClientInitResult);
             sypHandler.initializeReception(pssdConfigParameters.getName());
         } catch (final Exception exp) {
-            LOGGER.error(exp);
+            LOGGER.error("testStartSdcClient_Failure failed", exp);
             fail("Test should not throw any exception");
         }
     }
             sypHandler.initializeReception(pssdConfigParameters.getName());
             sypHandler.destroy();
         } catch (final Exception exp) {
-            LOGGER.error(exp);
+            LOGGER.error("testStopSdcClient failed", exp);
             fail("Test should not throw any exception");
         }
 
         try {
             sypHandler.destroy();
         } catch (final Exception exp) {
-            LOGGER.error(exp);
+            LOGGER.error("testStopSdcClient_Failure failed", exp);
             fail("Test should not throw any exception");
         }
     }
         try {
             sypHandler.destroy();
         } catch (final Exception exp) {
-            LOGGER.error(exp);
+            LOGGER.error("testStopSdcClientWithoutStart", exp);
             fail("Test should not throw any exception");
         }
 
 
   ONAP Policy SDC Service Distribution
   ================================================================================
   Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+  Copyright (C) 2019 Nordix Foundation.
   ================================================================================
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   ============LICENSE_END=========================================================
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <module>reception</module>
         <module>forwarding</module>
         <module>plugins</module>
-       <module>packages</module>
+        <module>packages</module>
     </modules>
 
     <dependencies>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-ext</artifactId>
-            <version>1.8.0-beta2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-core</artifactId>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <scope>test</scope>
         </dependency>
+
         <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
+            <groupId>org.onap.policy.common</groupId>
+            <artifactId>policy-endpoints</artifactId>
+            <version>${policy.common.version}</version>
         </dependency>
     </dependencies>
 
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 import java.util.ArrayList;
 import java.util.Collection;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.forwarding.PolicyForwarder;
 import org.onap.policy.distribution.forwarding.PolicyForwardingException;
 import org.onap.policy.distribution.reception.decoding.PolicyDecoder;
 import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
 import org.onap.policy.distribution.reception.parameters.ReceptionHandlerParameters;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Base implementation of {@link ReceptionHandler}. All reception handlers should extend this base class by implementing
  */
 public abstract class AbstractReceptionHandler implements ReceptionHandler {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(AbstractReceptionHandler.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(AbstractReceptionHandler.class);
 
     private PluginHandler pluginHandler;
 
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 import java.util.Collection;
 import java.util.Map;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.distribution.forwarding.PolicyForwarder;
 import org.onap.policy.distribution.forwarding.parameters.PolicyForwarderParameters;
 import org.onap.policy.distribution.reception.decoding.PolicyDecoder;
 import org.onap.policy.distribution.reception.parameters.PluginHandlerParameters;
 import org.onap.policy.distribution.reception.parameters.PolicyDecoderParameters;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Handles the plugins to policy distribution.
  */
 public class PluginHandler {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(PluginHandler.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(PluginHandler.class);
 
     private Collection<PolicyDecoder<PolicyInput, Policy>> policyDecoders;
     private Collection<PolicyForwarder> policyForwarders;
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 import java.lang.reflect.Type;
 
-import org.slf4j.ext.XLogger;
-import org.slf4j.ext.XLoggerFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class deserialises policy decoder parameters from JSON.
  */
 public class PolicyDecoderConfigurationParametersJsonAdapter
         implements JsonDeserializer<PolicyDecoderConfigurationParameterGroup> {
-    private static final XLogger LOGGER =
-            XLoggerFactory.getXLogger(PolicyDecoderConfigurationParametersJsonAdapter.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(PolicyDecoderConfigurationParametersJsonAdapter.class);
 
     private static final String PARAMETER_CLASS_NAME = "parameterClassName";
     private static final String POLICY_DECODER_PARAMETERS = "parameters";
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.distribution.reception.parameters;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.GroupValidationResult;
 import org.onap.policy.common.parameters.ParameterGroup;
 import org.onap.policy.common.parameters.ValidationStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to hold all the policy decoder parameters.
  */
 public class PolicyDecoderParameters implements ParameterGroup {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(PolicyDecoderParameters.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(PolicyDecoderParameters.class);
 
     private String decoderType;
     private String decoderClassName;
      */
     @Override
     public String getName() {
-        return decoderType;
+        return getDecoderType();
     }
 
     /**
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * 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.
- * 
+ *
  * SPDX-License-Identifier: Apache-2.0
  * ============LICENSE_END=========================================================
  */
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonPrimitive;
+
 import java.lang.reflect.Type;
-import org.slf4j.ext.XLogger;
-import org.slf4j.ext.XLoggerFactory;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class deserialises reception handler parameters from JSON.
  */
 public class ReceptionHandlerConfigurationParametersJsonAdapter
         implements JsonDeserializer<ReceptionHandlerConfigurationParameterGroup> {
-    private static final XLogger LOGGER =
-            XLoggerFactory.getXLogger(ReceptionHandlerConfigurationParametersJsonAdapter.class);
+    private static final Logger LOGGER =
+            LoggerFactory.getLogger(ReceptionHandlerConfigurationParametersJsonAdapter.class);
 
     private static final String PARAMETER_CLASS_NAME = "parameterClassName";
     private static final String RECEPTION_HANDLER_PARAMETERS = "parameters";
         final JsonObject jsonObject = json.getAsJsonObject();
 
         final String receptionHandlerParameterClassName = getParameterGroupClassName(jsonObject);
-        Class<?> receptionHandlerParameterClass = getParameterGroupClass(receptionHandlerParameterClassName);
+        final Class<?> receptionHandlerParameterClass = getParameterGroupClass(receptionHandlerParameterClassName);
 
         return context.deserialize(jsonObject.get(RECEPTION_HANDLER_PARAMETERS), receptionHandlerParameterClass);
     }
 
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2018 Ericsson. All rights reserved.
+ *  Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.distribution.reception.parameters;
 
-import org.onap.policy.common.logging.flexlogger.FlexLogger;
-import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.common.parameters.GroupValidationResult;
 import org.onap.policy.common.parameters.ParameterGroup;
 import org.onap.policy.common.parameters.ValidationStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to hold all the reception handler parameters.
  */
 public class ReceptionHandlerParameters implements ParameterGroup {
 
-    private static final Logger LOGGER = FlexLogger.getLogger(ReceptionHandlerParameters.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(ReceptionHandlerParameters.class);
 
     private String name;
     private String receptionHandlerType;
      *
      * @param receptionHandlerType the reception handler type
      * @param receptionHandlerClassName the reception handler class name
-     * @param receptionHandlerConfigurationName the name of the configuration for the reception
-     *        handler
+     * @param receptionHandlerConfigurationName the name of the configuration for the reception handler
      * @param pluginHandlerParameters the plugin handler parameters
      */
     public ReceptionHandlerParameters(final String receptionHandlerType, final String receptionHandlerClassName,
     }
 
     /**
-     * Return the name of the reception handler configuration for this ReceptionHandlerParameters
-     * instance.
+     * Return the name of the reception handler configuration for this ReceptionHandlerParameters instance.
      *
      * @return the PssdConfigurationParametersGroup
      */