diff --git a/adapters/mso-network-adapter/src/main/java/org/openecomp/mso/adapters/network/BpelRestClient.java b/adapters/mso-network-adapter/src/main/java/org/openecomp/mso/adapters/network/BpelRestClient.java
index 4218ad8..90d1180 100644
--- a/adapters/mso-network-adapter/src/main/java/org/openecomp/mso/adapters/network/BpelRestClient.java
+++ b/adapters/mso-network-adapter/src/main/java/org/openecomp/mso/adapters/network/BpelRestClient.java
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
+ * ONAP - SO
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
@@ -176,7 +176,7 @@
 			try {
 				s.add(Integer.parseInt(t));
 			} catch (NumberFormatException x) {
-				// ignore
+				LOGGER.debug("Exception while parsing", x);
 			}
 		}
 		this.retryList = s;
@@ -227,7 +227,7 @@
 			try {
 				Thread.sleep(sleepinterval * 1000L);
 			} catch (InterruptedException e) {
-				// ignore
+				LOGGER.debug("Exception while Thread sleep", e);
 			}
 		}
 	}
@@ -240,7 +240,7 @@
 		LOGGER.debug("Content is: "+toBpelStr);
 
 		//Client 4.3+
-		CloseableHttpClient client = HttpClients.createDefault();
+		CloseableHttpClient client = null;
 
 		//POST
 		HttpPost post = new HttpPost(bpelUrl);
@@ -262,6 +262,7 @@
         //Client 4.3+
 		//Execute & GetResponse
 		try {
+		    client = HttpClients.createDefault();
 			CloseableHttpResponse response = client.execute(post);
 			if (response != null) {
 				lastResponseCode = response.getStatusLine().getStatusCode();
@@ -277,10 +278,12 @@
 			lastResponseCode = 900;
 			lastResponse = "";
 		} finally {
-			try {
-				client.close();
-			} catch (IOException e) {
-				// ignore
+			if(client != null){
+				try {
+					client.close();
+				} catch (IOException e) {
+					LOGGER.debug("Exception while closing client", e);
+				}
 			}
 		}
 		LOGGER.debug("Response code from BPEL server: "+lastResponseCode);
diff --git a/adapters/mso-network-adapter/src/main/java/org/openecomp/mso/adapters/network/MsoNetworkAdapterAsyncImpl.java b/adapters/mso-network-adapter/src/main/java/org/openecomp/mso/adapters/network/MsoNetworkAdapterAsyncImpl.java
index d697182..0878bc5 100644
--- a/adapters/mso-network-adapter/src/main/java/org/openecomp/mso/adapters/network/MsoNetworkAdapterAsyncImpl.java
+++ b/adapters/mso-network-adapter/src/main/java/org/openecomp/mso/adapters/network/MsoNetworkAdapterAsyncImpl.java
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * OPENECOMP - MSO
+ * ONAP - SO
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
@@ -600,8 +600,9 @@
             LOGGER.error (MessageEnum.RA_INIT_NOTIF_EXC, "", "", MsoLogger.ErrorCode.DataError, "Exception - init notification", e1);
         }
 
-        LOGGER.debug ("Notification Endpoint URL: " + epUrl.toExternalForm ());
-
+        if(null != epUrl) {
+            LOGGER.debug ("Notification Endpoint URL: " + epUrl.toExternalForm ());
+        }
         bp.getRequestContext ().put (BindingProvider.ENDPOINT_ADDRESS_PROPERTY, epUrl.toExternalForm ());
 
         // authentication
diff --git a/bpmn/MSOURN-plugin/src/main/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResource.java b/bpmn/MSOURN-plugin/src/main/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResource.java
index 5ef77ee..1a4c16d 100644
--- a/bpmn/MSOURN-plugin/src/main/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResource.java
+++ b/bpmn/MSOURN-plugin/src/main/java/org/openecomp/camunda/bpmn/plugin/urnmap/resources/URNResource.java
@@ -82,21 +82,21 @@
 				
 		} catch (Exception e) 
 		{
-			msoLogger.debug("Exception in getUrnDataMap " + e);			
+			msoLogger.debug("Exception in getUrnDataMap ", e);			
 		} finally {
 			if(psData != null){
 				try {
 					psData.close();
 					conn.close();
 				} catch (SQLException e) {
-					msoLogger.debug("Exception while closing the PreparedStatement: " + e);
+					msoLogger.debug("Exception while closing the PreparedStatement: ", e);
 				}
 			}
 			if(conn != null){
 				try {
 					conn.close();
 				} catch (SQLException e) {
-					msoLogger.debug("Exception while closing the connection: " + e);
+					msoLogger.debug("Exception while closing the connection: ", e);
 				}
 			}
 		}
@@ -143,7 +143,7 @@
 			
 		} catch (Exception e) 
 		{
-			msoLogger.debug("Exception in DBConnection " + e);
+			msoLogger.debug("Exception in DBConnection ", e);
 		}
 	  
 	  return conn;
@@ -183,21 +183,21 @@
 			
 		} catch (Exception e) 
 		{
-			msoLogger.debug("Exception in insertNewRow " + e);
+			msoLogger.debug("Exception in insertNewRow ", e);
 		}finally {
 			if(psData != null){
 				try {
 					psData.close();
 					conn.close();
 				} catch (SQLException e) {
-					msoLogger.debug("Exception while closing the PreparedStatement: " + e);
+					msoLogger.debug("Exception while closing the PreparedStatement: ", e);
 				}
 			}
 			if(conn != null){
 				try {
 					conn.close();
 				} catch (SQLException e) {
-					msoLogger.debug("Exception while closing the connection: " + e);
+					msoLogger.debug("Exception while closing the connection: ", e);
 				}
 			}
 		}
@@ -219,21 +219,21 @@
 			   
 		} catch (Exception e) 
 		{
-			msoLogger.debug("Exception in PersistData " + e);
+			msoLogger.debug("Exception in PersistData ", e);
 		}finally {
 			if(psData != null){
 				try {
 					psData.close();
 					conn.close();
 				} catch (SQLException e) {
-					msoLogger.debug("Exception while closing the PreparedStatement: " + e);
+					msoLogger.debug("Exception while closing the PreparedStatement: ", e);
 				}
 			}
 			if(conn != null){
 				try {
 					conn.close();
 				} catch (SQLException e) {
-					msoLogger.debug("Exception while closing the connection: " + e);
+					msoLogger.debug("Exception while closing the connection: ", e);
 				}
 			}
 		}
