diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/BaseServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/BaseServlet.java
index 7a7167d..f8b5934 100755
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/BaseServlet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/BaseServlet.java
@@ -130,7 +130,6 @@
     private static final int DEFAULT_MAX_SUBS = 100000;
     private static final int DEFAULT_POKETIMER1 = 5;
     private static final int DEFAULT_POKETIMER2 = 30;
-    private static final String DEFAULT_DOMAIN = "onap";
     private static final String DEFAULT_PROVSRVR_NAME = "dmaap-dr-prov";
 
     //Common Errors
@@ -229,11 +228,6 @@
     static int activeSubs = 0;
 
     /**
-     * The domain used to generate a FQDN from the "bare" node names.
-     */
-    private static String provDomain = "web.att.com";
-
-    /**
      * The standard FQDN of the provisioning server in this Data Router ecosystem.
      */
     private static String provName = "feeds-drtr.web.att.com";
@@ -539,7 +533,6 @@
         pokeTimer2 = getInt(map, Parameters.PROV_POKETIMER2, DEFAULT_POKETIMER2);
 
         // The domain used to generate a FQDN from the "bare" node names
-        provDomain = getString(map, Parameters.PROV_DOMAIN, DEFAULT_DOMAIN);
         provName = getString(map, Parameters.PROV_NAME, DEFAULT_PROVSRVR_NAME);
         activeProvName = getString(map, Parameters.PROV_ACTIVE_NAME, provName);
         initialActivePod = getString(map, Parameters.ACTIVE_POD, "");
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/GroupServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/GroupServlet.java
index c3cf887..73f859a 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/GroupServlet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/GroupServlet.java
@@ -257,7 +257,7 @@
         // check content type is SUB_CONTENT_TYPE, version 1.0
         ContentHeader ch = getContentHeader(req);
         String ver = ch.getAttribute("version");
-        if (!ch.getType().equals(GROUP_BASECONTENT_TYPE) || !(ver.equals("1.0") || ver.equals("2.0"))) {
+        if (!ch.getType().equals(GROUP_BASECONTENT_TYPE) || !("1.0".equals(ver) || "2.0".equals(ver))) {
             intlogger.debug("Content-type is: " + req.getHeader("Content-Type"));
             message = "Incorrect content-type";
             elr.setMessage(message);
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java
index 9a8037a..c9075b0 100755
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java
@@ -81,10 +81,8 @@
         try {
             // Set up keystore
             Properties props = (new DB()).getProperties();
-            String store = props.getProperty(Main.KEYSTORE_PATH_PROPERTY);
-            String pass = props.getProperty(Main.KEYSTORE_PASS_PROPERTY);
-            store = props.getProperty(Main.TRUSTSTORE_PATH_PROPERTY);
-            pass = props.getProperty(Main.TRUSTSTORE_PASS_PROPERTY);
+            String store = props.getProperty(Main.TRUSTSTORE_PATH_PROPERTY);
+            String pass = props.getProperty(Main.TRUSTSTORE_PASS_PROPERTY);
             if (store == null || store.length() == 0) {
                 store = Main.DEFAULT_TRUSTSTORE;
                 pass = "changeit";
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/StatisticsServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/StatisticsServlet.java
index aba230b..9f113ef 100755
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/StatisticsServlet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/StatisticsServlet.java
@@ -300,14 +300,11 @@
     private String queryGeneretor(Map<String, String> map) throws ParseException {
 
         String sql;
-        String eventType = null;
         String feedids = null;
         String startTime = null;
         String endTime = null;
         String subid = " ";
-        if (map.get(EVENT_TYPE) != null) {
-            eventType =  map.get(EVENT_TYPE);
-        }
+
         if (map.get(FEEDIDS) != null) {
             feedids = map.get(FEEDIDS);
         }
@@ -317,9 +314,6 @@
         if (map.get(END_TIME) != null) {
             endTime =  map.get(END_TIME);
         }
-        if ("all".equalsIgnoreCase(eventType)) {
-            eventType = "PUB','DEL, EXP, PBF";
-        }
         if (map.get(SUBID) != null) {
             subid = map.get(SUBID);
         }
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/BaseLogRecord.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/BaseLogRecord.java
index 8cb4c15..2d3aacf 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/BaseLogRecord.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/BaseLogRecord.java
@@ -58,12 +58,12 @@
         this.eventTime     = dt.getTime();
         this.publishId     = pp[2];
         this.feedid        = Integer.parseInt(pp[3]);
-        if (pp[1].equals("DLX")) {
+        if ("DLX".equals(pp[1])) {
             this.requestUri    = "";
             this.method        = "GET";    // Note: we need a valid value in this field, even though unused
             this.contentType   = "";
             this.contentLength = Long.parseLong(pp[5]);
-        } else  if (pp[1].equals("PUB") || pp[1].equals("LOG") || pp[1].equals("PBF")) {
+        } else  if ("PUB".equals(pp[1]) || "LOG".equals(pp[1]) || "PBF".equals(pp[1])) {
             this.requestUri    = pp[4];
             this.method        = pp[5];
             this.contentType   = pp[6];
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecord.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecord.java
index 4c7fffa..2b4e5a3 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecord.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/ExpiryRecord.java
@@ -64,7 +64,7 @@
         this.fileid = thisFileid;
         this.deliveryAttempts = Integer.parseInt(pp[10]);
         this.reason = pp[9];
-        if (!reason.equals("notRetryable") && !reason.equals("retriesExhausted") && !reason.equals("diskFull")) {
+        if (!"notRetryable".equals(reason) && !"retriesExhausted".equals(reason) && !"diskFull".equals(reason)) {
             this.reason = "other";
         }
     }
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Feed.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Feed.java
index d38681f..3dccc02 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Feed.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/beans/Feed.java
@@ -150,7 +150,7 @@
             this.groupid = jo.optInt("groupid");
             this.name = jo.getString("name");
             this.aafInstance = jo.optString("aaf_instance", "legacy");
-            if (!(aafInstance.equalsIgnoreCase("legacy")) && aafInstance.length() > 255) {
+            if (!("legacy".equalsIgnoreCase(aafInstance)) && aafInstance.length() > 255) {
                 throw new InvalidObjectException("aaf_instance field is too long");
             }
             if (name.length() > 255) {
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DRProvCadiFilter.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DRProvCadiFilter.java
index 8b3d4eb..526bfd5 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DRProvCadiFilter.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DRProvCadiFilter.java
@@ -66,9 +66,9 @@
                 || pathUrl.contains("group"))) {
 
             String method = httpRequest.getMethod().toUpperCase();
-            if (!(method.equals("POST"))) {
+            if (!("POST".equals(method))) {
                 // if request method is PUT method (publish or Feed update) Needs to check for DELETE
-                if (method.equals("PUT") || method.equals("DELETE")) {
+                if ("PUT".equals(method) || "DELETE".equals(method)) {
                     if ((pathUrl.contains("subs"))) { //edit subscriber
                         int subId = BaseServlet.getIdFromPath(httpRequest);
                         if (subId <= 0) {
@@ -209,7 +209,7 @@
         try {
             Feed feed = Feed.getFeedById(feedId);
             if (feed != null) {
-                if (!((feed.getAafInstance().equalsIgnoreCase("legacy")) || feed.getAafInstance() == null
+                if (!(("legacy".equalsIgnoreCase(feed.getAafInstance())) || feed.getAafInstance() == null
                               || feed.getAafInstance().equals(""))) { //also apply null check and empty check too
                     aafInstance = feed.getAafInstance();
                     String message = "DRProvCadiFilter.isAAFFeed: aafInstance-:" + aafInstance + "; feedId:- " + feedId;
@@ -241,9 +241,9 @@
         try {
             Subscription subscriber = Subscription.getSubscriptionById(subId);
             if (subscriber != null) {
-                if (!((subscriber.getAafInstance().equalsIgnoreCase("legacy"))
+                if (!(("legacy".equalsIgnoreCase(subscriber.getAafInstance()))
                               || subscriber.getAafInstance() == null
-                              || subscriber.getAafInstance().equals(""))) { //also apply null check and empty check too
+                              || "".equals(subscriber.getAafInstance()))) { //also apply null check and empty check too
                     aafInstance = subscriber.getAafInstance();
                     String message = "DRProvCadiFilter.isAAFSubscriber: aafInstance-:" + aafInstance + "; subId:- "
                                              + subId;
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 88bd296..ba6df5d 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -7,13 +7,50 @@
 Release-notes
 ==============
 
+Version: 2.1.2 (El Alto)
+---------------------------
+
+:Release Date: 2019-09-05
+
+The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and subscriptions.
+
+New Features:
+
++----------------+---------------------------------------------------------------------------------------------------------------------------------+
+| JIRA ID        | Description                                                                                                                     |
++================+=================================================================================================================================+
+| DMAAP-1227     | Updating logging functionality to log events into correct log files as specified in logging spec                                |                                                                        |
++----------------+---------------------------------------------------------------------------------------------------------------------------------+
+| DMAAP-1228     | Updating Logging pattern to match logging spec                                                                                  |
++----------------+---------------------------------------------------------------------------------------------------------------------------------+
+| DMAAP-1049     | [DR] Update DR logging to match Platform maturity Logging Spec                                                                  |
++----------------+---------------------------------------------------------------------------------------------------------------------------------+
+
+Bug Fixes:
+N/A
+
+Known Issues:
+N/A
+
+Security Issues:
+N/A
+
+Upgrade Notes:
+N/A
+
+Deprecation Notes:
+N/A
+
+Other:
+N/A
+
+
 Version: 2.1.0 (Dublin)
 ---------------------------
 
 :Release Date: 2019-06-06
 
-The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and
-subscriptions.
+The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and subscriptions.
 
 New Features:
 
@@ -43,10 +80,10 @@
 | DMAAP-1161     | [DR] filebeat container on DR-Node and DR-Prov are unable to publish to kibana                   |
 +----------------+--------------------------------------------------------------------------------------------------+
 
-Known Issues
+Known Issues:
 N/A
 
-Security Issues
+Security Issues:
 
 *Fixed Security Issues*
 
@@ -64,13 +101,13 @@
 - `Passing Badge information for DMAAP DataRouter <https://bestpractices.coreinfrastructure.org/en/projects/2192>`_
 - `Project Vulnerability Review Table for DMAAP <https://wiki.onap.org/pages/viewpage.action?pageId=42598688>`_
 
-Upgrade Notes
+Upgrade Notes:
 N/A
 
-Deprecation Notes
+Deprecation Notes:
 N/A
 
-Other
+Other:
 N/A
 
 
@@ -79,8 +116,7 @@
 
 :Release Date: 2019-02-28
 
-The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and
-subscriptions.
+The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and subscriptions.
 
 New Features:
 
@@ -97,10 +133,10 @@
 | DMAAP-1065     | [DR] Casablanca - AAF certs expired on dmaap-dr-prov and dmaap-dr-node                           |
 +----------------+--------------------------------------------------------------------------------------------------+
 
-Known Issues
+Known Issues:
 N/A
 
-Security Issues
+Security Issues:
 DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been
 addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open
 Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=42598688>`_.
@@ -109,13 +145,13 @@
 - `Passing Badge information for DMAAP DataRouter <https://bestpractices.coreinfrastructure.org/en/projects/2192>`_
 - `Project Vulnerability Review Table for DMAAP <https://wiki.onap.org/pages/viewpage.action?pageId=42598688>`_
 
-Upgrade Notes
+Upgrade Notes:
 N/A
 
-Deprecation Notes
+Deprecation Notes:
 N/A
 
-Other
+Other:
 N/A
 
 
@@ -124,8 +160,7 @@
 
 :Release Date: 2018-11-30
 
-The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and
-subscriptions.
+The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and subscriptions.
 
 New Features:
 
@@ -151,10 +186,10 @@
 | DMAAP-565      | Incorrect nexusUrl parameter in datarouter pom files                                                                            |
 +----------------+---------------------------------------------------------------------------------------------------------------------------------+
 
-Known Issues
+Known Issues:
 N/A
 
-Security Issues
+Security Issues:
 DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been
 addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open
 Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=42598688>`_.
@@ -163,11 +198,11 @@
 - `Passing Badge information for DMAAP DataRouter <https://bestpractices.coreinfrastructure.org/en/projects/2192>`_
 - `Project Vulnerability Review Table for DMAAP <https://wiki.onap.org/pages/viewpage.action?pageId=42598688>`_
 
-Upgrade Notes
+Upgrade Notes:
 N/A
 
-Deprecation Notes
+Deprecation Notes:
 N/A
 
-Other
-N/A
+Other:
+N/A
\ No newline at end of file
