diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/dmaapproperties/GlobalDmaapPublisher.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/dmaapproperties/GlobalDmaapPublisher.java
index 3828528..17b99e2 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/dmaapproperties/GlobalDmaapPublisher.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/dmaapproperties/GlobalDmaapPublisher.java
@@ -38,22 +38,21 @@
 	}
 	
 	@Override
-	public String getUserName() {
+	public String getAuth() {
 
-		return UrnPropertiesReader.getVariable("mso.global.dmaap.username");
+		return UrnPropertiesReader.getVariable("mso.global.dmaap.auth");
 	}
 
 
 
 	@Override
-	public String getPassword() {
+	public String getKey() {
 
-		return UrnPropertiesReader.getVariable("mso.global.dmaap.password");
+		return UrnPropertiesReader.getVariable("mso.msoKey");
 	}
 
 	@Override
 	public String getTopic() {
-		
 		return UrnPropertiesReader.getVariable("mso.global.dmaap.publisher.topic");
 	}
 
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/dmaapproperties/GlobalDmaapPublisherTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/dmaapproperties/GlobalDmaapPublisherTest.java
index 47e0583..d380536 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/dmaapproperties/GlobalDmaapPublisherTest.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/dmaapproperties/GlobalDmaapPublisherTest.java
@@ -33,8 +33,8 @@
 	
 	@Test
 	public void testGetters() {
-		assertEquals("dmaapUsername", globalDmaapPublisher.getUserName());
-		assertEquals("ZG1hYXBQYXNzd29yZA==", globalDmaapPublisher.getPassword());
+		assertEquals("81B7E3533B91A6706830611FB9A8ECE529BBCCE754B1F1520FA7C8698B42F97235BEFA993A387E664D6352C63A6185D68DA7F0B1D360637CBA102CB166E3E62C11EB1F75386D3506BCECE51E54", globalDmaapPublisher.getAuth());
+		assertEquals("07a7159d3bf51a0e53be7a8f89699be7", globalDmaapPublisher.getKey());
 		assertEquals("com.att.mso.asyncStatusUpdate", globalDmaapPublisher.getTopic());
 		assertEquals("http://localhost:" + wireMockPort, globalDmaapPublisher.getHost().get());
 	}
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/application-test.yaml b/bpmn/MSOCommonBPMN/src/test/resources/application-test.yaml
index 18f94f3..b229fbd 100644
--- a/bpmn/MSOCommonBPMN/src/test/resources/application-test.yaml
+++ b/bpmn/MSOCommonBPMN/src/test/resources/application-test.yaml
@@ -146,6 +146,7 @@
       host: http://localhost:${wiremock.server.port}
       publisher:
         topic: com.att.mso.asyncStatusUpdate
+      auth: 81B7E3533B91A6706830611FB9A8ECE529BBCCE754B1F1520FA7C8698B42F97235BEFA993A387E664D6352C63A6185D68DA7F0B1D360637CBA102CB166E3E62C11EB1F75386D3506BCECE51E54
   oof:
     auth: test
     timeout: PT10S
@@ -163,6 +164,16 @@
   auth: Basic YWRtaW46YWRtaW4=
   host: http://localhost:8446
   path: /restconf/operations/GENERIC-RESOURCE-API
+sdno:
+  health-check:
+    dmaap:
+      password: alRyMzJ3NUNeakxl
+      publisher:
+        topic: com.att.sdno.test-health-diagnostic-v02
+        host: https://olsd004.wnsnet.attws.com:3905
+      subscriber:
+        topic: com.att.sdno.test-health-diagnostic-v02
+      auth: 81B7E3533B91A6706830611FB9A8ECE529BBCCE754B1F1520FA7C8698B42F97235BEFA993A387E664D6352C63A6185D68DA7F0B1D360637CBA102CB166E3E62C11EB1F75386D3506BCECE51E54
 sniro:
   conductor:
     enabled: true
@@ -178,7 +189,15 @@
     headers.patchVersion: 1
     headers.minorVersion: 1
     headers.latestVersion: 2
-
+ruby:
+  create-ticket-request:
+    dmaap:
+      username: m04768@mso.ecomp.att.com
+      password: alRyMzJ3NUNeakxl
+    publisher:
+      topic: com.att.pdas.exp.msoCMFallout-v1
+      host: https://olsd004.wnsnet.attws.com:3905
+      auth: 81B7E3533B91A6706830611FB9A8ECE529BBCCE754B1F1520FA7C8698B42F97235BEFA993A387E664D6352C63A6185D68DA7F0B1D360637CBA102CB166E3E62C11EB1F75386D3506BCECE51E54
 spring:
   datasource:
     jdbc-url: jdbc:mariadb://localhost:3307/camundabpmn
diff --git a/common/src/main/java/org/onap/so/client/dmaap/DmaapClient.java b/common/src/main/java/org/onap/so/client/dmaap/DmaapClient.java
index dde0b31..dea00dd 100644
--- a/common/src/main/java/org/onap/so/client/dmaap/DmaapClient.java
+++ b/common/src/main/java/org/onap/so/client/dmaap/DmaapClient.java
@@ -17,10 +17,11 @@
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
- 
+
 package org.onap.so.client.dmaap;
 
 import java.io.IOException;
+import java.security.GeneralSecurityException;
 import java.util.Base64;
 import java.util.Map;
 import java.util.Optional;
@@ -31,13 +32,14 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
-
+import org.onap.so.utils.CryptoUtils;
 
 public abstract class DmaapClient {
-	
+
 	protected static Logger logger = LoggerFactory.getLogger(DmaapClient.class);
 	protected final Map<String, String> msoProperties;
 	protected final Properties properties;
+
 	public DmaapClient(String filepath) throws IOException {
 		Resource resource = new ClassPathResource(filepath);
 		DmaapProperties dmaapProperties = DmaapPropertiesLoader.getInstance().getNewImpl();
@@ -48,27 +50,34 @@
 		this.msoProperties = dmaapProperties.getProperties();
 		this.properties = new Properties();
 		this.properties.load(resource.getInputStream());
-		this.properties.put("password", this.deobfuscatePassword(this.getPassword()));
-		this.properties.put("username", this.getUserName());
+		try {
+			this.properties.put("auth", CryptoUtils.decrypt(this.getAuth(), this.getKey()).getBytes());
+		} catch (GeneralSecurityException e) {
+			logger.error(e.getMessage(), e);
+		}
+		this.properties.put("key", this.getKey());
 		this.properties.put("topic", this.getTopic());
 		Optional<String> host = this.getHost();
 		if (host.isPresent()) {
 			this.properties.put("host", host.get());
 		}
 	}
-	protected String deobfuscatePassword(String password) {
-		
+
+	protected String deobfuscatePassword(String decrypted_key) {
+
 		try {
-			return new String(Base64.getDecoder().decode(password.getBytes()));
-		} catch(IllegalArgumentException iae) {
-			logger.error("llegal Arguments",iae);
-			return password;
+			return new String(Base64.getDecoder().decode(decrypted_key.getBytes()));
+		} catch (IllegalArgumentException iae) {
+			logger.error("llegal Arguments", iae);
+			return decrypted_key;
 		}
 	}
-	
-	
-	public abstract String getUserName();
-	public abstract String getPassword();
+
+	public abstract String getKey();
+
+	public abstract String getAuth();
+
 	public abstract String getTopic();
+
 	public abstract Optional<String> getHost();
 }
diff --git a/common/src/main/java/org/onap/so/client/dmaap/rest/DMaaPRestClient.java b/common/src/main/java/org/onap/so/client/dmaap/rest/DMaaPRestClient.java
index 0438ff2..9fd8c05 100644
--- a/common/src/main/java/org/onap/so/client/dmaap/rest/DMaaPRestClient.java
+++ b/common/src/main/java/org/onap/so/client/dmaap/rest/DMaaPRestClient.java
@@ -17,34 +17,37 @@
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
- 
+
 package org.onap.so.client.dmaap.rest;
 
 import java.net.URL;
-import java.util.Base64;
 import java.util.Map;
 
 import org.onap.so.client.RestClient;
+import org.onap.so.utils.CryptoUtils;
 import org.onap.so.utils.TargetEntity;
 
 public class DMaaPRestClient extends RestClient {
 
-	private final String username;
-	private final String password;
-	public DMaaPRestClient(URL url, String contentType, String username, String password) {
+	private final String auth;
+	private final String key;
+
+	public DMaaPRestClient(URL url, String contentType, String auth, String key) {
 		super(url, contentType);
-		this.username = username;
-		this.password = password;
+		this.auth = auth;
+		this.key = key;
 	}
 
-    @Override
-    public TargetEntity getTargetEntity(){
-        return TargetEntity.DMAAP;
-    }
+	@Override
+	public TargetEntity getTargetEntity() {
+		return TargetEntity.DMAAP;
+	}
 
 	@Override
 	protected void initializeHeaderMap(Map<String, String> headerMap) {
-		headerMap.put("Authorization", "Basic " + Base64.getEncoder().encodeToString((username + ":" + password).getBytes()));
+		if (auth != null && !auth.isEmpty() && key != null && !key.isEmpty()) {
+			addBasicAuthHeader(auth, key);
+		}	
 	}
 
 }
diff --git a/common/src/main/java/org/onap/so/client/dmaap/rest/PropertiesBean.java b/common/src/main/java/org/onap/so/client/dmaap/rest/PropertiesBean.java
index f43c658..1884921 100644
--- a/common/src/main/java/org/onap/so/client/dmaap/rest/PropertiesBean.java
+++ b/common/src/main/java/org/onap/so/client/dmaap/rest/PropertiesBean.java
@@ -24,8 +24,8 @@
 
 public class PropertiesBean {
 
-	private String username;
-	private String password;
+	private String auth;
+	private String key;
 	private String environment;
 	private String partition;
 	private String contentType;
@@ -35,8 +35,8 @@
 	
 	
 	public PropertiesBean(Properties properties) {
-		this.withUsername(properties.getProperty("username"))
-		.withPassword(properties.getProperty("password"))
+		this.withAuth(properties.getProperty("auth"))
+		.withKey(properties.getProperty("key"))
 		.withTopic(properties.getProperty("topic"))
 		.withEnvironment(properties.getProperty("environment"))
 		.withHost(properties.getProperty("host"))
@@ -44,24 +44,24 @@
 		.withPartition(properties.getProperty("partition"))
 		.withContentType(properties.getProperty("contentType", "application/json"));
 	}
-	public String getUsername() {
-		return username;
+	public String getAuth() {
+		return auth;
 	}
-	public void setUsername(String username) {
-		this.username = username;
+	public void setAuth(String auth) {
+		this.auth = auth;
 	}
-	public PropertiesBean withUsername(String username) {
-		this.username = username;
+	public PropertiesBean withAuth(String auth) {
+		this.auth = auth;
 		return this;
 	}
-	public String getPassword() {
-		return password;
+	public String getKey() {
+		return key;
 	}
-	public void setPassword(String password) {
-		this.password = password;
+	public void setKey(String key) {
+		this.key = key;
 	}
-	public PropertiesBean withPassword(String password) {
-		this.password = password;
+	public PropertiesBean withKey(String key) {
+		this.key = key;
 		return this;
 	}
 	public String getEnvironment() {
diff --git a/common/src/main/java/org/onap/so/client/dmaap/rest/RestConsumer.java b/common/src/main/java/org/onap/so/client/dmaap/rest/RestConsumer.java
index 39af156..bee5a0c 100644
--- a/common/src/main/java/org/onap/so/client/dmaap/rest/RestConsumer.java
+++ b/common/src/main/java/org/onap/so/client/dmaap/rest/RestConsumer.java
@@ -37,7 +37,7 @@
 	private final RestClient client;
 	public RestConsumer(Properties properties) {
 		PropertiesBean bean = new PropertiesBean(properties);
-		client = new DMaaPRestClient(this.createURL(bean), bean.getContentType(), bean.getUsername(), bean.getPassword());
+		client = new DMaaPRestClient(this.createURL(bean), bean.getContentType(), bean.getAuth(), bean.getKey());
 	}
 	
 	private URL createURL(PropertiesBean properties) {
diff --git a/common/src/main/java/org/onap/so/client/dmaap/rest/RestPublisher.java b/common/src/main/java/org/onap/so/client/dmaap/rest/RestPublisher.java
index 090e505..af660c2 100644
--- a/common/src/main/java/org/onap/so/client/dmaap/rest/RestPublisher.java
+++ b/common/src/main/java/org/onap/so/client/dmaap/rest/RestPublisher.java
@@ -35,7 +35,7 @@
 
 	public RestPublisher(Properties properties) {
 		PropertiesBean bean = new PropertiesBean(properties);
-		client = new DMaaPRestClient(this.createURL(bean), bean.getContentType(), bean.getUsername(), bean.getPassword());
+		client = new DMaaPRestClient(this.createURL(bean), bean.getContentType(), bean.getAuth(), bean.getKey());
 	}
 	
 	private URL createURL(PropertiesBean properties) {
diff --git a/common/src/main/java/org/onap/so/client/ruby/dmaap/RubyCreateTicketRequestPublisher.java b/common/src/main/java/org/onap/so/client/ruby/dmaap/RubyCreateTicketRequestPublisher.java
index 1d4e014..93a2d96 100644
--- a/common/src/main/java/org/onap/so/client/ruby/dmaap/RubyCreateTicketRequestPublisher.java
+++ b/common/src/main/java/org/onap/so/client/ruby/dmaap/RubyCreateTicketRequestPublisher.java
@@ -32,13 +32,13 @@
 	}
 	
 	@Override
-	public String getUserName() {
-		return msoProperties.get("ruby.create-ticket-request.dmaap.username");
+	public String getAuth() {
+		return msoProperties.get("ruby.create-ticket-request.dmaap.auth");
 	}
 
 	@Override
-	public String getPassword() {
-		return msoProperties.get("ruby.create-ticket-request.dmaap.password");
+	public String getKey() {
+		return msoProperties.get("mso.msoKey");
 	}
 
 	@Override
diff --git a/common/src/main/java/org/onap/so/client/sdno/dmaap/SDNOHealthCheckDmaapConsumer.java b/common/src/main/java/org/onap/so/client/sdno/dmaap/SDNOHealthCheckDmaapConsumer.java
index 8154b91..a76c47c 100644
--- a/common/src/main/java/org/onap/so/client/sdno/dmaap/SDNOHealthCheckDmaapConsumer.java
+++ b/common/src/main/java/org/onap/so/client/sdno/dmaap/SDNOHealthCheckDmaapConsumer.java
@@ -42,13 +42,13 @@
 	}
 	
 	@Override
-	public String getUserName() {
-		return msoProperties.get("sdno.health-check.dmaap.username");
+	public String getAuth() {
+		return msoProperties.get("sdno.health-check.dmaap.auth");
 	}
 
 	@Override
-	public String getPassword() {
-		return msoProperties.get("sdno.health-check.dmaap.password");
+	public String getKey() {
+		return msoProperties.get("mso.msoKey");
 	}
 
 	@Override
diff --git a/common/src/main/java/org/onap/so/client/sdno/dmaap/SDNOHealthCheckDmaapPublisher.java b/common/src/main/java/org/onap/so/client/sdno/dmaap/SDNOHealthCheckDmaapPublisher.java
index 2556e67..f4af205 100644
--- a/common/src/main/java/org/onap/so/client/sdno/dmaap/SDNOHealthCheckDmaapPublisher.java
+++ b/common/src/main/java/org/onap/so/client/sdno/dmaap/SDNOHealthCheckDmaapPublisher.java
@@ -33,13 +33,13 @@
 	}
 	
 	@Override
-	public String getUserName() {
-		return msoProperties.get("sdno.health-check.dmaap.username");
+	public String getAuth() {
+		return msoProperties.get("sdno.health-check.dmaap.auth");
 	}
 
 	@Override
-	public String getPassword() {
-		return msoProperties.get("sdno.health-check.dmaap.password");
+	public String getKey() {
+		return msoProperties.get("sdno.health-check.dmaap.msoKey");
 	}
 
 	@Override
diff --git a/common/src/test/java/org/onap/so/client/dmaap/DmaapPublisherTest.java b/common/src/test/java/org/onap/so/client/dmaap/DmaapPublisherTest.java
index c0633c1..0836ed2 100644
--- a/common/src/test/java/org/onap/so/client/dmaap/DmaapPublisherTest.java
+++ b/common/src/test/java/org/onap/so/client/dmaap/DmaapPublisherTest.java
@@ -29,13 +29,13 @@
 
     DmaapPublisher dmaapPublisher = new DmaapPublisher(120) {
         @Override
-        public String getUserName() {
-            return "test";
+        public String getAuth() {
+            return "8F73A1691F6271E769329C176EE3EA48F52786AF12A3E16259007EED2A0F0CC3CB965F4AB5318483015723CCE1C0B48AB6C4DED6E251869393B01E4EC532FC88D4A128B92F4CDB34719B171923";
         }
 
         @Override
-        public String getPassword() {
-            return "test";
+        public String getKey() {
+            return "07a7159d3bf51a0e53be7a8f89699be7";
         }
 
         @Override
diff --git a/common/src/test/resources/dmaap.properties b/common/src/test/resources/dmaap.properties
index 7ce1019..5593455 100644
--- a/common/src/test/resources/dmaap.properties
+++ b/common/src/test/resources/dmaap.properties
@@ -4,4 +4,7 @@
 sdno.health-check.dmaap.publisher.topic=com.att.sdno.test-health-diagnostic-v02
 ruby.create-ticket-request.dmaap.username=testuser
 ruby.create-ticket-request.dmaap.password=eHQ1cUJrOUc
-ruby.create-ticket-request.publisher.topic=com.att.pdas.st1.msoCMFallout-v1
\ No newline at end of file
+ruby.create-ticket-request.publisher.topic=com.att.pdas.st1.msoCMFallout-v1
+ruby.create-ticket-request.dmaap.auth=81B7E3533B91A6706830611FB9A8ECE529BBCCE754B1F1520FA7C8698B42F97235BEFA993A387E664D6352C63A6185D68DA7F0B1D360637CBA102CB166E3E62C11EB1F75386D3506BCECE51E54
+sdno.health-check.dmaap.auth=81B7E3533B91A6706830611FB9A8ECE529BBCCE754B1F1520FA7C8698B42F97235BEFA993A387E664D6352C63A6185D68DA7F0B1D360637CBA102CB166E3E62C11EB1F75386D3506BCECE51E54
+mso.msoKey=07a7159d3bf51a0e53be7a8f89699be7
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/DmaapPropertiesImpl.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/DmaapPropertiesImpl.java
index 813299c..8409d9c 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/DmaapPropertiesImpl.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/DmaapPropertiesImpl.java
@@ -31,8 +31,8 @@
 
 	private final Map<String, String> props  = new HashMap<>();
 	private static final String[] propertyNames = {
-			"mso.so.operational-environment.dmaap.username",
-			"mso.so.operational-environment.dmaap.password",
+			"mso.so.operational-environment.dmaap.auth",
+			"mso.msoKey",
 			"mso.so.operational-environment.publisher.topic",
 			"mso.so.operational-environment.dmaap.host"
 	};
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/OperationalEnvironmentPublisher.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/OperationalEnvironmentPublisher.java
index 52c395e..31bc6fc 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/OperationalEnvironmentPublisher.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/OperationalEnvironmentPublisher.java
@@ -37,15 +37,15 @@
 	}
 	
 	@Override
-	public String getUserName() {
+	public String getAuth() {
 
-		return this.msoProperties.get("mso.so.operational-environment.dmaap.username");
+		return this.msoProperties.get("mso.so.operational-environment.dmaap.auth");
 	}
 
 	@Override
-	public String getPassword() {
+	public String getKey() {
 
-		return this.msoProperties.get("mso.so.operational-environment.dmaap.password");
+		return this.msoProperties.get("mso.msoKey");
 	}
 
 	@Override
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/OperationalEnvironmentPublisherTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/OperationalEnvironmentPublisherTest.java
index 59df7ae..7329f31 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/OperationalEnvironmentPublisherTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/tenantisolation/dmaap/OperationalEnvironmentPublisherTest.java
@@ -43,8 +43,8 @@
 	@Test
 	public void getProperties() throws FileNotFoundException, IOException {
 		
-		assertEquals("testuser", publisher.getUserName());
-		assertEquals("VjR5NDcxSzA=", publisher.getPassword());
+		assertEquals("B3705D6C2D521257CC2422ACCF03B001811ACC49F564DDB3A2CF2A1378B6D35A23CDCB696F2E1EDFBE6758DFE7C74B94F4A7DF84A0E2BB904935AC4D900D5597DF981ADE6CE1FF3AF993BED0", publisher.getAuth());
+		assertEquals("07a7159d3bf51a0e53be7a8f89699be7", publisher.getKey());
 		assertEquals("test.operationalEnvironmentEvent", publisher.getTopic());
 		assertEquals("http://localhost:" + env.getProperty("wiremock.server.port"), publisher.getHost().get());
 	}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml b/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml
index 63eb053..4826c87 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml
@@ -1,10 +1,10 @@
 # will be used as entry in DB to say SITE OFF/ON for healthcheck
 
-server:
-    port: 8080
-    tomcat:
-        max-threads: 50
-ssl-enable: false
+server:  
+  port: 8080
+  tomcat:
+    max-threads: 50
+  
 
 mso:
   health:
@@ -77,6 +77,7 @@
         username: testuser
         password: VjR5NDcxSzA=
         host: http://localhost:${wiremock.server.port}
+        auth: B3705D6C2D521257CC2422ACCF03B001811ACC49F564DDB3A2CF2A1378B6D35A23CDCB696F2E1EDFBE6758DFE7C74B94F4A7DF84A0E2BB904935AC4D900D5597DF981ADE6CE1FF3AF993BED0
       publisher:
         topic: test.operationalEnvironmentEvent
   
