[DMAAP-DR] Remove AAF/TLS phase 1

Signed-off-by: efiacor <fiachra.corcoran@est.tech>
Change-Id: Ifeae01dd8e7f0a737d8b74594a8061ae3d4ea647
Issue-ID: DMAAP-1642
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DRNodeCadiFilter.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DRNodeCadiFilter.java
deleted file mode 100644
index 9cdaeec..0000000
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/DRNodeCadiFilter.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- *  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=========================================================
- */
-
-package org.onap.dmaap.datarouter.node;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import java.io.IOException;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.onap.aaf.cadi.PropAccess;
-import org.onap.aaf.cadi.filter.CadiFilter;
-
-
-public class DRNodeCadiFilter extends CadiFilter {
-
-    private static EELFLogger logger = EELFManager.getInstance().getLogger(DRNodeCadiFilter.class);
-
-    DRNodeCadiFilter(boolean init, PropAccess access) throws ServletException {
-        super(init, access);
-    }
-
-    @Override
-    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
-            throws IOException, ServletException {
-        HttpServletRequest httpRequest = (HttpServletRequest) request;
-        String path = httpRequest.getPathInfo();
-        if (!(path.startsWith("/internal"))) {
-            if (!("POST".equalsIgnoreCase(httpRequest.getMethod()))) {
-                if ("DELETE".equalsIgnoreCase(httpRequest.getMethod()) && path.startsWith("/delete")) {
-                    chain.doFilter(request, response);
-                } else {
-                    doFilterWithFeedId(request, response, chain);
-                }
-            }
-        } else {
-            chain.doFilter(request, response);
-        }
-    }
-
-    private String getFeedId(ServletRequest request, ServletResponse response) {
-        HttpServletRequest req = (HttpServletRequest) request;
-        HttpServletResponse resp = (HttpServletResponse) response;
-        String fileid = req.getPathInfo();
-        if (fileid == null) {
-            logger.error("NODE0105 Rejecting bad URI for PUT " + req.getPathInfo() + " from " + req.getRemoteAddr());
-            try {
-                resp.sendError(HttpServletResponse.SC_NOT_FOUND,
-                        "Invalid request URI.  Expecting <feed-publishing-url>/<fileid>.");
-            } catch (IOException e) {
-                logger.error("NODE0541 DRNodeCadiFilter.getFeedId: ", e);
-            }
-            return null;
-        }
-        String feedid = "";
-
-        if (fileid.startsWith("/publish/")) {
-            fileid = fileid.substring(9);
-            int index = fileid.indexOf('/');
-            if (index == -1 || index == fileid.length() - 1) {
-                logger.error("NODE0105 Rejecting bad URI for PUT (publish) of " + req.getPathInfo() + " from " + req
-                        .getRemoteAddr());
-                try {
-                    resp.sendError(HttpServletResponse.SC_NOT_FOUND,
-                            "Invalid request URI.  Expecting <feed-publishing-url>/<fileid>.  "
-                                    + "Possible missing fileid.");
-                } catch (IOException e) {
-                    logger.error("NODE0542 DRNodeCadiFilter.getFeedId: ", e);
-                }
-                return null;
-            }
-            feedid = fileid.substring(0, index);
-        }
-        return feedid;
-    }
-
-    private void doFilterWithFeedId(ServletRequest request, ServletResponse response, FilterChain chain)
-            throws IOException, ServletException {
-        String feedId = getFeedId(request, response);
-        String aafDbInstance = NodeConfigManager.getInstance().getAafInstance(feedId);
-        if (aafDbInstance != null && !"".equals(aafDbInstance) && !"legacy".equalsIgnoreCase(aafDbInstance)) {
-            logger.info("DRNodeCadiFilter - doFilter: FeedId - " + feedId + ":" + "AAF Instance -" + aafDbInstance);
-            super.doFilter(request, response, chain);
-        } else {
-            logger.info("DRNodeCadiFilter - doFilter: FeedId - " + feedId + ":" + "Legacy Feed");
-            chain.doFilter(request, response);
-        }
-    }
-}
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/IsFrom.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/IsFrom.java
index 91622b3..5cdb344 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/IsFrom.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/IsFrom.java
@@ -37,7 +37,7 @@
  */
 public class IsFrom {
 
-    private static EELFLogger logger = EELFManager.getInstance().getLogger(IsFrom.class);
+    private static final EELFLogger logger = EELFManager.getInstance().getLogger(IsFrom.class);
     private long nextcheck;
     private String[] ips;
     private String fqdn;
@@ -91,9 +91,9 @@
                 return true;
             }
         } catch (UnknownHostException e) {
-            logger.error("IsFrom: UnknownHostEx: " + e.toString(), e);
+            logger.error("IsFrom: UnknownHostEx: " + e, e);
         } catch (IOException e) {
-            logger.error("IsFrom: Failed to parse IP : " + ip + " : " + e.toString(), e);
+            logger.error("IsFrom: Failed to parse IP : " + ip + " : " + e, e);
         }
         return false;
     }
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeAafPropsUtils.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeAafPropsUtils.java
index 0c31db9..ec49807 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeAafPropsUtils.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeAafPropsUtils.java
@@ -29,8 +29,8 @@
 
 class NodeAafPropsUtils {
 
-    private static EELFLogger eelfLogger = EELFManager.getInstance().getLogger(NodeAafPropsUtils.class);
-    private PropAccess propAccess;
+    private static final EELFLogger eelfLogger = EELFManager.getInstance().getLogger(NodeAafPropsUtils.class);
+    private final PropAccess propAccess;
 
     NodeAafPropsUtils(File propsFile) throws IOException {
         propAccess = new PropAccess();
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java
index 3b95023..1debcf6 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java
@@ -25,6 +25,7 @@
 package org.onap.dmaap.datarouter.node;
 
 import static java.lang.System.exit;
+import static java.lang.System.getProperty;
 
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
@@ -54,10 +55,9 @@
 public class NodeConfigManager implements DeliveryQueueHelper {
 
     private static final String NODE_CONFIG_MANAGER = "NodeConfigManager";
-    private static EELFLogger eelfLogger = EELFManager.getInstance().getLogger(NodeConfigManager.class);
-    private static NodeConfigManager base = new NodeConfigManager();
+    private static final EELFLogger eelfLogger = EELFManager.getInstance().getLogger(NodeConfigManager.class);
+    private static NodeConfigManager base;
 
-    private Timer timer = new Timer("Node Configuration Timer", true);
     private long maxfailuretimer;
     private long initfailuretimer;
     private long waitForFileProcessFailureTimer;
@@ -68,16 +68,17 @@
     private double fdpstart;
     private double fdpstop;
     private int deliverythreads;
-    private String provurl;
+    private final String provurl;
     private String provhost;
-    private IsFrom provcheck;
-    private int gfport;
-    private int svcport;
-    private int port;
-    private String spooldir;
-    private String logdir;
-    private long logretention;
-    private String redirfile;
+    private final int intHttpPort;
+    private final int intHttpsPort;
+    private final int extHttpsPort;
+    private String[] enabledprotocols;
+    private final boolean cadiEnabled;
+    private String aafType;
+    private String aafInstance;
+    private String aafAction;
+    private final boolean tlsEnabled;
     private String kstype;
     private String ksfile;
     private String kspass;
@@ -86,66 +87,45 @@
     private String tsfile;
     private String tspass;
     private String myname;
-    private RedirManager rdmgr;
-    private RateLimitedOperation pfetcher;
-    private NodeConfig config;
-    private File quiesce;
-    private PublishId pid;
-    private String nak;
-    private TaskList configtasks = new TaskList();
-    private String eventlogurl;
-    private String eventlogprefix;
-    private String eventlogsuffix;
+    private final String nak;
+    private final File quiesce;
+    private final String spooldir;
+    private final String logdir;
+    private final long logretention;
+    private final String eventlogurl;
+    private final String eventlogprefix;
+    private final String eventlogsuffix;
     private String eventloginterval;
     private boolean followredirects;
-    private String[] enabledprotocols;
-    private String aafType;
-    private String aafInstance;
-    private String aafAction;
-    private boolean tlsEnabled;
-    private boolean cadiEnabled;
+    private final TaskList configtasks = new TaskList();
+    private final PublishId publishId;
+    private final IsFrom provcheck;
+    private final RedirManager rdmgr;
+    private final Timer timer = new Timer("Node Configuration Timer", true);
+    private final RateLimitedOperation pfetcher;
+    private NodeConfig config;
     private NodeAafPropsUtils nodeAafPropsUtils;
+    private static Properties drNodeProperties;
 
-
+    public static Properties getDrNodeProperties() {
+        if (drNodeProperties == null) {
+            try (FileInputStream props = new FileInputStream(getProperty(
+                "org.onap.dmaap.datarouter.node.properties",
+                "/opt/app/datartr/etc/node.properties"))) {
+                drNodeProperties = new Properties();
+                drNodeProperties.load(props);
+            } catch (IOException e) {
+                eelfLogger.error("Failed to load NODE properties: " + e.getMessage(), e);
+                exit(1);
+            }
+        }
+        return drNodeProperties;
+    }
     /**
      * Initialize the configuration of a Data Router node.
      */
     private NodeConfigManager() {
-
-        Properties drNodeProperties = new Properties();
-        try (FileInputStream fileInputStream = new FileInputStream(System
-                .getProperty("org.onap.dmaap.datarouter.node.properties", "/opt/app/datartr/etc/node.properties"))) {
-            eelfLogger.debug("NODE0301 Loading local config file node.properties");
-            drNodeProperties.load(fileInputStream);
-        } catch (Exception e) {
-            NodeUtils.setIpAndFqdnForEelf(NODE_CONFIG_MANAGER);
-            eelfLogger.error(EelfMsgs.MESSAGE_PROPERTIES_LOAD_ERROR, e,
-                    System.getProperty("org.onap.dmaap.datarouter.node.properties",
-                            "/opt/app/datartr/etc/node.properties"));
-        }
-        provurl = drNodeProperties.getProperty("ProvisioningURL", "https://dmaap-dr-prov:8443/internal/prov");
-        String aafPropsFilePath = drNodeProperties
-            .getProperty("AAFPropsFilePath", "/opt/app/osaaf/local/org.onap.dmaap-dr.props");
-        try {
-            nodeAafPropsUtils = new NodeAafPropsUtils(new File(aafPropsFilePath));
-        } catch (IOException e) {
-            eelfLogger.error("NODE0314 Failed to load AAF props. Exiting", e);
-            exit(1);
-        }
-        /*
-         * START - AAF changes: TDP EPIC US# 307413
-         * Pull AAF settings from node.properties
-         */
-        aafType = drNodeProperties.getProperty("AAFType", "org.onap.dmaap-dr.feed");
-        aafInstance = drNodeProperties.getProperty("AAFInstance", "legacy");
-        aafAction = drNodeProperties.getProperty("AAFAction", "publish");
-        cadiEnabled = Boolean.parseBoolean(drNodeProperties.getProperty("CadiEnabled", "false"));
-        /*
-         * END - AAF changes: TDP EPIC US# 307413
-         * Pull AAF settings from node.properties
-         */
-        //Disable and enable protocols*/
-        enabledprotocols = ((drNodeProperties.getProperty("NodeHttpsProtocols")).trim()).split("\\|");
+        provurl = getDrNodeProperties().getProperty("ProvisioningURL", "http://dmaap-dr-prov:8080/internal/prov");
         try {
             provhost = (new URL(provurl)).getHost();
         } catch (Exception e) {
@@ -153,14 +133,49 @@
             eelfLogger.error(EelfMsgs.MESSAGE_BAD_PROV_URL, e, provurl);
             exit(1);
         }
-        eelfLogger.debug("NODE0303 Provisioning server is " + provhost);
-        eventlogurl = drNodeProperties.getProperty("LogUploadURL", "https://feeds-drtr.web.att.com/internal/logs");
+        eelfLogger.debug("NODE0303 Provisioning server is at: " + provhost);
         provcheck = new IsFrom(provhost);
-        gfport = Integer.parseInt(drNodeProperties.getProperty("IntHttpPort", "8080"));
-        svcport = Integer.parseInt(drNodeProperties.getProperty("IntHttpsPort", "8443"));
-        port = Integer.parseInt(drNodeProperties.getProperty("ExtHttpsPort", "443"));
-        spooldir = drNodeProperties.getProperty("SpoolDir", "spool");
-        tlsEnabled = Boolean.parseBoolean(drNodeProperties.getProperty("TlsEnabled", "true"));
+
+        cadiEnabled = Boolean.parseBoolean(getDrNodeProperties().getProperty("CadiEnabled", "false"));
+        if (cadiEnabled) {
+            aafType = getDrNodeProperties().getProperty("AAFType", "org.onap.dmaap-dr.feed");
+            aafInstance = getDrNodeProperties().getProperty("AAFInstance", "legacy");
+            aafAction = getDrNodeProperties().getProperty("AAFAction", "publish");
+        }
+        tlsEnabled = Boolean.parseBoolean(getDrNodeProperties().getProperty("TlsEnabled", "true"));
+        if (isTlsEnabled()) {
+            try {
+                kstype = getDrNodeProperties().getProperty("KeyStoreType", "PKCS12");
+                tstype = getDrNodeProperties().getProperty("TrustStoreType", "jks");
+                enabledprotocols = ((getDrNodeProperties().getProperty("NodeHttpsProtocols")).trim()).split("\\|");
+                nodeAafPropsUtils = new NodeAafPropsUtils(new File(getDrNodeProperties()
+                    .getProperty("AAFPropsFilePath", "/opt/app/osaaf/local/org.onap.dmaap-dr.props")));
+                getSslContextData();
+                if (tsfile != null && tsfile.length() > 0) {
+                    System.setProperty("javax.net.ssl.trustStoreType", tstype);
+                    System.setProperty("javax.net.ssl.trustStore", tsfile);
+                    System.setProperty("javax.net.ssl.trustStorePassword", tspass);
+                }
+                myname = NodeUtils.getCanonicalName(kstype, ksfile, kspass);
+                if (myname == null) {
+                    NodeUtils.setIpAndFqdnForEelf(NODE_CONFIG_MANAGER);
+                    eelfLogger.error(EelfMsgs.MESSAGE_KEYSTORE_FETCH_ERROR, ksfile);
+                    eelfLogger.error("NODE0309 Unable to fetch canonical name from keystore file " + ksfile);
+                    exit(1);
+                }
+                eelfLogger.debug("NODE0304 My certificate says my name is " + myname);
+            } catch (Exception e) {
+                eelfLogger.error("NODE0314 Failed to load AAF props. Exiting", e);
+                exit(1);
+            }
+        }
+        myname = "dmaap-dr-node";
+
+        eventlogurl = getDrNodeProperties().getProperty("LogUploadURL", "https://feeds-drtr.web.att.com/internal/logs");
+        intHttpPort = Integer.parseInt(getDrNodeProperties().getProperty("IntHttpPort", "80"));
+        intHttpsPort = Integer.parseInt(getDrNodeProperties().getProperty("IntHttpsPort", "443"));
+        extHttpsPort = Integer.parseInt(getDrNodeProperties().getProperty("ExtHttpsPort", "443"));
+        spooldir = getDrNodeProperties().getProperty("SpoolDir", "spool");
 
         File fdir = new File(spooldir + "/f");
         fdir.mkdirs();
@@ -171,39 +186,19 @@
                 eelfLogger.error("NODE0313 Failed to clear junk files from " + fdir.getPath(), e);
             }
         }
-        logdir = drNodeProperties.getProperty("LogDir", "logs");
+        logdir = getDrNodeProperties().getProperty("LogDir", "logs");
         (new File(logdir)).mkdirs();
-        logretention = Long.parseLong(drNodeProperties.getProperty("LogRetention", "30")) * 86400000L;
+        logretention = Long.parseLong(getDrNodeProperties().getProperty("LogRetention", "30")) * 86400000L;
         eventlogprefix = logdir + "/events";
         eventlogsuffix = ".log";
-        redirfile = drNodeProperties.getProperty("RedirectionFile", "etc/redirections.dat");
-        kstype = drNodeProperties.getProperty("KeyStoreType", "PKCS12");
-        ksfile = nodeAafPropsUtils.getPropAccess().getProperty("cadi_keystore");
-        kspass = nodeAafPropsUtils.getDecryptedPass("cadi_keystore_password");
-        kpass = nodeAafPropsUtils.getDecryptedPass("cadi_keystore_password");
-        tstype = drNodeProperties.getProperty("TrustStoreType", "jks");
-        tsfile = nodeAafPropsUtils.getPropAccess().getProperty("cadi_truststore");
-        tspass = nodeAafPropsUtils.getDecryptedPass("cadi_truststore_password");
-        if (tsfile != null && tsfile.length() > 0) {
-            System.setProperty("javax.net.ssl.trustStoreType", tstype);
-            System.setProperty("javax.net.ssl.trustStore", tsfile);
-            System.setProperty("javax.net.ssl.trustStorePassword", tspass);
-        }
-        nak = drNodeProperties.getProperty("NodeAuthKey", "Node123!");
-        quiesce = new File(drNodeProperties.getProperty("QuiesceFile", "etc/SHUTDOWN"));
-        myname = NodeUtils.getCanonicalName(kstype, ksfile, kspass);
-        if (myname == null) {
-            NodeUtils.setIpAndFqdnForEelf(NODE_CONFIG_MANAGER);
-            eelfLogger.error(EelfMsgs.MESSAGE_KEYSTORE_FETCH_ERROR, ksfile);
-            eelfLogger.error("NODE0309 Unable to fetch canonical name from keystore file " + ksfile);
-            exit(1);
-        }
-        eelfLogger.debug("NODE0304 My certificate says my name is " + myname);
-        pid = new PublishId(myname);
-        long minrsinterval = Long.parseLong(drNodeProperties.getProperty("MinRedirSaveInterval", "10000"));
-        long minpfinterval = Long.parseLong(drNodeProperties.getProperty("MinProvFetchInterval", "10000"));
-        rdmgr = new RedirManager(redirfile, minrsinterval, timer);
-        pfetcher = new RateLimitedOperation(minpfinterval, timer) {
+        String redirfile = getDrNodeProperties().getProperty("RedirectionFile", "etc/redirections.dat");
+        publishId = new PublishId(myname);
+        nak = getDrNodeProperties().getProperty("NodeAuthKey", "Node123!");
+        quiesce = new File(getDrNodeProperties().getProperty("QuiesceFile", "etc/SHUTDOWN"));
+        rdmgr = new RedirManager(redirfile,
+            Long.parseLong(getDrNodeProperties().getProperty("MinRedirSaveInterval", "10000")), timer);
+        pfetcher = new RateLimitedOperation(
+            Long.parseLong(getDrNodeProperties().getProperty("MinProvFetchInterval", "10000")), timer) {
             public void run() {
                 fetchconfig();
             }
@@ -212,10 +207,21 @@
         pfetcher.request();
     }
 
+    private void getSslContextData() {
+        ksfile = nodeAafPropsUtils.getPropAccess().getProperty("cadi_keystore");
+        kspass = nodeAafPropsUtils.getDecryptedPass("cadi_keystore_password");
+        kpass = nodeAafPropsUtils.getDecryptedPass("cadi_keystore_password");
+        tsfile = nodeAafPropsUtils.getPropAccess().getProperty("cadi_truststore");
+        tspass = nodeAafPropsUtils.getDecryptedPass("cadi_truststore_password");
+    }
+
     /**
      * Get the default node configuration manager.
      */
     public static NodeConfigManager getInstance() {
+        if (base == null) {
+            base = new NodeConfigManager();
+        }
         return base;
     }
 
@@ -302,14 +308,14 @@
             eelfLogger.debug("NodeConfigMan.fetchConfig: provurl:: " + provurl);
             URL url = new URL(provurl);
             Reader reader = new InputStreamReader(url.openStream());
-            config = new NodeConfig(new ProvData(reader), myname, spooldir, port, nak);
+            config = new NodeConfig(new ProvData(reader), myname, spooldir, extHttpsPort, nak);
             localconfig();
             configtasks.startRun();
             runTasks();
         } catch (Exception e) {
             NodeUtils.setIpAndFqdnForEelf("fetchconfigs");
             eelfLogger.error(EelfMsgs.MESSAGE_CONF_FAILED, e.toString());
-            eelfLogger.error("NODE0306 Configuration failed " + e.toString() + " - try again later", e);
+            eelfLogger.error("NODE0306 Configuration failed " + e + " - try again later", e);
             pfetcher.request();
         }
     }
@@ -472,7 +478,7 @@
      * Generate a publish ID.
      */
     public String getPublishId() {
-        return pid.next();
+        return publishId.next();
     }
 
     /**
@@ -677,21 +683,21 @@
      * Get the http port.
      */
     int getHttpPort() {
-        return gfport;
+        return intHttpPort;
     }
 
     /**
      * Get the https port.
      */
     int getHttpsPort() {
-        return svcport;
+        return intHttpsPort;
     }
 
     /**
      * Get the externally visible https port.
      */
     int getExtHttpsPort() {
-        return port;
+        return extHttpsPort;
     }
 
     /**
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeRunner.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeRunner.java
index 2b151ad..485cdb2 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeRunner.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeRunner.java
@@ -34,8 +34,7 @@
  */
 public class NodeRunner {
 
-    private static EELFLogger nodeMainLogger = EELFManager.getInstance().getLogger(NodeRunner.class);
-    private static NodeConfigManager nodeConfigManager;
+    private static final EELFLogger nodeMainLogger = EELFManager.getInstance().getLogger(NodeRunner.class);
 
     private NodeRunner() {
     }
@@ -49,26 +48,26 @@
     public static void main(String[] args) {
         nodeMainLogger.debug("NODE0001 Data Router Node Starting");
         IsFrom.setDNSCache();
-        nodeConfigManager = NodeConfigManager.getInstance();
+        NodeConfigManager nodeConfigManager = NodeConfigManager.getInstance();
         nodeMainLogger.debug("NODE0002 I am " + nodeConfigManager.getMyName());
         (new WaitForConfig(nodeConfigManager)).waitForConfig();
         new LogManager(nodeConfigManager);
         try {
-            Server server = NodeServer.getServerInstance();
+            Server server = NodeServer.getServerInstance(nodeConfigManager);
             server.start();
             server.join();
-            nodeMainLogger.debug("NODE00006 Node Server started-" + server.getState());
+            nodeMainLogger.debug("NODE0006 Node Server started-" + server.getState());
         } catch (Exception e) {
-            nodeMainLogger.error("NODE00006 Jetty failed to start. Reporting will we be unavailable: "
+            nodeMainLogger.error("NODE0006 Jetty failed to start. Reporting will we be unavailable: "
                                          + e.getMessage(), e);
             exit(1);
         }
-        nodeMainLogger.debug("NODE00007 Node Server joined");
+        nodeMainLogger.debug("NODE0007 Node Server joined");
     }
 
     private static class WaitForConfig implements Runnable {
 
-        private NodeConfigManager localNodeConfigManager;
+        private final NodeConfigManager localNodeConfigManager;
 
         WaitForConfig(NodeConfigManager ncm) {
             this.localNodeConfigManager = ncm;
@@ -86,7 +85,7 @@
                     wait();
                 } catch (Exception exception) {
                     nodeMainLogger.error("NodeMain: waitForConfig exception. Exception Message:- "
-                        + exception.toString(), exception);
+                        + exception, exception);
                 }
             }
             localNodeConfigManager.deregisterConfigTask(this);
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServer.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServer.java
index e15d211..cc07ab6 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServer.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServer.java
@@ -42,7 +42,7 @@
 
 public class NodeServer {
 
-    private static EELFLogger eelfLogger = EELFManager.getInstance().getLogger(NodeServer.class);
+    private static final EELFLogger eelfLogger = EELFManager.getInstance().getLogger(NodeServer.class);
 
     private static Server server;
     private static Delivery delivery;
@@ -50,14 +50,15 @@
     private NodeServer(){
     }
 
-    static Server getServerInstance() {
+    static Server getServerInstance(NodeConfigManager nodeConfigManager) {
         if (server == null) {
-            server = createNodeServer(NodeConfigManager.getInstance());
+            server = createNodeServer(nodeConfigManager);
         }
         return server;
     }
 
     private static Server createNodeServer(NodeConfigManager nodeConfigManager) {
+        eelfLogger.info("NODE0005 Creating new NodeServer");
         server = new Server();
         delivery = new Delivery(nodeConfigManager);
 
@@ -70,47 +71,45 @@
             httpServerConnector.setPort(nodeConfigManager.getHttpPort());
             httpServerConnector.setIdleTimeout(2000);
 
-            SslContextFactory sslContextFactory = getSslContextFactory(nodeConfigManager);
+            //Context Handler
+            ServletContextHandler servletContextHandler = new ServletContextHandler(0);
+            servletContextHandler.setContextPath("/");
+            servletContextHandler.addServlet(new ServletHolder(new NodeServlet(delivery, nodeConfigManager)), "/*");
 
-            HttpConfiguration httpsConfiguration = new HttpConfiguration(httpConfiguration);
-            httpsConfiguration.setRequestHeaderSize(8192);
-
-            SecureRequestCustomizer secureRequestCustomizer = new SecureRequestCustomizer();
-            secureRequestCustomizer.setStsMaxAge(2000);
-            secureRequestCustomizer.setStsIncludeSubDomains(true);
-            httpsConfiguration.addCustomizer(secureRequestCustomizer);
-
-            // HTTPS connector
-            try (ServerConnector httpsServerConnector = new ServerConnector(server,
-                new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
-                new HttpConnectionFactory(httpsConfiguration))) {
-
-                httpsServerConnector.setPort(nodeConfigManager.getHttpsPort());
-                httpsServerConnector.setIdleTimeout(3600000);
-                httpsServerConnector.setAcceptQueueSize(2);
-
-                //Context Handler
-                ServletContextHandler servletContextHandler = new ServletContextHandler(0);
-                servletContextHandler.setContextPath("/");
-                servletContextHandler.addServlet(new ServletHolder(new NodeServlet(delivery)), "/*");
-
-                //CADI Filter activation check
-                if (nodeConfigManager.getCadiEnabled()) {
-                    try {
-                        servletContextHandler.addFilter(new FilterHolder(new DRNodeCadiFilter(true,
-                                nodeConfigManager.getNodeAafPropsUtils().getPropAccess())), "/*",
-                            EnumSet.of(DispatcherType.REQUEST));
-                    } catch (ServletException e) {
-                        eelfLogger.error("Failed to add CADI Filter: " + e.getMessage(), e);
-                    }
-                }
-                server.setHandler(servletContextHandler);
-                server.setConnectors(new Connector[]{httpServerConnector, httpsServerConnector});
+            if (nodeConfigManager.isTlsEnabled()) {
+                initialiseHttpsConnector(nodeConfigManager, httpConfiguration, httpServerConnector, servletContextHandler);
+            } else {
+                eelfLogger.info("NODE0005 Adding HTTP Connector");
+                server.setConnectors(new Connector[]{httpServerConnector});
             }
+            server.setHandler(servletContextHandler);
         }
         return server;
     }
 
+    private static void initialiseHttpsConnector(NodeConfigManager nodeConfigManager, HttpConfiguration httpConfiguration,
+        ServerConnector httpServerConnector, ServletContextHandler servletContextHandler) {
+        HttpConfiguration httpsConfiguration = new HttpConfiguration(httpConfiguration);
+        httpsConfiguration.setRequestHeaderSize(8192);
+
+        SecureRequestCustomizer secureRequestCustomizer = new SecureRequestCustomizer();
+        secureRequestCustomizer.setStsMaxAge(2000);
+        secureRequestCustomizer.setStsIncludeSubDomains(true);
+        httpsConfiguration.addCustomizer(secureRequestCustomizer);
+
+        // HTTPS connector
+        try (ServerConnector httpsServerConnector = new ServerConnector(server,
+            new SslConnectionFactory(getSslContextFactory(nodeConfigManager), HttpVersion.HTTP_1_1.asString()),
+            new HttpConnectionFactory(httpsConfiguration))) {
+
+            httpsServerConnector.setPort(nodeConfigManager.getHttpsPort());
+            httpsServerConnector.setIdleTimeout(3600000);
+            httpsServerConnector.setAcceptQueueSize(2);
+            eelfLogger.info("NODE0005 TLS Enabled: Adding HTTP/S Connectors");
+            server.setConnectors(new Connector[]{httpServerConnector, httpsServerConnector});
+        }
+    }
+
     /**
      * Reset the retry timer for a subscription.
      */
@@ -120,7 +119,7 @@
 
 
     @NotNull
-    private static SslContextFactory getSslContextFactory(NodeConfigManager nodeConfigManager) {
+    private static SslContextFactory.Server getSslContextFactory(NodeConfigManager nodeConfigManager) {
         SslContextFactory sslContextFactory = new SslContextFactory.Server();
         sslContextFactory.setKeyStoreType(nodeConfigManager.getKSType());
         sslContextFactory.setKeyStorePath(nodeConfigManager.getKSFile());
@@ -142,6 +141,6 @@
         eelfLogger.info("Supported protocols: " + String.join(",", sslContextFactory.getIncludeProtocols()));
         eelfLogger.info("Unsupported ciphers: " + String.join(",", sslContextFactory.getExcludeCipherSuites()));
         eelfLogger.info("Supported ciphers: " + String.join(",", sslContextFactory.getIncludeCipherSuites()));
-        return sslContextFactory;
+        return (SslContextFactory.Server) sslContextFactory;
     }
 }
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java
index ee1f5b7..80f7e3a 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java
@@ -28,6 +28,7 @@
 
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
+import jakarta.servlet.http.HttpServlet;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.FileWriter;
@@ -40,9 +41,8 @@
 import java.nio.file.Paths;
 import java.util.Enumeration;
 import java.util.regex.Pattern;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.jetbrains.annotations.Nullable;
 import org.onap.dmaap.datarouter.node.eelf.EelfMsgs;
 import org.slf4j.MDC;
@@ -64,9 +64,9 @@
     private static final String INVALID_REQUEST_URI = "Invalid request URI.  Expecting <feed-publishing-url>/<fileid>.";
     private static final String IO_EXCEPTION = "IOException";
     private static final String ON_BEHALF_OF = "X-DMAAP-DR-ON-BEHALF-OF";
-    private static NodeConfigManager config;
-    private static Pattern metaDataPattern;
-    private static EELFLogger eelfLogger = EELFManager.getInstance().getLogger(NodeServlet.class);
+    private final NodeConfigManager config;
+    private static final Pattern metaDataPattern;
+    private static final EELFLogger eelfLogger = EELFManager.getInstance().getLogger(NodeServlet.class);
 
     static {
         final String ws = "\\s*";
@@ -81,7 +81,8 @@
 
     private final Delivery delivery;
 
-    NodeServlet(Delivery delivery) {
+    NodeServlet(Delivery delivery, NodeConfigManager nodeConfigManager) {
+        config = nodeConfigManager;
         this.delivery = delivery;
     }
 
@@ -90,7 +91,6 @@
      */
     @Override
     public void init() {
-        config = NodeConfigManager.getInstance();
         eelfLogger.debug("NODE0101 Node Servlet Configured");
     }
 
@@ -113,7 +113,7 @@
         eelfLogger.info(EelfMsgs.ENTRY);
         try {
             eelfLogger.debug(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(ON_BEHALF_OF),
-                    getIdFromPath(req) + "");
+                getIdFromPath(req) + "");
             if (down(resp)) {
                 return;
             }
@@ -152,7 +152,7 @@
         NodeUtils.setRequestIdAndInvocationId(req);
         eelfLogger.info(EelfMsgs.ENTRY);
         eelfLogger.debug(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(ON_BEHALF_OF),
-                getIdFromPath(req) + "");
+            getIdFromPath(req) + "");
         try {
             common(req, resp, true);
         } catch (IOException ioe) {
@@ -170,7 +170,7 @@
         NodeUtils.setRequestIdAndInvocationId(req);
         eelfLogger.info(EelfMsgs.ENTRY);
         eelfLogger.debug(EelfMsgs.MESSAGE_WITH_BEHALF_AND_FEEDID, req.getHeader(ON_BEHALF_OF),
-                getIdFromPath(req) + "");
+            getIdFromPath(req) + "");
         try {
             common(req, resp, false);
         } catch (IOException ioe) {
@@ -194,7 +194,7 @@
         String lip = req.getLocalAddr();
         String pubid = null;
         String rcvd = NodeUtils.logts(System.currentTimeMillis()) + ";from=" + ip + ";by=" + lip;
-        Target[] targets = null;
+        Target[] targets;
         boolean isAAFFeed = false;
         if (fileid.startsWith("/delete/")) {
             deleteFile(req, resp, fileid, pubid);
@@ -203,7 +203,7 @@
         String credentials = req.getHeader("Authorization");
         if (credentials == null) {
             eelfLogger.error("NODE0306 Rejecting unauthenticated PUT or DELETE of " + req.getPathInfo() + FROM + req
-                    .getRemoteAddr());
+                .getRemoteAddr());
             resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Authorization header required");
             eelfLogger.info(EelfMsgs.EXIT);
             return;
@@ -213,9 +213,9 @@
             int index = fileid.indexOf('/');
             if (index == -1 || index == fileid.length() - 1) {
                 eelfLogger.error("NODE0205 Rejecting bad URI for PUT or DELETE of " + req.getPathInfo() + FROM + req
-                        .getRemoteAddr());
+                    .getRemoteAddr());
                 resp.sendError(HttpServletResponse.SC_NOT_FOUND,
-                        "Invalid request URI.  Expecting <feed-publishing-url>/<fileid>.  Possible missing fileid.");
+                    "Invalid request URI.  Expecting <feed-publishing-url>/<fileid>.  Possible missing fileid.");
                 eelfLogger.info(EelfMsgs.EXIT);
                 return;
             }
@@ -233,7 +233,7 @@
                         if (!req.isUserInRole(permission)) {
                             String message = "AAF disallows access to permission string - " + permission;
                             eelfLogger.error("NODE0307 Rejecting unauthenticated PUT or DELETE of " + req.getPathInfo()
-                                    + FROM + req.getRemoteAddr());
+                                + FROM + req.getRemoteAddr());
                             resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
                             eelfLogger.info(EelfMsgs.EXIT);
                             return;
@@ -259,17 +259,17 @@
             targets = config.parseRouting(req.getHeader("X-DMAAP-DR-ROUTING"));
         } else {
             eelfLogger.error("NODE0204 Rejecting bad URI for PUT or DELETE of " + req.getPathInfo() + FROM + req
-                    .getRemoteAddr());
+                .getRemoteAddr());
             resp.sendError(HttpServletResponse.SC_NOT_FOUND,
-                    INVALID_REQUEST_URI);
+                INVALID_REQUEST_URI);
             eelfLogger.info(EelfMsgs.EXIT);
             return;
         }
         if (fileid.indexOf('/') != -1) {
             eelfLogger.error("NODE0202 Rejecting bad URI for PUT or DELETE of " + req.getPathInfo() + FROM + req
-                    .getRemoteAddr());
+                .getRemoteAddr());
             resp.sendError(HttpServletResponse.SC_NOT_FOUND,
-                    INVALID_REQUEST_URI);
+                INVALID_REQUEST_URI);
             eelfLogger.info(EelfMsgs.EXIT);
             return;
         }
@@ -290,8 +290,8 @@
                 String reason = config.isPublishPermitted(feedid, credentials, ip);
                 if (reason != null) {
                     eelfLogger.error("NODE0111 Rejecting unauthorized publish attempt to feed " + PathUtil
-                            .cleanString(feedid) + " fileid " + PathUtil.cleanString(fileid) + FROM + PathUtil
-                            .cleanString(ip) + " reason " + PathUtil.cleanString(reason));
+                        .cleanString(feedid) + " fileid " + PathUtil.cleanString(fileid) + FROM + PathUtil
+                        .cleanString(ip) + " reason " + PathUtil.cleanString(reason));
                     resp.sendError(HttpServletResponse.SC_FORBIDDEN, reason);
                     eelfLogger.info(EelfMsgs.EXIT);
                     return;
@@ -301,11 +301,11 @@
                 String reason = config.isPublishPermitted(feedid, ip);
                 if (reason != null) {
                     eelfLogger.error("NODE0111 Rejecting unauthorized publish attempt to feed " + PathUtil
-                            .cleanString(feedid) + " fileid " + PathUtil.cleanString(fileid) + FROM + PathUtil
-                            .cleanString(ip) + " reason   Invalid AAF user- " + PathUtil.cleanString(reason));
+                        .cleanString(feedid) + " fileid " + PathUtil.cleanString(fileid) + FROM + PathUtil
+                        .cleanString(ip) + " reason   Invalid AAF user- " + PathUtil.cleanString(reason));
                     String message = "Invalid AAF user- " + PathUtil.cleanString(reason);
                     eelfLogger.debug("NODE0308 Rejecting unauthenticated PUT or DELETE of " + PathUtil
-                            .cleanString(req.getPathInfo()) + FROM + PathUtil.cleanString(req.getRemoteAddr()));
+                        .cleanString(req.getPathInfo()) + FROM + PathUtil.cleanString(req.getRemoteAddr()));
                     resp.sendError(HttpServletResponse.SC_FORBIDDEN, message);
                     return;
                 }
@@ -327,9 +327,9 @@
                 }
                 String redirto = HTTPS + newnode + port + PUBLISH + feedid + "/" + fileid;
                 eelfLogger
-                        .debug("NODE0108 Redirecting publish attempt for feed " + PathUtil.cleanString(feedid) + USER
-                                + PathUtil.cleanString(user) + " ip " + PathUtil.cleanString(ip) + " to " + PathUtil
-                                .cleanString(redirto));  //Fortify scan fixes - log forging
+                    .debug("NODE0108 Redirecting publish attempt for feed " + PathUtil.cleanString(feedid) + USER
+                        + PathUtil.cleanString(user) + " ip " + PathUtil.cleanString(ip) + " to " + PathUtil
+                        .cleanString(redirto));  //Fortify scan fixes - log forging
                 resp.sendRedirect(PathUtil.cleanString(redirto));         //Fortify scan fixes-open redirect - 2 issues
                 eelfLogger.info(EelfMsgs.EXIT);
                 return;
@@ -346,23 +346,23 @@
         try {
             StringBuilder mx = new StringBuilder();
             mx.append(req.getMethod()).append('\t').append(fileid).append('\n');
-            Enumeration hnames = req.getHeaderNames();
+            Enumeration<String> hnames = req.getHeaderNames();
             String ctype = null;
             boolean hasRequestIdHeader = false;
             boolean hasInvocationIdHeader = false;
             while (hnames.hasMoreElements()) {
-                String hn = (String) hnames.nextElement();
+                String hn = hnames.nextElement();
                 String hnlc = hn.toLowerCase();
                 if ((isput && ("content-type".equals(hnlc)
-                        || "content-language".equals(hnlc)
-                        || "content-md5".equals(hnlc)
-                        || "content-range".equals(hnlc)))
-                        || "x-dmaap-dr-meta".equals(hnlc)
-                        || (feedid == null && "x-dmaap-dr-received".equals(hnlc))
-                        || (hnlc.startsWith("x-") && !hnlc.startsWith("x-dmaap-dr-"))) {
-                    Enumeration hvals = req.getHeaders(hn);
+                    || "content-language".equals(hnlc)
+                    || "content-md5".equals(hnlc)
+                    || "content-range".equals(hnlc)))
+                    || "x-dmaap-dr-meta".equals(hnlc)
+                    || (feedid == null && "x-dmaap-dr-received".equals(hnlc))
+                    || (hnlc.startsWith("x-") && !hnlc.startsWith("x-dmaap-dr-"))) {
+                    Enumeration<String> hvals = req.getHeaders(hn);
                     while (hvals.hasMoreElements()) {
-                        String hv = (String) hvals.nextElement();
+                        String hv = hvals.nextElement();
                         if ("content-type".equals(hnlc)) {
                             ctype = hv;
                         }
@@ -375,16 +375,16 @@
                         if ("x-dmaap-dr-meta".equals(hnlc)) {
                             if (hv.length() > 4096) {
                                 eelfLogger.error("NODE0109 Rejecting publish attempt with metadata too long for feed "
-                                        + PathUtil.cleanString(feedid) + USER + PathUtil.cleanString(user) + " ip "
-                                        + PathUtil.cleanString(ip));  //Fortify scan fixes - log forging
+                                    + PathUtil.cleanString(feedid) + USER + PathUtil.cleanString(user) + " ip "
+                                    + PathUtil.cleanString(ip));  //Fortify scan fixes - log forging
                                 resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Metadata too long");
                                 eelfLogger.info(EelfMsgs.EXIT);
                                 return;
                             }
                             if (!metaDataPattern.matcher(hv.replaceAll("\\\\.", "X")).matches()) {
                                 eelfLogger.error("NODE0109 Rejecting publish attempt with malformed metadata for feed "
-                                        + PathUtil.cleanString(feedid) + USER + PathUtil.cleanString(user) + " ip "
-                                        + PathUtil.cleanString(ip));  //Fortify scan fixes - log forging
+                                    + PathUtil.cleanString(feedid) + USER + PathUtil.cleanString(user) + " ip "
+                                    + PathUtil.cleanString(ip));  //Fortify scan fixes - log forging
                                 resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Malformed metadata");
                                 eelfLogger.info(EelfMsgs.EXIT);
                                 return;
@@ -406,7 +406,7 @@
             String message = writeInputStreamToFile(req, data);
             if (message != null) {
                 StatusLog.logPubFail(pubid, feedid, logurl, req.getMethod(), ctype, exlen, data.length(), ip, user,
-                        message);
+                    message);
                 throw new IOException(message);
             }
             Path dpath = Paths.get(fbase);
@@ -417,7 +417,7 @@
                     continue;
                 }
                 String dbase = PathUtil
-                        .cleanString(di.getSpool() + "/" + pubid);  //Fortify scan fixes-Path Manipulation
+                    .cleanString(di.getSpool() + "/" + pubid);  //Fortify scan fixes-Path Manipulation
                 Files.createLink(Paths.get(dbase), dpath);
                 mw = new FileWriter(meta);
                 mw.write(metadata);
@@ -434,19 +434,19 @@
                 resp.getOutputStream().close();
             } catch (IOException ioe) {
                 StatusLog.logPubFail(pubid, feedid, logurl, req.getMethod(), ctype, exlen, data.length(), ip, user,
-                        ioe.getMessage());
+                    ioe.getMessage());
                 //Fortify scan fixes - log forging
                 eelfLogger.error("NODE0110 IO Exception while closing IO stream " + PathUtil.cleanString(feedid)
-                        + USER + PathUtil.cleanString(user) + " ip " + PathUtil.cleanString(ip) + " " + ioe
-                        .toString(), ioe);
+                    + USER + PathUtil.cleanString(user) + " ip " + PathUtil.cleanString(ip) + " " + ioe
+                    .toString(), ioe);
                 throw ioe;
             }
 
             StatusLog.logPub(pubid, feedid, logurl, req.getMethod(), ctype, data.length(), ip, user,
-                    HttpServletResponse.SC_NO_CONTENT);
+                HttpServletResponse.SC_NO_CONTENT);
         } catch (IOException ioe) {
             eelfLogger.error("NODE0110 IO Exception receiving publish attempt for feed " + feedid + USER + user
-                    + " ip " + ip + " " + ioe.toString(), ioe);
+                + " ip " + ip + " " + ioe.toString(), ioe);
             eelfLogger.info(EelfMsgs.EXIT);
             throw ioe;
         } finally {
@@ -481,7 +481,7 @@
         byte[] buf = new byte[1024 * 1024];
         int bytesRead;
         try (OutputStream dos = new FileOutputStream(data);
-                InputStream is = req.getInputStream()) {
+            InputStream is = req.getInputStream()) {
             while ((bytesRead = is.read(buf)) > 0) {
                 dos.write(buf, 0, bytesRead);
             }
@@ -510,9 +510,9 @@
             int index = fileid.indexOf('/');
             if (index == -1 || index == fileid.length() - 1) {
                 eelfLogger.error("NODE0112 Rejecting bad URI for DELETE of " + req.getPathInfo() + FROM + req
-                        .getRemoteAddr());
+                    .getRemoteAddr());
                 resp.sendError(HttpServletResponse.SC_NOT_FOUND,
-                        "Invalid request URI. Expecting <subId>/<pubId>.");
+                    "Invalid request URI. Expecting <subId>/<pubId>.");
                 eelfLogger.info(EelfMsgs.EXIT);
                 return;
             }
@@ -520,7 +520,7 @@
             int subId = Integer.parseInt(subscriptionId);
             pubid = fileid.substring(index + 1);
             String errorMessage = "Unable to delete files (" + pubid + ", " + pubid + FROM_DR_MESSAGE
-                    + config.getMyName() + ".";
+                + config.getMyName() + ".";
             int subIdDir = subId - (subId % 100);
             if (!isAuthorizedToDelete(resp, subscriptionId, errorMessage)) {
                 return;
@@ -528,7 +528,7 @@
             boolean result = delivery.markTaskSuccess(config.getSpoolBase() + "/s/" + subIdDir + "/" + subId, pubid);
             if (result) {
                 eelfLogger.debug("NODE0115 Successfully deleted files (" + pubid + ", " + pubid + FROM_DR_MESSAGE
-                        + config.getMyName());
+                    + config.getMyName());
                 resp.setStatus(HttpServletResponse.SC_OK);
                 eelfLogger.info(EelfMsgs.EXIT);
             } else {
@@ -538,7 +538,7 @@
             }
         } catch (IOException ioe) {
             eelfLogger.error("NODE0117 Unable to delete files (" + pubid + ", " + pubid + FROM_DR_MESSAGE
-                    + config.getMyName(), ioe);
+                + config.getMyName(), ioe);
             eelfLogger.info(EelfMsgs.EXIT);
         }
     }
@@ -551,8 +551,8 @@
         }
         if (!req.isSecure() && config.isTlsEnabled()) {
             eelfLogger.error(
-                    "NODE0104 Rejecting insecure PUT or DELETE of " + req.getPathInfo() + FROM + req
-                            .getRemoteAddr());
+                "NODE0104 Rejecting insecure PUT or DELETE of " + req.getPathInfo() + FROM + req
+                    .getRemoteAddr());
             resp.sendError(HttpServletResponse.SC_FORBIDDEN, "https required on publish requests");
             eelfLogger.info(EelfMsgs.EXIT);
             return null;
@@ -560,9 +560,9 @@
         String fileid = req.getPathInfo();
         if (fileid == null) {
             eelfLogger.error("NODE0201 Rejecting bad URI for PUT or DELETE of " + req.getPathInfo() + FROM + req
-                    .getRemoteAddr());
+                .getRemoteAddr());
             resp.sendError(HttpServletResponse.SC_NOT_FOUND,
-                    INVALID_REQUEST_URI);
+                INVALID_REQUEST_URI);
             eelfLogger.info(EelfMsgs.EXIT);
             return null;
         }
@@ -570,19 +570,19 @@
     }
 
     private boolean isAuthorizedToDelete(HttpServletResponse resp, String subscriptionId, String errorMessage)
-            throws IOException {
+        throws IOException {
         try {
             boolean deletePermitted = config.isDeletePermitted(subscriptionId);
             if (!deletePermitted) {
                 eelfLogger.error("NODE0113 " + errorMessage + " Error: Subscription "
-                        + subscriptionId + " is not a privileged subscription");
+                    + subscriptionId + " is not a privileged subscription");
                 resp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
                 eelfLogger.info(EelfMsgs.EXIT);
                 return false;
             }
         } catch (NullPointerException npe) {
             eelfLogger.error("NODE0114 " + errorMessage + " Error: Subscription " + subscriptionId
-                    + " does not exist", npe);
+                + " does not exist", npe);
             resp.sendError(HttpServletResponse.SC_NOT_FOUND);
             eelfLogger.info(EelfMsgs.EXIT);
             return false;
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeUtils.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeUtils.java
index 2c8dcdb..5cca737 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeUtils.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeUtils.java
@@ -50,8 +50,8 @@
 import javax.naming.InvalidNameException;
 import javax.naming.ldap.LdapName;
 import javax.naming.ldap.Rdn;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.lang3.StringUtils;
 import org.onap.dmaap.datarouter.node.eelf.EelfMsgs;
@@ -62,8 +62,7 @@
  */
 public class NodeUtils {
 
-    private static EELFLogger eelfLogger = EELFManager.getInstance()
-            .getLogger(NodeUtils.class);
+    private static final EELFLogger eelfLogger = EELFManager.getInstance().getLogger(NodeUtils.class);
 
     private NodeUtils() {
     }
diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/PublishId.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/PublishId.java
index d1d2abb..1ffc9ec 100644
--- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/PublishId.java
+++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/PublishId.java
@@ -30,7 +30,7 @@
 public class PublishId {
 
     private long nextuid;
-    private String myname;
+    private final String myname;
 
     /**
      * Generate publish IDs for the specified name.
diff --git a/datarouter-node/src/main/resources/docker/Dockerfile b/datarouter-node/src/main/resources/docker/Dockerfile
index 7bc92c8..38ea3b9 100644
--- a/datarouter-node/src/main/resources/docker/Dockerfile
+++ b/datarouter-node/src/main/resources/docker/Dockerfile
@@ -19,7 +19,7 @@
 #  limitations under the License.
 #  ============LICENSE_END====================================================
 #
-FROM nexus3.onap.org:10001/onap/integration-java11:8.0.0
+FROM nexus3.onap.org:10001/onap/integration-java11:10.0.0
 
 COPY /opt /opt
 
diff --git a/datarouter-node/src/main/resources/node.properties b/datarouter-node/src/main/resources/node.properties
index f7c24fa..ac9aec2 100644
--- a/datarouter-node/src/main/resources/node.properties
+++ b/datarouter-node/src/main/resources/node.properties
@@ -24,16 +24,16 @@
 #    Configuration parameters set at startup for the DataRouter node
 #
 #    URL to retrieve dynamic configuration
-ProvisioningURL = https://dmaap-dr-prov:8443/internal/prov
+ProvisioningURL = http://dmaap-dr-prov/internal/prov
 #
 #    URL to upload PUB/DEL/EXP logs
-LogUploadURL = https://dmaap-dr-prov:8443/internal/logs
+LogUploadURL = http://dmaap-dr-prov/internal/logs
 #
 #    The port number for http as seen within the server
 IntHttpPort = 8080
 #
 #    The port number for https as seen within the server
-IntHttpsPort = 8443
+IntHttpsPort = 8080
 #
 #    The external port number for https taking port mapping into account
 ExtHttpsPort = 443
@@ -71,6 +71,9 @@
 #    DR_NODE DEFAULT ENABLED TLS PROTOCOLS
 NodeHttpsProtocols = TLSv1.1|TLSv1.2
 #
+#    AAF CADI enabled flag
+CadiEnabled = false
+#
 #    AAF type to generate permission string
 AAFType = org.onap.dmaap-dr.feed
 #
@@ -80,11 +83,8 @@
 #    AAF action to generate permission string - default should be publish
 AAFAction = publish
 #
-#    AAF CADI enabled flag
-CadiEnabled = false
-#
 #    AAF Props file path
 AAFPropsFilePath = /opt/app/osaaf/local/org.onap.dmaap-dr.props
 
 #    https security required for publish request
-TlsEnabled = true
+TlsEnabled = false
diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DRNodeCadiFilterTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DRNodeCadiFilterTest.java
deleted file mode 100644
index 0796aa5..0000000
--- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DRNodeCadiFilterTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*

- * ============LICENSE_START=======================================================

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

- */

-

-package org.onap.dmaap.datarouter.node;

-

-import static org.mockito.Mockito.doThrow;

-import static org.mockito.Mockito.mock;

-import static org.mockito.Mockito.times;

-import static org.mockito.Mockito.verify;

-import static org.mockito.Mockito.when;

-

-import java.io.IOException;

-import javax.servlet.FilterChain;

-import javax.servlet.ServletException;

-import javax.servlet.http.HttpServletRequest;

-import javax.servlet.http.HttpServletResponse;

-import org.junit.Before;

-import org.junit.Test;

-import org.junit.runner.RunWith;

-import org.mockito.Mock;

-import org.onap.aaf.cadi.PropAccess;

-import org.onap.aaf.cadi.filter.CadiFilter;

-import org.powermock.api.mockito.PowerMockito;

-import org.powermock.api.support.membermodification.MemberMatcher;

-import org.powermock.core.classloader.annotations.PowerMockIgnore;

-import org.powermock.core.classloader.annotations.PrepareForTest;

-import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;

-import org.powermock.modules.junit4.PowerMockRunner;

-

-@SuppressStaticInitializationFor("org.onap.dmaap.datarouter.node.NodeConfigManager")

-@PrepareForTest({CadiFilter.class})

-@RunWith(PowerMockRunner.class)

-@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*"})

-public class DRNodeCadiFilterTest {

-

-    @Mock

-    private PropAccess access;

-

-    @Mock

-    private HttpServletRequest request;

-

-    @Mock

-    private HttpServletResponse response;

-

-    @Mock

-    private FilterChain chain;

-

-    private DRNodeCadiFilter cadiFilter;

-

-

-    @Before

-    public void setUp() throws ServletException {

-        cadiFilter = new DRNodeCadiFilter(false, access);

-    }

-

-    @Test

-    public void Given_doFilter_Called_And_Method_Is_GET_And_AAF_DB_Instance_Is_NULL_Then_Chain_doFilter_Called()

-            throws Exception {

-        PowerMockito.mockStatic(NodeConfigManager.class);

-        NodeConfigManager config = mock(NodeConfigManager.class);

-

-        PowerMockito.when(NodeConfigManager.getInstance()).thenReturn(config);

-        PowerMockito.when(config.getAafInstance("/other/5")).thenReturn("legacy");

-        when(request.getPathInfo()).thenReturn("/publish/5");

-        when(request.getMethod()).thenReturn("GET");

-        cadiFilter.doFilter(request, response, chain);

-        verify(chain, times(1)).doFilter(request, response);

-    }

-

-    @Test

-    public void Given_doFilter_Called_And_Method_Is_GET_And_Path_Includes_Internal_Then_Chain_doFilter_Called()

-            throws Exception {

-        PowerMockito.mockStatic(NodeConfigManager.class);

-        NodeConfigManager config = mock(NodeConfigManager.class);

-

-        PowerMockito.when(NodeConfigManager.getInstance()).thenReturn(config);

-        PowerMockito.when(config.getAafInstance("/other/5")).thenReturn("legacy");

-        when(request.getPathInfo()).thenReturn("/internal/5");

-        when(request.getMethod()).thenReturn("GET");

-        cadiFilter.doFilter(request, response, chain);

-        verify(chain, times(1)).doFilter(request, response);

-    }

-

-    @Test

-    public void Given_doFilter_Called_And_Method_Is_GET_And_AAF_DB_Is_Not_Null_Then_Super_doFilter_Called()

-            throws Exception {

-        PowerMockito.mockStatic(NodeConfigManager.class);

-        NodeConfigManager config = mock(NodeConfigManager.class);

-

-        PowerMockito.when(NodeConfigManager.getInstance()).thenReturn(config);

-        PowerMockito.when(config.getAafInstance("5")).thenReturn("EXISTS");

-        when(request.getPathInfo()).thenReturn("/publish/5/fileId");

-        when(request.getMethod()).thenReturn("GET");

-        PowerMockito.suppress(MemberMatcher.methodsDeclaredIn(CadiFilter.class));

-        cadiFilter.doFilter(request, response, chain);

-        verify(chain, times(0)).doFilter(request, response);

-    }

-

-    @Test

-    public void Given_getFileid_Called_And_SendError_Fails_Then_Throw_IOException_And_Call_chain_doFilter()

-            throws Exception {

-        PowerMockito.mockStatic(NodeConfigManager.class);

-        NodeConfigManager config = mock(NodeConfigManager.class);

-

-        PowerMockito.when(NodeConfigManager.getInstance()).thenReturn(config);

-        when(request.getPathInfo()).thenReturn("/publish/5");

-        when(request.getMethod()).thenReturn("DELETE");

-        doThrow(new IOException()).when(response).sendError(HttpServletResponse.SC_NOT_FOUND,

-                "Invalid request URI.  Expecting <feed-publishing-url>/<fileid>.  Possible missing fileid.");

-        cadiFilter.doFilter(request, response, chain);

-        verify(chain, times(1)).doFilter(request, response);

-    }

-}

diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DeliveryQueueTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DeliveryQueueTest.java
index fa4966c..d119427 100644
--- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DeliveryQueueTest.java
+++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/DeliveryQueueTest.java
@@ -68,7 +68,7 @@
         when(destInfo.isPrivilegedSubscriber()).thenReturn(true);
         deliveryQueue = new DeliveryQueue(deliveryQueueHelper, destInfo);
         NodeConfigManager configManager = mockNodeConfigManager();
-        FieldUtils.writeDeclaredStaticField(StatusLog.class, "config", configManager, true);
+        FieldUtils.writeDeclaredStaticField(NodeConfigManager.class, "base", configManager, true);
     }
 
     @Test
diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/LogManagerTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/LogManagerTest.java
index 7eacd83..cb3c88a 100644
--- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/LogManagerTest.java
+++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/LogManagerTest.java
@@ -55,7 +55,6 @@
     @Before
     public void setUp() throws IllegalAccessException {
         mockNodeConfigManager();
-        FieldUtils.writeDeclaredStaticField(StatusLog.class, "config", config, true);
         logManager = new LogManager(config);
     }
 
@@ -94,7 +93,7 @@
         assertNull(worker.getFeedId(""));
     }
 
-    private void mockNodeConfigManager() {
+    private void mockNodeConfigManager() throws IllegalAccessException {
         PowerMockito.when(config.getLogDir()).thenReturn(System.getProperty("user.dir") + "/src/test/resources");
         PowerMockito.when(config.getTimer()).thenReturn(new Timer("Node Configuration Timer", true));
         PowerMockito.when(config.getEventLogPrefix())
@@ -104,6 +103,7 @@
         PowerMockito.when(config.getEventLogInterval()).thenReturn("30s");
         PowerMockito.when(config.getPublishId()).thenReturn("123456789.dmaap-dr-node");
         PowerMockito.when(config.getEventLogUrl()).thenReturn("https://dmaap-dr-prov:8443/internal/logs");
+        FieldUtils.writeDeclaredStaticField(NodeConfigManager.class, "base", config, true);
     }
 
 }
diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigManagerTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigManagerTest.java
index 82038fb..046a56e 100644
--- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigManagerTest.java
+++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigManagerTest.java
@@ -47,7 +47,9 @@
 import org.mockito.Mock;
 import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
 
+@SuppressStaticInitializationFor({"org.onap.dmaap.datarouter.node.NodeConfigManager"})
 @PowerMockIgnore({"javax.net.ssl.*", "javax.security.auth.x500.X500Principal", "javax.crypto.*"})
 @PrepareForTest({InetAddress.class})
 public class NodeConfigManagerTest {
@@ -75,7 +77,6 @@
         String href = "https://dmaap-dr-prov:8443/internal/prov";
         URLConnection urlConnection = mock(URLConnection.class);
         httpUrlStreamHandler.addConnection(new URL(href), urlConnection);
-        //File prov = new File("src/test/resources/prov_data.json");
         InputStream anyInputStream = new ByteArrayInputStream(Files.readAllBytes(Paths.get("src/test/resources/prov_data.json")));
         when(urlConnection.getInputStream()).thenReturn(anyInputStream);
     }
@@ -92,7 +93,7 @@
     }
 
     @Test
-    public void Verify_NodeConfigMan_Getters() {
+    public void Verify_NodeConfigMan_Getters_Secure() {
         NodeConfigManager nodeConfigManager = NodeConfigManager.getInstance();
         Assert.assertEquals("legacy", nodeConfigManager.getAafInstance());
         Assert.assertEquals("src/test/resources/spool/f", nodeConfigManager.getSpoolDir());
@@ -110,11 +111,10 @@
         Assert.assertEquals(new String[] {"TLSv1.1", "TLSv1.2"}, nodeConfigManager.getEnabledprotocols());
         Assert.assertEquals("org.onap.dmaap-dr.feed", nodeConfigManager.getAafType());
         Assert.assertEquals("publish", nodeConfigManager.getAafAction());
-        Assert.assertFalse(nodeConfigManager.getCadiEnabled());
+        Assert.assertTrue(nodeConfigManager.getCadiEnabled());
         Assert.assertFalse(nodeConfigManager.isShutdown());
         Assert.assertTrue(nodeConfigManager.isTlsEnabled());
         Assert.assertTrue(nodeConfigManager.isConfigured());
-        Assert.assertEquals("legacy", nodeConfigManager.getAafInstance("1"));
         Assert.assertNotNull(nodeConfigManager.getPublishId());
         Assert.assertNotNull(nodeConfigManager.getAllDests());
         Assert.assertEquals(10000, nodeConfigManager.getInitFailureTimer());
diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServerTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServerTest.java
index 153753e..af43e5d 100644
--- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServerTest.java
+++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServerTest.java
@@ -43,7 +43,7 @@
 @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*"})
 public class NodeServerTest {
 
-    private NodeConfigManager config = mock(NodeConfigManager.class);
+    private final NodeConfigManager config = mock(NodeConfigManager.class);
     @Before
     public void setUp() throws Exception {
         setUpConfig();
@@ -58,7 +58,7 @@
 
     @Test
     public void Verify_Node_Server_Is_Configured_Correctly() {
-        Assert.assertNotNull(NodeServer.getServerInstance());
+        Assert.assertNotNull(NodeServer.getServerInstance(config));
     }
 
     private void setUpConfig() throws IllegalAccessException {
@@ -73,14 +73,13 @@
         when(config.getEventLogInterval()).thenReturn("40");
         when(config.isDeletePermitted("1")).thenReturn(true);
         when(config.getAllDests()).thenReturn(new DestInfo[0]);
+        when(config.isTlsEnabled()).thenReturn(true);
         when(config.getKSType()).thenReturn("PKCS12");
         when(config.getKSFile()).thenReturn("src/test/resources/aaf/org.onap.dmaap-dr.p12");
         when(config.getKSPass()).thenReturn("tVac2#@Stx%tIOE^x[c&2fgZ");
         when(config.getTstype()).thenReturn("jks");
         when(config.getTsfile()).thenReturn("src/test/resources/aaf/org.onap.dmaap-dr.trust.jks");
         when(config.getTspass()).thenReturn("XHX$2Vl?Lk*2CB.i1+ZFAhZd");
-        FieldUtils.writeDeclaredStaticField(NodeServlet.class, "config", config, true);
-        FieldUtils.writeDeclaredStaticField(NodeRunner.class, "nodeConfigManager", config, true);
         PowerMockito.when(NodeConfigManager.getInstance()).thenReturn(config);
     }
 
diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java
index f7e3d7c..0dcc0a1 100644
--- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java
+++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java
@@ -23,6 +23,8 @@
 package org.onap.dmaap.datarouter.node;
 
 import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyObject;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.anyString;
@@ -41,22 +43,27 @@
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.apache.commons.lang3.reflect.FieldUtils;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.BDDMockito;
 import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.internal.matchers.Any;
 import org.powermock.api.mockito.PowerMockito;
 import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
 import org.powermock.modules.junit4.PowerMockRunner;
 import org.slf4j.LoggerFactory;
 
 @RunWith(PowerMockRunner.class)
 @SuppressStaticInitializationFor("org.onap.dmaap.datarouter.node.NodeConfigManager")
+@PrepareForTest(NodeServer.class)
 @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "org.w3c.*"})
 public class NodeServletTest {
 
@@ -84,7 +91,8 @@
         setUpNodeMainDelivery();
         delivery = mock(Delivery.class);
         when(delivery.markTaskSuccess("spool/s/0/1", "dmaap-dr-node.1234567")).thenReturn(true);
-        nodeServlet = new NodeServlet(delivery);
+        PowerMockito.mockStatic(NodeServer.class);
+        nodeServlet = new NodeServlet(delivery, config);
         when(request.getHeader("Authorization")).thenReturn("User1");
         when(request.getHeader("X-DMAAP-DR-PUBLISH-ID")).thenReturn("User1");
     }
@@ -332,31 +340,23 @@
         when(config.getEventLogInterval()).thenReturn("40");
         when(config.isDeletePermitted("1")).thenReturn(true);
         when(config.getAllDests()).thenReturn(new DestInfo[0]);
-        FieldUtils.writeDeclaredStaticField(NodeServlet.class, "config", config, true);
-        FieldUtils.writeDeclaredStaticField(NodeRunner.class, "nodeConfigManager", config, true);
-        PowerMockito.when(NodeConfigManager.getInstance()).thenReturn(config);
+        FieldUtils.writeDeclaredStaticField(NodeConfigManager.class, "base", config, true);
     }
 
     private void setUpConfigToReturnUnprivilegedSubscriber() throws IllegalAccessException {
-        NodeConfigManager config = mock(NodeConfigManager.class);
         PowerMockito.mockStatic(NodeConfigManager.class);
         when(config.isShutdown()).thenReturn(false);
         when(config.isConfigured()).thenReturn(true);
         when(config.isDeletePermitted("1")).thenReturn(false);
-        FieldUtils.writeDeclaredStaticField(NodeServlet.class, "config", config, true);
-        FieldUtils.writeDeclaredStaticField(NodeRunner.class, "nodeConfigManager", config, true);
-        PowerMockito.when(NodeConfigManager.getInstance()).thenReturn(config);
+        FieldUtils.writeDeclaredStaticField(NodeConfigManager.class, "base", config, true);
     }
 
     private void setUpConfigToReturnNullOnIsDeletePermitted() throws IllegalAccessException {
-        NodeConfigManager config = mock(NodeConfigManager.class);
         PowerMockito.mockStatic(NodeConfigManager.class);
         when(config.isShutdown()).thenReturn(false);
         when(config.isConfigured()).thenReturn(true);
         when(config.isDeletePermitted("1")).thenThrow(new NullPointerException());
-        FieldUtils.writeDeclaredStaticField(NodeServlet.class, "config", config, true);
-        FieldUtils.writeDeclaredStaticField(NodeRunner.class, "nodeConfigManager", config, true);
-        PowerMockito.when(NodeConfigManager.getInstance()).thenReturn(config);
+        FieldUtils.writeDeclaredStaticField(NodeConfigManager.class, "base", config, true);
     }
 
     private void setUpNodeMainDelivery() throws IllegalAccessException{
@@ -365,14 +365,12 @@
         FieldUtils.writeDeclaredStaticField(NodeServer.class, "delivery", delivery, true);
     }
 
-    private void setNodeConfigManagerIsConfiguredToReturnFalse() throws IllegalAccessException{
-        NodeConfigManager config = mock(NodeConfigManager.class);
+    private void setNodeConfigManagerIsConfiguredToReturnFalse() throws IllegalAccessException {
         when(config.isConfigured()).thenReturn(false);
-        FieldUtils.writeDeclaredStaticField(NodeServlet.class, "config", config, true);
+        FieldUtils.writeDeclaredStaticField(NodeConfigManager.class, "base", config, true);
     }
 
     private void setNodeConfigManagerIsPublishPermittedToReturnAReason() throws IllegalAccessException{
-        NodeConfigManager config = mock(NodeConfigManager.class);
         when(config.isShutdown()).thenReturn(false);
         when(config.getMyName()).thenReturn("dmaap-dr-node");
         when(config.isConfigured()).thenReturn(true);
@@ -380,11 +378,10 @@
         when(config.getLogDir()).thenReturn("log/dir");
         when(config.isPublishPermitted(anyString(), anyString(), anyString())).thenReturn("Publisher not permitted for this feed");
         when(config.isAnotherNode(anyString(), anyString())).thenReturn(false);
-        FieldUtils.writeDeclaredStaticField(NodeServlet.class, "config", config, true);
+        FieldUtils.writeDeclaredStaticField(NodeConfigManager.class, "base", config, true);
     }
 
-    private void setNodeConfigManagerToAllowRedirectOnIngressNode() throws IllegalAccessException{
-        NodeConfigManager config = mock(NodeConfigManager.class);
+    private void setNodeConfigManagerToAllowRedirectOnIngressNode() {
         when(config.isShutdown()).thenReturn(false);
         when(config.isConfigured()).thenReturn(true);
         when(config.getSpoolDir()).thenReturn("spool/dir");
@@ -394,7 +391,6 @@
         when(config.getAuthUser(anyString(), anyString())).thenReturn("User1");
         when(config.getIngressNode(anyString(), anyString(), anyString())).thenReturn("NewNode");
         when(config.getExtHttpsPort()).thenReturn(8080);
-        FieldUtils.writeDeclaredStaticField(NodeServlet.class, "config", config, true);
     }
 
     private String createLargeMetaDataString() {
diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeUtilsTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeUtilsTest.java
index f3d14df..40cb11f 100644
--- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeUtilsTest.java
+++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeUtilsTest.java
@@ -24,7 +24,7 @@
 
 import static org.mockito.Mockito.when;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/datarouter-node/src/test/resources/node_test.properties b/datarouter-node/src/test/resources/node_test.properties
index 3c96ed2..407d37c 100644
--- a/datarouter-node/src/test/resources/node_test.properties
+++ b/datarouter-node/src/test/resources/node_test.properties
@@ -71,6 +71,9 @@
 #    DR_NODE DEFAULT ENABLED TLS PROTOCOLS
 NodeHttpsProtocols = TLSv1.1|TLSv1.2
 #
+#    AAF CADI enabled flag
+CadiEnabled = true
+#
 #    AAF type to generate permission string
 AAFType = org.onap.dmaap-dr.feed
 #
@@ -80,9 +83,6 @@
 #    AAF action to generate permission string - default should be publish
 AAFAction = publish
 #
-#    AAF CADI enabled flag
-CadiEnabled = false
-#
 #    AAF Props file path
 AAFPropsFilePath = src/test/resources/aaf/org.onap.dmaap-dr.props