Convert DCAE Participant to SpringBoot Application

Issue-ID: POLICY-3244
Change-Id: I64cef98a4b1a405160d533983baf7a860f1816f5
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
diff --git a/participant/participant-impl/participant-impl-dcae/pom.xml b/participant/participant-impl/participant-impl-dcae/pom.xml
index 3080842..50a2a52 100644
--- a/participant/participant-impl/participant-impl-dcae/pom.xml
+++ b/participant/participant-impl/participant-impl-dcae/pom.xml
@@ -34,10 +34,37 @@
 
     <properties>
         <mockserver.version>5.11.2</mockserver.version>
+        <springboot.version>2.4.4</springboot.version>
     </properties>
 
+    <dependencyManagement>
+        <dependencies>
+            <!-- Spring Boot BOM -->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${springboot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.mock-server</groupId>
             <artifactId>mockserver-netty</artifactId>
             <version>${mockserver.version}</version>
@@ -50,4 +77,22 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${springboot.version}</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                        <phase>package</phase>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/DcaeParticipantApplication.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/DcaeParticipantApplication.java
new file mode 100644
index 0000000..25edaf5
--- /dev/null
+++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/DcaeParticipantApplication.java
@@ -0,0 +1,41 @@
+/*-

+ * ============LICENSE_START=======================================================

+ *  Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae;

+

+import org.springframework.boot.SpringApplication;

+import org.springframework.boot.autoconfigure.SpringBootApplication;

+import org.springframework.boot.context.properties.ConfigurationPropertiesScan;

+import org.springframework.context.annotation.ComponentScan;

+

+/**

+ * Starter.

+ *

+ */

+@SpringBootApplication

+@ComponentScan({"org.onap.policy.clamp.controlloop.participant.dcae",

+        "org.onap.policy.clamp.controlloop.participant.intermediary"})

+@ConfigurationPropertiesScan("org.onap.policy.clamp.controlloop.participant.dcae.main.parameters")

+public class DcaeParticipantApplication {

+

+    public static void main(String[] args) {

+        SpringApplication.run(DcaeParticipantApplication.class, args);

+    }

+}

diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/config/ParametersConfig.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/config/ParametersConfig.java
new file mode 100644
index 0000000..ee649c9
--- /dev/null
+++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/config/ParametersConfig.java
@@ -0,0 +1,40 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.config;
+
+import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
+import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameterHandler;
+import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class ParametersConfig {
+
+    @Value("${participant.file}")
+    private String file;
+
+    @Bean
+    public ParticipantDcaeParameters participantDcaeParameters() throws ControlLoopException {
+        return new ParticipantDcaeParameterHandler().toParticipantDcaeParameters(file);
+    }
+}
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/config/ParticipantConfig.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/config/ParticipantConfig.java
new file mode 100644
index 0000000..ff828ab
--- /dev/null
+++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/config/ParticipantConfig.java
@@ -0,0 +1,49 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.config;
+
+import org.onap.policy.clamp.controlloop.participant.dcae.main.handler.ControlLoopElementHandler;
+import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
+import org.onap.policy.clamp.controlloop.participant.intermediary.api.ParticipantIntermediaryApi;
+import org.onap.policy.clamp.controlloop.participant.intermediary.api.ParticipantIntermediaryFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class ParticipantConfig {
+
+    /**
+     * Create ParticipantIntermediaryApi.
+     *
+     * @param parameters the Participant Dcae Parameters
+     * @param clElementHandler the ControlLoop Element Handler
+     * @return ParticipantIntermediaryApi
+     */
+    @Bean
+    public ParticipantIntermediaryApi participantIntermediaryApi(ParticipantDcaeParameters parameters,
+            ControlLoopElementHandler clElementHandler) {
+        ParticipantIntermediaryApi intermediaryApi = new ParticipantIntermediaryFactory().createApiImplementation();
+        intermediaryApi.init(parameters.getIntermediaryParameters());
+        intermediaryApi.registerControlLoopElementListener(clElementHandler);
+        clElementHandler.setIntermediaryApi(intermediaryApi);
+        return intermediaryApi;
+    }
+}
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/AbstractHttpClient.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/AbstractHttpClient.java
index b2d0b61..e23aaaf 100644
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/AbstractHttpClient.java
+++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/AbstractHttpClient.java
@@ -22,133 +22,89 @@
 
 import java.io.Closeable;
 import java.io.IOException;
+import java.util.Collections;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.ParseException;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.AuthCache;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.conn.ssl.NoopHostnameVerifier;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
-import org.apache.http.impl.auth.BasicScheme;
-import org.apache.http.impl.client.BasicAuthCache;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContextBuilder;
-import org.apache.http.util.EntityUtils;
 import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
 import org.onap.policy.clamp.controlloop.participant.dcae.model.Loop;
-import org.onap.policy.common.endpoints.parameters.RestServerParameters;
+import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
+import org.onap.policy.common.endpoints.http.client.HttpClient;
+import org.onap.policy.common.endpoints.http.client.HttpClientFactoryInstance;
 import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public abstract class AbstractHttpClient implements Closeable {
 
+    private static final String MSG_REQUEST_FAILED = "request to {} failed";
+
     private static final Logger LOGGER = LoggerFactory.getLogger(AbstractHttpClient.class);
-    private final HttpClientContext localContext;
-    private final CloseableHttpClient httpclient;
-    private final HttpHost target;
+    private final HttpClient httpclient;
     public static final Coder CODER = new StandardCoder();
 
     /**
      * Constructor.
      */
-    protected AbstractHttpClient(RestServerParameters restServerParameters) {
+    protected AbstractHttpClient(BusTopicParams restClientParameters) {
         try {
-            final String scheme = restServerParameters.isHttps() ? "https" : "http";
-            target = new HttpHost(restServerParameters.getHost(), restServerParameters.getPort(), scheme);
-
-            CredentialsProvider credsProvider = new BasicCredentialsProvider();
-            credsProvider.setCredentials(new AuthScope(target.getHostName(), target.getPort()),
-                    new UsernamePasswordCredentials(restServerParameters.getUserName(),
-                            restServerParameters.getPassword()));
-
-            AuthCache authCache = new BasicAuthCache();
-            BasicScheme basicAuth = new BasicScheme();
-            authCache.put(target, basicAuth);
-            localContext = HttpClientContext.create();
-            localContext.setAuthCache(authCache);
-
-            HttpClientBuilder builder = HttpClients.custom().setDefaultCredentialsProvider(credsProvider);
-            if (restServerParameters.isHttps()) {
-                final SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(new SSLContextBuilder()
-                        .loadTrustMaterial(null, new TrustSelfSignedStrategy()).setProtocol("TLSv1.2").build(),
-                        new NoopHostnameVerifier());
-                builder.setSSLSocketFactory(sslsf);
-            }
-            httpclient = builder.build();
-
+            httpclient = HttpClientFactoryInstance.getClientFactory().build(restClientParameters);
         } catch (final Exception e) {
             throw new ControlLoopRuntimeException(Status.INTERNAL_SERVER_ERROR,
-                    restServerParameters.getName() + " Client failed to start", e);
+                    restClientParameters.getClientName() + " Client failed to start", e);
         }
     }
 
-    CloseableHttpResponse execute(HttpRequest request) throws IOException {
-        return httpclient.execute(target, request, localContext);
+    protected boolean executePut(String path, String jsonEntity, int statusCode) {
+        try {
+            Response response = httpclient.put(path, Entity.json(jsonEntity), Collections.emptyMap());
+            return response.getStatus() == statusCode;
+        } catch (Exception e) {
+            LOGGER.error(MSG_REQUEST_FAILED, httpclient.getName(), e);
+            return false;
+        }
     }
 
     protected boolean executePut(String path, int statusCode) {
-        try (CloseableHttpResponse response = execute(new HttpPut(path))) {
-            return response.getStatusLine().getStatusCode() == statusCode;
+        try {
+            Response response = httpclient.put(path, Entity.json(""), Collections.emptyMap());
+            return response.getStatus() == statusCode;
         } catch (Exception e) {
+            LOGGER.error(MSG_REQUEST_FAILED, httpclient.getName(), e);
             return false;
         }
     }
 
     protected Loop executePost(String path, int statusCode) {
-        try (CloseableHttpResponse response = execute(new HttpPost(path))) {
-            if (response.getStatusLine().getStatusCode() != statusCode) {
+        try {
+            Response response = httpclient.post(path, Entity.json(""), Collections.emptyMap());
+            if (response.getStatus() != statusCode) {
                 return null;
             }
-            return entityToMap(response.getEntity());
+            return response.readEntity(Loop.class);
         } catch (Exception e) {
+            LOGGER.error(MSG_REQUEST_FAILED, httpclient.getName(), e);
             return null;
         }
     }
 
     protected Loop executeGet(String path, int statusCode) {
-        try (CloseableHttpResponse response = execute(new HttpGet(path))) {
-            if (response.getStatusLine().getStatusCode() != statusCode) {
+        try {
+            Response response = httpclient.get(path);
+
+            if (response.getStatus() != statusCode) {
                 return null;
             }
-            return entityToMap(response.getEntity());
+            return response.readEntity(Loop.class);
         } catch (Exception e) {
+            LOGGER.error(MSG_REQUEST_FAILED, httpclient.getName(), e);
             return null;
         }
     }
 
-    private Loop entityToMap(HttpEntity httpEntity) {
-        if (httpEntity == null) {
-            return new Loop();
-        }
-        try {
-            return CODER.convert(EntityUtils.toString(httpEntity), Loop.class);
-        } catch (ParseException | IOException e) {
-            LOGGER.error("error reading Entity", e);
-            return new Loop();
-        } catch (CoderException e) {
-            LOGGER.error("cannot convert to Loop Object", e);
-            return new Loop();
-        }
-    }
-
     @Override
     public void close() throws IOException {
-        httpclient.close();
+        httpclient.shutdown();
     }
 }
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClient.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClient.java
index eb80505..e928c13 100644
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClient.java
+++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClient.java
@@ -21,19 +21,16 @@
 package org.onap.policy.clamp.controlloop.participant.dcae.httpclient;
 
 import org.apache.http.HttpStatus;
+import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
 import org.onap.policy.clamp.controlloop.participant.dcae.model.ExternalComponent;
 import org.onap.policy.clamp.controlloop.participant.dcae.model.Loop;
-import org.onap.policy.common.endpoints.parameters.RestServerParameters;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
 
+@Component
 public class ClampHttpClient extends AbstractHttpClient {
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(ClampHttpClient.class);
-
     private static final String STATUS = "/restservices/clds/v2/loop/getstatus/";
     private static final String CREATE = "/restservices/clds/v2/loop/create/%s?templateName=%s";
-    private static final String UPDATE = "/restservices/clds/v2/loop/updateMicroservicePolicy/";
     private static final String DEPLOY = "/restservices/clds/v2/loop/deploy/";
     private static final String STOP = "/restservices/clds/v2/loop/stop/";
     private static final String DELETE = "/restservices/clds/v2/loop/delete/";
@@ -44,8 +41,8 @@
     /**
      * Constructor.
      */
-    public ClampHttpClient(RestServerParameters restServerParameters) {
-        super(restServerParameters);
+    public ClampHttpClient(ParticipantDcaeParameters parameters) {
+        super(parameters.getClampClientParameters());
     }
 
     /**
@@ -60,23 +57,12 @@
     }
 
     /**
-     * Update.
-     *
-     * @param loopName the loopName
-     * @param jsonEntity the Json entity
-     * @return true
-     */
-    public boolean update(String loopName, String jsonEntity) {
-        return executePost(UPDATE + loopName, HttpStatus.SC_OK) != null;
-    }
-
-    /**
      * Deploy.
      *
      * @param loopName the loopName
      * @return true
      */
-    public boolean deploy(String loopName) { // DCAE
+    public boolean deploy(String loopName) {
         return executePut(DEPLOY + loopName, HttpStatus.SC_ACCEPTED);
     }
 
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ConsulDcaeHttpClient.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ConsulDcaeHttpClient.java
index cd84a2f..4f76e30 100644
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ConsulDcaeHttpClient.java
+++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ConsulDcaeHttpClient.java
@@ -21,26 +21,28 @@
 package org.onap.policy.clamp.controlloop.participant.dcae.httpclient;
 
 import org.apache.http.HttpStatus;
-import org.onap.policy.common.endpoints.parameters.RestServerParameters;
+import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
+import org.springframework.stereotype.Component;
 
+@Component
 public class ConsulDcaeHttpClient extends AbstractHttpClient {
 
-    private static final String DEPLOY = "/v1/kv/dcae-pmsh:policy";
+    private static final String DEPLOY = "/v1/kv/dcae-pmsh:";
 
     /**
-     * constructor.
+     * Constructor.
      */
-    public ConsulDcaeHttpClient(RestServerParameters restServerParameters) {
-        super(restServerParameters);
+    public ConsulDcaeHttpClient(ParticipantDcaeParameters parameters) {
+        super(parameters.getConsulClientParameters());
     }
 
     /**
-     * call consult.
+     * Call consult.
      *
      * @param jsonEntity the Entity
      * @return true
      */
-    public boolean deploy(String jsonEntity) {
-        return executePut(DEPLOY + jsonEntity, HttpStatus.SC_ACCEPTED);
+    public boolean deploy(String name, String jsonEntity) {
+        return executePut(DEPLOY + name, jsonEntity, HttpStatus.SC_OK);
     }
 }
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/ControlLoopElementHandler.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/ControlLoopElementHandler.java
index 96677f3..76ed112 100644
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/ControlLoopElementHandler.java
+++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/ControlLoopElementHandler.java
@@ -20,11 +20,10 @@
 
 package org.onap.policy.clamp.controlloop.participant.dcae.main.handler;
 
-import java.io.Closeable;
-import java.io.IOException;
 import java.time.Instant;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
+import lombok.Setter;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatistics;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
@@ -33,23 +32,29 @@
 import org.onap.policy.clamp.controlloop.participant.dcae.httpclient.ConsulDcaeHttpClient;
 import org.onap.policy.clamp.controlloop.participant.dcae.model.Loop;
 import org.onap.policy.clamp.controlloop.participant.intermediary.api.ControlLoopElementListener;
-import org.onap.policy.common.endpoints.parameters.RestServerParameters;
+import org.onap.policy.clamp.controlloop.participant.intermediary.api.ParticipantIntermediaryApi;
 import org.onap.policy.models.base.PfModelException;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
 
 /**
  * This class handles implementation of controlLoopElement updates.
  */
-public class ControlLoopElementHandler implements ControlLoopElementListener, Closeable {
+@Component
+public class ControlLoopElementHandler implements ControlLoopElementListener {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ControlLoopElementHandler.class);
     private final ClampHttpClient clampClient;
     private final ConsulDcaeHttpClient consulClient;
 
+    @Setter
+    private ParticipantIntermediaryApi intermediaryApi;
+
     private static final String LOOP = "pmsh_loop";
     private static final String TEMPLATE = "LOOP_TEMPLATE_k8s_pmsh";
+    private static final String POLICY = "policy";
 
     private static final String BLUEPRINT_DEPLOYED = "BLUEPRINT_DEPLOYED";
     private static final String MICROSERVICE_INSTALLED_SUCCESSFULLY = "MICROSERVICE_INSTALLED_SUCCESSFULLY";
@@ -70,9 +75,9 @@
     /**
      * Constructor.
      */
-    public ControlLoopElementHandler(RestServerParameters clampParameters, RestServerParameters consulParameters) {
-        clampClient = new ClampHttpClient(clampParameters);
-        consulClient = new ConsulDcaeHttpClient(consulParameters);
+    public ControlLoopElementHandler(ClampHttpClient clampClient, ConsulDcaeHttpClient consulClient) {
+        this.clampClient = clampClient;
+        this.consulClient = consulClient;
     }
 
     /**
@@ -90,17 +95,15 @@
                 Loop loop = clampClient.getstatus(LOOP);
                 if (loop != null) {
                     clampClient.undeploy(LOOP);
-                    DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi()
-                        .updateControlLoopElementState(controlLoopElementId, newState, ControlLoopState.UNINITIALISED);
+                    intermediaryApi.updateControlLoopElementState(controlLoopElementId, newState,
+                            ControlLoopState.UNINITIALISED);
                 }
                 break;
             case PASSIVE:
-                DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi()
-                    .updateControlLoopElementState(controlLoopElementId, newState, ControlLoopState.PASSIVE);
+                intermediaryApi.updateControlLoopElementState(controlLoopElementId, newState, ControlLoopState.PASSIVE);
                 break;
             case RUNNING:
-                DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi()
-                    .updateControlLoopElementState(controlLoopElementId, newState, ControlLoopState.RUNNING);
+                intermediaryApi.updateControlLoopElementState(controlLoopElementId, newState, ControlLoopState.RUNNING);
                 break;
             default:
                 LOGGER.debug("Unknown orderedstate {}", newState);
@@ -120,7 +123,7 @@
     }
 
     private void deploy() throws PfModelException {
-        if (!consulClient.deploy(BODY_CONSUL)) {
+        if (!consulClient.deploy(POLICY, BODY_CONSUL)) {
             throw new PfModelException(null, "deploy to consul failed");
         }
         if (!clampClient.deploy(LOOP)) {
@@ -145,23 +148,21 @@
                 deploy();
                 boolean deployedFlag = false;
                 for (int i = 0; i < CHECK_COUNT; i++) {
-                    //sleep 10 seconds
+                    // sleep 10 seconds
                     TimeUnit.SECONDS.sleep(CHECK_COUNT);
                     loop = getStatus();
                     String status = ClampHttpClient.getStatusCode(loop);
                     if (MICROSERVICE_INSTALLED_SUCCESSFULLY.equals(status)) {
-                        DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi()
-                            .updateControlLoopElementState(element.getId(), element.getOrderedState(),
-                                            ControlLoopState.PASSIVE);
+                        intermediaryApi.updateControlLoopElementState(element.getId(), element.getOrderedState(),
+                                ControlLoopState.PASSIVE);
                         deployedFlag = true;
                         break;
                     }
                 }
                 if (!deployedFlag) {
                     LOGGER.warn("DCAE is not deployed properly, ClElement state will be UNINITIALISED2PASSIVE");
-                    DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi()
-                        .updateControlLoopElementState(element.getId(), element.getOrderedState(),
-                                      ControlLoopState.UNINITIALISED2PASSIVE);
+                    intermediaryApi.updateControlLoopElementState(element.getId(), element.getOrderedState(),
+                            ControlLoopState.UNINITIALISED2PASSIVE);
                 }
             }
         } catch (PfModelException e) {
@@ -178,20 +179,12 @@
      */
     @Override
     public void handleStatistics(UUID controlLoopElementId) {
-        ControlLoopElement clElement = DcaeHandler.getInstance().getDcaeProvider()
-                .getIntermediaryApi().getControlLoopElement(controlLoopElementId);
+        ControlLoopElement clElement = intermediaryApi.getControlLoopElement(controlLoopElementId);
         if (clElement != null) {
             ClElementStatistics clElementStatistics = new ClElementStatistics();
             clElementStatistics.setControlLoopState(clElement.getState());
             clElementStatistics.setTimeStamp(Instant.now());
-            DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi()
-                .updateControlLoopElementStatistics(controlLoopElementId, clElementStatistics);
+            intermediaryApi.updateControlLoopElementStatistics(controlLoopElementId, clElementStatistics);
         }
     }
-
-    @Override
-    public void close() throws IOException {
-        clampClient.close();
-        consulClient.close();
-    }
 }
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeHandler.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeHandler.java
deleted file mode 100644
index 1963e38..0000000
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeHandler.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.main.handler;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import javax.ws.rs.core.Response;
-import lombok.Getter;
-import org.onap.policy.clamp.controlloop.common.handler.ControlLoopHandler;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.common.endpoints.listeners.MessageTypeDispatcher;
-import org.onap.policy.common.utils.services.Registry;
-import org.onap.policy.models.base.PfModelRuntimeException;
-
-/**
- * This class handles dcae of participants and control loop elements.
- *
- * </p>
- * It is effectively a singleton that is started at system start.
- */
-public class DcaeHandler extends ControlLoopHandler {
-
-    private final ParticipantDcaeParameters parameters;
-    @Getter
-    private DcaeProvider dcaeProvider;
-
-    /**
-     * Create a handler.
-     *
-     * @param parameters the parameters for access to the database
-     */
-    public DcaeHandler(ParticipantDcaeParameters parameters) {
-        super(parameters.getDatabaseProviderParameters());
-        this.parameters = parameters;
-    }
-
-    public static DcaeHandler getInstance() {
-        return Registry.get(DcaeHandler.class.getName());
-    }
-
-    @Override
-    public Set<Class<?>> getProviderClasses() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public void startProviders() {
-        dcaeProvider = new DcaeProvider(parameters);
-    }
-
-    @Override
-    public void stopProviders() {
-        try {
-            dcaeProvider.close();
-        } catch (IOException e) {
-            throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, e.getMessage());
-        } finally {
-            dcaeProvider = null;
-        }
-    }
-}
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeProvider.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeProvider.java
deleted file mode 100644
index afaf1c7..0000000
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeProvider.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.main.handler;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import lombok.Getter;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant;
-import org.onap.policy.clamp.controlloop.models.messages.rest.TypedSimpleResponse;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
-import org.onap.policy.clamp.controlloop.participant.intermediary.api.ParticipantIntermediaryApi;
-import org.onap.policy.clamp.controlloop.participant.intermediary.api.ParticipantIntermediaryFactory;
-
-/**
- * This provider class dcae of participants and control loop elements.
- */
-public class DcaeProvider implements Closeable {
-    @Getter
-    private final ParticipantIntermediaryApi intermediaryApi;
-
-    private final ControlLoopElementHandler clElementHandler;
-
-    /**
-     * Create a participant dcae provider.
-     *
-     * @throws ControlLoopRuntimeException on errors creating the provider
-     */
-    public DcaeProvider(ParticipantDcaeParameters parameters) throws ControlLoopRuntimeException {
-        intermediaryApi = new ParticipantIntermediaryFactory().createApiImplementation();
-        intermediaryApi.init(parameters.getIntermediaryParameters());
-        clElementHandler = new ControlLoopElementHandler(parameters.getClampClientParameters(),
-                parameters.getConsulClientParameters());
-        intermediaryApi.registerControlLoopElementListener(clElementHandler);
-    }
-
-    @Override
-    public void close() throws IOException {
-        intermediaryApi.close();
-        clElementHandler.close();
-    }
-
-    /**
-     * Get the control loops.
-     *
-     * @param name the controlLoop, null to get all
-     * @param version the controlLoop, null to get all
-     * @return the control loops
-     * @throws ControlLoopException on errors getting the control loops
-     */
-    public ControlLoops getControlLoops(String name, String version) throws ControlLoopException {
-        return intermediaryApi.getControlLoops(name, version);
-    }
-
-    /**
-     * Get the dcae control loop elements.
-     *
-     * @param name the controlLoopElement, null to get all
-     * @param version the controlLoopElement, null to get all
-     * @return the control loop elements
-     * @throws ControlLoopException on errors getting the control loop elements
-     */
-    public Map<UUID, ControlLoopElement> getControlLoopElements(String name, String version)
-            throws ControlLoopException {
-        return intermediaryApi.getControlLoopElements(name, version);
-    }
-
-    /**
-     * Update the given control loop element in the dcae.
-     *
-     * @param element the control loop element to update
-     * @return response simple response returned
-     * @throws ControlLoopException on errors updating the control loop element
-     */
-    public TypedSimpleResponse<ControlLoopElement> updateControlLoopElement(ControlLoopElement element)
-            throws ControlLoopException {
-        TypedSimpleResponse<ControlLoopElement> response = new TypedSimpleResponse<>();
-        response.setResponse(intermediaryApi.updateControlLoopElementState(element.getId(),
-                element.getOrderedState(), element.getState()));
-        return response;
-    }
-
-    /**
-     * Get the current dcae participants.
-     *
-     * @param name the participant, null to get all
-     * @param version the participant, null to get all
-     * @return the list of participants
-     * @throws ControlLoopException on errors getting the participants
-     */
-    public List<Participant> getParticipants(String name, String version) throws ControlLoopException {
-        return intermediaryApi.getParticipants(name, version);
-    }
-
-    /**
-     * Update a dcae participant.
-     *
-     * @param participant the participant to update
-     * @return TypedSimpleResponse simple response
-     * @throws ControlLoopException on errors updating the participant
-     */
-
-    public TypedSimpleResponse<Participant> updateParticipant(Participant participant) throws ControlLoopException {
-        TypedSimpleResponse<Participant> response = new TypedSimpleResponse<>();
-        response.setResponse(
-                intermediaryApi.updateParticipantState(participant.getDefinition(), participant.getParticipantState()));
-        return response;
-    }
-}
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameterHandler.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameterHandler.java
index 8d9bef9..689bb40 100644
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameterHandler.java
+++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameterHandler.java
@@ -23,56 +23,60 @@
 import java.io.File;
 import javax.ws.rs.core.Response;
 import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.ParticipantDcaeCommandLineArguments;
-import org.onap.policy.common.parameters.ValidationResult;
+import org.onap.policy.common.parameters.BeanValidationResult;
 import org.onap.policy.common.utils.coder.Coder;
 import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class handles reading, parsing and validating of control loop runtime parameters from JSON files.
  */
 public class ParticipantDcaeParameterHandler {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantDcaeParameterHandler.class);
+
     private static final Coder CODER = new StandardCoder();
 
     /**
-     * Read the parameters from the parameter file.
+     * Read the parameters from the path of the file.
      *
-     * @param arguments the arguments passed to dcae
+     * @param path path of the config file.
      * @return the parameters read from the configuration file
      * @throws ControlLoopException on parameter exceptions
      */
-    public ParticipantDcaeParameters getParameters(final ParticipantDcaeCommandLineArguments arguments)
-            throws ControlLoopException {
+    public ParticipantDcaeParameters toParticipantDcaeParameters(String path) throws ControlLoopException {
         ParticipantDcaeParameters parameters = null;
-
         // Read the parameters
         try {
             // Read the parameters from JSON
-            File file = new File(arguments.getFullConfigurationFilePath());
+            File file = new File(path);
             parameters = CODER.decode(file, ParticipantDcaeParameters.class);
         } catch (final CoderException e) {
-            final String errorMessage = "error reading parameters from \"" + arguments.getConfigurationFilePath()
-                    + "\"\n" + "(" + e.getClass().getSimpleName() + ")";
+            final String errorMessage =
+                    "error reading parameters from \"" + path + "\"\n" + "(" + e.getClass().getSimpleName() + ")";
             throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE, errorMessage, e);
         }
 
         // The JSON processing returns null if there is an empty file
         if (parameters == null) {
-            final String errorMessage = "no parameters found in \"" + arguments.getConfigurationFilePath() + "\"";
+            final String errorMessage = "no parameters found in \"" + path + "\"";
+            LOGGER.error(errorMessage);
             throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE, errorMessage);
         }
 
         // validate the parameters
-        final ValidationResult validationResult = parameters.validate();
+        final BeanValidationResult validationResult = parameters.validate();
         if (!validationResult.isValid()) {
-            String returnMessage =
-                    "validation error(s) on parameters from \"" + arguments.getConfigurationFilePath() + "\"\n";
-            returnMessage += validationResult.getResult();
+            final String returnMessage =
+                    "validation error(s) on parameters from \"" + path + "\"\n" + validationResult.getResult();
+
+            LOGGER.error(returnMessage);
             throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE, returnMessage);
         }
 
         return parameters;
     }
+
 }
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameters.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameters.java
index beb2730..469a6fe 100644
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameters.java
+++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameters.java
@@ -24,7 +24,7 @@
 import lombok.Getter;
 import org.apache.commons.lang3.StringUtils;
 import org.onap.policy.clamp.controlloop.participant.intermediary.parameters.ParticipantIntermediaryParameters;
-import org.onap.policy.common.endpoints.parameters.RestServerParameters;
+import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
 import org.onap.policy.common.parameters.BeanValidationResult;
 import org.onap.policy.common.parameters.ParameterGroupImpl;
 import org.onap.policy.common.parameters.ValidationStatus;
@@ -40,11 +40,14 @@
 @NotBlank
 @Getter
 public class ParticipantDcaeParameters extends ParameterGroupImpl {
-    @Valid
-    private RestServerParameters clampClientParameters;
+
+    private static final String MSG_IS_BLANK = "is blank";
 
     @Valid
-    private RestServerParameters consulClientParameters;
+    private BusTopicParams clampClientParameters;
+
+    @Valid
+    private BusTopicParams consulClientParameters;
 
     private ParticipantIntermediaryParameters intermediaryParameters;
     private PolicyModelsProviderParameters databaseProviderParameters;
@@ -71,21 +74,21 @@
         return result;
     }
 
-    private BeanValidationResult checkMissingMandatoryParams(RestServerParameters clientParameters) {
-        BeanValidationResult result = new BeanValidationResult(clientParameters.getName(), clientParameters);
-        if (StringUtils.isBlank(clientParameters.getHost())) {
-            result.addResult("Host", clientParameters.getHost(), ValidationStatus.INVALID, "is blank");
+    private BeanValidationResult checkMissingMandatoryParams(BusTopicParams clientParameters) {
+        BeanValidationResult result = new BeanValidationResult(clientParameters.getClientName(), clientParameters);
+        if (clientParameters.isHostnameInvalid()) {
+            result.addResult("Host", clientParameters.getHostname(), ValidationStatus.INVALID, MSG_IS_BLANK);
         }
-        if (StringUtils.isBlank(clientParameters.getName())) {
-            result.addResult("Name", clientParameters.getName(), ValidationStatus.INVALID, "is blank");
+        if (clientParameters.isClientNameInvalid()) {
+            result.addResult("Name", clientParameters.getClientName(), ValidationStatus.INVALID, MSG_IS_BLANK);
         }
         if (StringUtils.isBlank(clientParameters.getPassword())) {
-            result.addResult("Password", clientParameters.getPassword(), ValidationStatus.INVALID, "is blank");
+            result.addResult("Password", clientParameters.getPassword(), ValidationStatus.INVALID, MSG_IS_BLANK);
         }
         if (StringUtils.isBlank(clientParameters.getUserName())) {
-            result.addResult("UserName", clientParameters.getUserName(), ValidationStatus.INVALID, "is blank");
+            result.addResult("UserName", clientParameters.getUserName(), ValidationStatus.INVALID, MSG_IS_BLANK);
         }
-        if (clientParameters.getPort() <= 0 || clientParameters.getPort() >= 65535) {
+        if (clientParameters.isPortInvalid()) {
             result.addResult("Port", clientParameters.getPort(), ValidationStatus.INVALID, "is not valid");
         }
         return result;
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/Main.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/Main.java
deleted file mode 100644
index 2b47a2c..0000000
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/Main.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.main.startstop;
-
-import java.util.Arrays;
-import javax.ws.rs.core.Response;
-import lombok.Getter;
-import org.onap.policy.clamp.controlloop.common.ControlLoopConstants;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameterHandler;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
-import org.onap.policy.common.utils.resources.MessageConstants;
-import org.onap.policy.common.utils.services.Registry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This class initiates ONAP Policy Framework Control Loop participant component.
- */
-public class Main {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
-
-    private ParticipantDcaeActivator activator;
-
-    @Getter
-    private ParticipantDcaeParameters parameterGroup;
-
-    /**
-     * Instantiates the control loop participant service.
-     *
-     * @param args the command line arguments
-     */
-    public Main(final String[] args) {
-        final String argumentString = Arrays.toString(args);
-        LOGGER.info("Starting the control loop participant service with arguments - {}", argumentString);
-
-        // Check the arguments
-        final ParticipantDcaeCommandLineArguments arguments = new ParticipantDcaeCommandLineArguments();
-        try {
-            // The arguments return a string if there is a message to print and we should exit
-            final String argumentMessage = arguments.parse(args);
-            if (argumentMessage != null) {
-                LOGGER.info(argumentMessage);
-                return;
-            }
-            // Validate that the arguments are sane
-            arguments.validate();
-
-            // Read the parameters
-            parameterGroup = new ParticipantDcaeParameterHandler().getParameters(arguments);
-
-            // Now, create the activator for the service
-            activator = new ParticipantDcaeActivator(parameterGroup);
-            Registry.register(ControlLoopConstants.REG_CLRUNTIME_ACTIVATOR, activator);
-
-            // Start the activator
-            activator.start();
-        } catch (Exception exp) {
-            if (null != activator) {
-                Registry.unregister(ControlLoopConstants.REG_CLRUNTIME_ACTIVATOR);
-            }
-            throw new ControlLoopRuntimeException(Response.Status.BAD_REQUEST,
-                String.format(MessageConstants.START_FAILURE_MSG, MessageConstants.POLICY_CLAMP), exp);
-        }
-
-        // Add a shutdown hook to shut everything down in an orderly manner
-        Runtime.getRuntime().addShutdownHook(new ClRuntimeShutdownHookClass());
-        String successMsg = String.format(MessageConstants.START_SUCCESS_MSG, MessageConstants.POLICY_CLAMP);
-        LOGGER.info(successMsg);
-    }
-
-    /**
-     * Check if main is running.
-     */
-    public boolean isRunning() {
-        return activator != null && activator.isAlive();
-    }
-
-    /**
-     * Shut down Execution.
-     *
-     * @throws ControlLoopException on shutdown errors
-     */
-    public void shutdown() throws ControlLoopException {
-        // clear the parameterGroup variable
-        parameterGroup = null;
-
-        // clear the cl participant activator
-        if (activator != null) {
-            activator.stop();
-        }
-    }
-
-    /**
-     * The Class ClRuntimeShutdownHookClass terminates the control loop participant service
-     * when its run method is called.
-     */
-    private class ClRuntimeShutdownHookClass extends Thread {
-        /*
-         * (non-Javadoc)
-         *
-         * @see java.lang.Runnable#run()
-         */
-        @Override
-        public void run() {
-            if (!activator.isAlive()) {
-                return;
-            }
-
-            try {
-                // Shutdown the control loop participant service and wait for everything to stop
-                activator.stop();
-            } catch (final RuntimeException e) {
-                LOGGER.warn("error occured during shut down of the control loop participant service", e);
-            }
-        }
-    }
-
-    /**
-     * The main method.
-     *
-     * @param args the arguments
-     */
-    public static void main(final String[] args) {      // NOSONAR
-        /*
-         * NOTE: arguments are validated by the constructor, thus sonar is disabled.
-         */
-
-        new Main(args);
-    }
-}
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeActivator.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeActivator.java
deleted file mode 100644
index d485895..0000000
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeActivator.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.main.startstop;
-
-import java.util.concurrent.atomic.AtomicReference;
-import lombok.Getter;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.handler.DcaeHandler;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
-import org.onap.policy.common.utils.services.ServiceManagerContainer;
-
-/**
- * This class activates the control loop runtime component as a complete service together with all its controllers,
- * listeners & handlers.
- */
-public class ParticipantDcaeActivator extends ServiceManagerContainer {
-    @Getter
-    private final ParticipantDcaeParameters parameters;
-
-    /**
-     * Instantiate the activator for the dcae as a complete service.
-     *
-     * @param parameters the parameters for the control loop runtime service
-     */
-    public ParticipantDcaeActivator(final ParticipantDcaeParameters parameters) {
-        this.parameters = parameters;
-
-        final AtomicReference<DcaeHandler> dcaeHandler = new AtomicReference<>();
-
-        // @formatter:off
-        addAction("Dcae Handler",
-            () -> dcaeHandler.set(new DcaeHandler(parameters)),
-            () -> dcaeHandler.get().close());
-
-        addAction("Dcae Providers",
-            () -> dcaeHandler.get().startProviders(),
-            () -> dcaeHandler.get().stopProviders());
-
-        // @formatter:on
-    }
-}
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeCommandLineArguments.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeCommandLineArguments.java
deleted file mode 100644
index 0bf382a..0000000
--- a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeCommandLineArguments.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.main.startstop;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.Arrays;
-import javax.ws.rs.core.Response;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.DefaultParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.commons.lang3.StringUtils;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
-import org.onap.policy.clamp.controlloop.common.startstop.CommonCommandLineArguments;
-import org.onap.policy.common.utils.resources.ResourceUtils;
-
-/**
- * This class reads and handles command line parameters for the control loop runtime service.
- *
- */
-public class ParticipantDcaeCommandLineArguments {
-    private static final String FILE_MESSAGE_PREAMBLE = " file \"";
-    private static final int HELP_LINE_LENGTH = 120;
-
-    private final Options options;
-    private final CommonCommandLineArguments commonCommandLineArguments;
-
-    @Getter()
-    @Setter()
-    private String configurationFilePath = null;
-
-    /**
-     * Construct the options for the dcae participant.
-     */
-    public ParticipantDcaeCommandLineArguments() {
-        options = new Options();
-        commonCommandLineArguments = new CommonCommandLineArguments(options);
-    }
-
-    /**
-     * Construct the options for the CLI editor and parse in the given arguments.
-     *
-     * @param args The command line arguments
-     */
-    public ParticipantDcaeCommandLineArguments(final String[] args) {
-        // Set up the options with the default constructor
-        this();
-
-        // Parse the arguments
-        try {
-            parse(args);
-        } catch (final ControlLoopException e) {
-            throw new ControlLoopRuntimeException(Response.Status.NOT_ACCEPTABLE,
-                    "parse error on dcae participant parameters", e);
-        }
-    }
-
-    /**
-     * Parse the command line options.
-     *
-     * @param args The command line arguments
-     * @return a string with a message for help and version, or null if there is no message
-     * @throws ControlLoopException on command argument errors
-     */
-    public String parse(final String[] args) throws ControlLoopException {
-        // Clear all our arguments
-        setConfigurationFilePath(null);
-        CommandLine commandLine = null;
-        try {
-            commandLine = new DefaultParser().parse(options, args);
-        } catch (final ParseException e) {
-            throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE,
-                    "invalid command line arguments specified : " + e.getMessage());
-        }
-
-        // Arguments left over after Commons CLI does its stuff
-        final String[] remainingArgs = commandLine.getArgs();
-
-        if (remainingArgs.length > 0) {
-            throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE,
-                    "too many command line arguments specified : " + Arrays.toString(args));
-        }
-
-        if (commandLine.hasOption('h')) {
-            return commonCommandLineArguments.help(Main.class.getName(), options);
-        }
-
-        if (commandLine.hasOption('v')) {
-            return commonCommandLineArguments.version();
-        }
-
-        if (commandLine.hasOption('c')) {
-            setConfigurationFilePath(commandLine.getOptionValue('c'));
-        }
-
-        return null;
-    }
-
-    /**
-     * Validate the command line options.
-     *
-     * @throws ControlLoopException on command argument validation errors
-     */
-    public void validate() throws ControlLoopException {
-        commonCommandLineArguments.validate(configurationFilePath);
-    }
-
-    /**
-     * Gets the full expanded configuration file path.
-     *
-     * @return the configuration file path
-     */
-    public String getFullConfigurationFilePath() {
-        return ResourceUtils.getFilePath4Resource(getConfigurationFilePath());
-    }
-
-    /**
-     * Check set configuration file path.
-     *
-     * @return true, if check set configuration file path
-     */
-    public boolean checkSetConfigurationFilePath() {
-        return !StringUtils.isEmpty(configurationFilePath);
-    }
-}
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/resources/config/DCAEParticipantConfig.json b/participant/participant-impl/participant-impl-dcae/src/main/resources/config/DCAEParticipantConfig.json
index 863c135..a7ea089 100644
--- a/participant/participant-impl/participant-impl-dcae/src/main/resources/config/DCAEParticipantConfig.json
+++ b/participant/participant-impl/participant-impl-dcae/src/main/resources/config/DCAEParticipantConfig.json
@@ -1,22 +1,21 @@
 {
     "name": "ControlLoopParticipantDcae",
     "clampClientParameters": {
-        "name": "Clamp",
-        "host": "0.0.0.0",
+        "clientName": "Clamp",
+        "hostname": "0.0.0.0",
         "port": 8443,
         "userName": "admin",
         "password": "password",
-        "https": true,
-        "aaf": false
+        "useHttps": true,
+        "allowSelfSignedCerts": false
     },
     "consulClientParameters": {
-        "name": "Consul",
-        "host": "consul",
+        "clientName": "Consul",
+        "hostname": "consul",
         "port": 31321,
         "userName": "admin",
         "password": "password",
-        "https": false,
-        "aaf": false
+        "useHttps": false
     },
     "intermediaryParameters": {
         "name": "Participant parameters",
diff --git a/participant/participant-impl/participant-impl-dcae/src/main/resources/config/application.yaml b/participant/participant-impl/participant-impl-dcae/src/main/resources/config/application.yaml
new file mode 100644
index 0000000..58908cf
--- /dev/null
+++ b/participant/participant-impl/participant-impl-dcae/src/main/resources/config/application.yaml
@@ -0,0 +1,3 @@
+
+participant:
+  file: src/main/resources/config/DCAEParticipantConfig.json
diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/endtoend/PartecipantDcaeTest.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/endtoend/PartecipantDcaeTest.java
new file mode 100644
index 0000000..6d7592d
--- /dev/null
+++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/endtoend/PartecipantDcaeTest.java
@@ -0,0 +1,171 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.endtoend;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.mockserver.model.HttpRequest.request;
+import static org.mockserver.model.HttpResponse.response;
+
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockserver.integration.ClientAndServer;
+import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
+import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantControlLoopStateChange;
+import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantControlLoopUpdate;
+import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.CommonTestData;
+import org.onap.policy.clamp.controlloop.participant.dcae.main.rest.TestListenerUtils;
+import org.onap.policy.clamp.controlloop.participant.intermediary.api.ParticipantIntermediaryApi;
+import org.onap.policy.clamp.controlloop.participant.intermediary.comm.ControlLoopStateChangeListener;
+import org.onap.policy.clamp.controlloop.participant.intermediary.comm.ControlLoopUpdateListener;
+import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
+import org.onap.policy.common.utils.coder.CoderException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+@ExtendWith(SpringExtension.class)
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
+@TestPropertySource(properties = "participant.file=src/test/resources/parameters/TestParameters.json")
+class PartecipantDcaeTest {
+
+    private static final CommInfrastructure INFRA = CommInfrastructure.NOOP;
+    private static final String TOPIC = "my-topic";
+
+    private static final String LOOP = "pmsh_loop";
+    private static final String BLUEPRINT_DEPLOYED = "BLUEPRINT_DEPLOYED";
+
+    private static ClientAndServer mockClampServer;
+    private static ClientAndServer mockConsulServer;
+
+    @Autowired
+    private ParticipantIntermediaryApi participantIntermediaryApi;
+
+    /**
+     * start Servers.
+     */
+    @BeforeAll
+    public static void startServers() {
+
+        // Clamp
+        mockClampServer = ClientAndServer.startClientAndServer(8443);
+
+        mockClampServer.when(request().withMethod("GET").withPath("/restservices/clds/v2/loop/getstatus/" + LOOP))
+                .respond(response().withBody(CommonTestData.createJsonStatus(BLUEPRINT_DEPLOYED).toString())
+                        .withStatusCode(200));
+
+        mockClampServer.when(request().withMethod("PUT").withPath("/restservices/clds/v2/loop/deploy/" + LOOP))
+                .respond(response().withStatusCode(202));
+
+        mockClampServer.when(request().withMethod("PUT").withPath("/restservices/clds/v2/loop/undeploy/" + LOOP))
+                .respond(response().withStatusCode(202));
+
+        // Consul
+        mockConsulServer = ClientAndServer.startClientAndServer(31321);
+
+        mockConsulServer.when(request().withMethod("PUT").withPath("/v1/kv/dcae-pmsh:policy"))
+                .respond(response().withStatusCode(200));
+    }
+
+    /**
+     * stop Server.
+     */
+    @AfterAll
+    public static void stopServer() {
+        mockClampServer.stop();
+        mockClampServer = null;
+
+        mockConsulServer.stop();
+        mockConsulServer = null;
+    }
+
+    @Test
+    void testParticipantControlLoopStateChangeMessageListener() {
+        ParticipantControlLoopStateChange participantControlLoopStateChangeMsg =
+                TestListenerUtils.createControlLoopStateChangeMsg(ControlLoopOrderedState.UNINITIALISED);
+        participantControlLoopStateChangeMsg.setOrderedState(ControlLoopOrderedState.PASSIVE);
+
+        ControlLoopStateChangeListener clStateChangeListener =
+                new ControlLoopStateChangeListener(participantIntermediaryApi.getParticipantHandler());
+
+        clStateChangeListener.onTopicEvent(INFRA, TOPIC, null, participantControlLoopStateChangeMsg);
+        assertEquals(ControlLoopOrderedState.PASSIVE, participantControlLoopStateChangeMsg.getOrderedState());
+
+        participantControlLoopStateChangeMsg.setOrderedState(ControlLoopOrderedState.RUNNING);
+        clStateChangeListener.onTopicEvent(INFRA, TOPIC, null, participantControlLoopStateChangeMsg);
+        assertEquals(ControlLoopOrderedState.RUNNING, participantControlLoopStateChangeMsg.getOrderedState());
+
+        participantControlLoopStateChangeMsg.setOrderedState(ControlLoopOrderedState.RUNNING);
+        clStateChangeListener.onTopicEvent(INFRA, TOPIC, null, participantControlLoopStateChangeMsg);
+        assertEquals(ControlLoopOrderedState.RUNNING, participantControlLoopStateChangeMsg.getOrderedState());
+    }
+
+    @Test
+    void testControlLoopUpdateListener_ParticipantIdNoMatch() throws CoderException {
+        ParticipantControlLoopUpdate participantControlLoopUpdateMsg = TestListenerUtils.createControlLoopUpdateMsg();
+        participantControlLoopUpdateMsg.getParticipantId().setName("DummyName");
+        participantControlLoopUpdateMsg.getControlLoop().setOrderedState(ControlLoopOrderedState.PASSIVE);
+
+        ControlLoopUpdateListener clUpdateListener =
+                new ControlLoopUpdateListener(participantIntermediaryApi.getParticipantHandler());
+        clUpdateListener.onTopicEvent(INFRA, TOPIC, null, participantControlLoopUpdateMsg);
+
+        // Verify the content in participantHandler
+        assertNotEquals(participantControlLoopUpdateMsg.getParticipantId().getName(),
+                participantIntermediaryApi.getParticipantHandler().getParticipantId().getName());
+    }
+
+    @Test
+    void testControlLoopUpdateListenerPassive() throws CoderException {
+        ParticipantControlLoopUpdate participantControlLoopUpdateMsg = TestListenerUtils.createControlLoopUpdateMsg();
+        participantControlLoopUpdateMsg.getControlLoop().setOrderedState(ControlLoopOrderedState.PASSIVE);
+
+        ControlLoopUpdateListener clUpdateListener =
+                new ControlLoopUpdateListener(participantIntermediaryApi.getParticipantHandler());
+        clUpdateListener.onTopicEvent(INFRA, TOPIC, null, participantControlLoopUpdateMsg);
+
+        // Verify the content in participantHandler
+        assertEquals(participantIntermediaryApi.getParticipantHandler().getParticipantId(),
+                participantControlLoopUpdateMsg.getParticipantId());
+        assertEquals(1, participantIntermediaryApi.getParticipantHandler().getControlLoopHandler().getControlLoops()
+                .getControlLoopList().size());
+    }
+
+    @Test
+    void testControlLoopUpdateListenerUninitialised() throws CoderException {
+        ParticipantControlLoopUpdate participantControlLoopUpdateMsg = TestListenerUtils.createControlLoopUpdateMsg();
+        participantControlLoopUpdateMsg.getControlLoop().setOrderedState(ControlLoopOrderedState.UNINITIALISED);
+
+        ControlLoopUpdateListener clUpdateListener =
+                new ControlLoopUpdateListener(participantIntermediaryApi.getParticipantHandler());
+        clUpdateListener.onTopicEvent(INFRA, TOPIC, null, participantControlLoopUpdateMsg);
+
+        // Verify the content in participantHandler
+        assertEquals(participantIntermediaryApi.getParticipantHandler().getParticipantId(),
+                participantControlLoopUpdateMsg.getParticipantId());
+        assertEquals(1, participantIntermediaryApi.getParticipantHandler().getControlLoopHandler().getControlLoops()
+                .getControlLoopList().size());
+    }
+}
diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClientTest.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClientTest.java
index 040b33f..6e37522 100644
--- a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClientTest.java
+++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClientTest.java
@@ -26,21 +26,25 @@
 import static org.mockserver.model.HttpRequest.request;
 import static org.mockserver.model.HttpResponse.response;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import javax.ws.rs.core.MediaType;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockserver.integration.ClientAndServer;
 import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.CommonTestData;
 import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
 import org.onap.policy.clamp.controlloop.participant.dcae.model.Loop;
 import org.onap.policy.common.utils.coder.Coder;
 import org.onap.policy.common.utils.coder.StandardCoder;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 /**
  * Class to perform unit test of {@link ClampHttpClient}.
  *
  */
-public class ClampHttpClientTest {
+@ExtendWith(SpringExtension.class)
+class ClampHttpClientTest {
 
     private static final String LOOP = "pmsh_loop";
     private static final String BLUEPRINT_DEPLOYED = "BLUEPRINT_DEPLOYED";
@@ -52,7 +56,7 @@
     /**
      * Set up.
      */
-    @BeforeClass
+    @BeforeAll
     public static void setUp() {
         CommonTestData commonTestData = new CommonTestData();
 
@@ -63,7 +67,8 @@
         mockServer = ClientAndServer.startClientAndServer(parameters.getClampClientParameters().getPort());
 
         mockServer.when(request().withMethod("GET").withPath("/restservices/clds/v2/loop/getstatus/" + LOOP))
-                .respond(response().withBody(CommonTestData.createJsonStatus(BLUEPRINT_DEPLOYED)).withStatusCode(200));
+                .respond(response().withBody(CommonTestData.createJsonStatus(BLUEPRINT_DEPLOYED)).withStatusCode(200)
+                        .withHeader("Content-Type", MediaType.APPLICATION_JSON));
 
         mockServer.when(request().withMethod("PUT").withPath("/restservices/clds/v2/loop/deploy/" + LOOP))
                 .respond(response().withStatusCode(202));
@@ -72,15 +77,15 @@
                 .respond(response().withStatusCode(202));
     }
 
-    @AfterClass
+    @AfterAll
     public static void stopServer() {
         mockServer.stop();
         mockServer = null;
     }
 
     @Test
-    public void test_getstatus() throws Exception {
-        try (ClampHttpClient client = new ClampHttpClient(parameters.getClampClientParameters())) {
+    void test_getstatus() throws Exception {
+        try (ClampHttpClient client = new ClampHttpClient(parameters)) {
 
             Loop status = client.getstatus(LOOP);
 
@@ -95,8 +100,8 @@
     }
 
     @Test
-    public void test_deploy() throws Exception {
-        try (ClampHttpClient client = new ClampHttpClient(parameters.getClampClientParameters())) {
+    void test_deploy() throws Exception {
+        try (ClampHttpClient client = new ClampHttpClient(parameters)) {
 
             assertTrue(client.deploy(LOOP));
 
@@ -106,8 +111,8 @@
     }
 
     @Test
-    public void test_undeploy() throws Exception {
-        try (ClampHttpClient client = new ClampHttpClient(parameters.getClampClientParameters())) {
+    void test_undeploy() throws Exception {
+        try (ClampHttpClient client = new ClampHttpClient(parameters)) {
 
             assertTrue(client.undeploy(LOOP));
 
@@ -117,12 +122,12 @@
     }
 
     @Test
-    public void test_getStatusCodeNull() {
+    void test_getStatusCodeNull() {
         assertThat(ClampHttpClient.getStatusCode(null)).isEqualTo(ClampHttpClient.STATUS_NOT_FOUND);
     }
 
     @Test
-    public void test_getStatusEmptyMap() {
+    void test_getStatusEmptyMap() {
         assertThat(ClampHttpClient.getStatusCode(new Loop())).isEqualTo(ClampHttpClient.STATUS_NOT_FOUND);
     }
 }
diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ConsulDcaeHttpClientTest.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ConsulDcaeHttpClientTest.java
new file mode 100644
index 0000000..734919e
--- /dev/null
+++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ConsulDcaeHttpClientTest.java
@@ -0,0 +1,77 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.httpclient;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockserver.model.HttpRequest.request;
+import static org.mockserver.model.HttpResponse.response;
+
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockserver.integration.ClientAndServer;
+import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.CommonTestData;
+import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+/**
+ * Class to perform unit test of {@link ConsulDcaeHttpClient}.
+ *
+ */
+@ExtendWith(SpringExtension.class)
+class ConsulDcaeHttpClientTest {
+
+    private static ClientAndServer mockServer;
+    private static ParticipantDcaeParameters parameters;
+
+    @BeforeAll
+    public static void startServer() {
+        CommonTestData commonTestData = new CommonTestData();
+
+        parameters = commonTestData.toObject(
+                commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME),
+                ParticipantDcaeParameters.class);
+
+        mockServer = ClientAndServer.startClientAndServer(parameters.getConsulClientParameters().getPort());
+
+        mockServer.when(request().withMethod("PUT").withPath("/v1/kv/dcae-pmsh:policy"))
+                .respond(response().withStatusCode(200));
+    }
+
+    @AfterAll
+    public static void stopServer() {
+        mockServer.stop();
+        mockServer = null;
+    }
+
+    @Test
+    void test_deploy() throws Exception {
+        try (ConsulDcaeHttpClient client = new ConsulDcaeHttpClient(parameters)) {
+
+            assertTrue(client.deploy("policy", ""));
+
+        } catch (Exception e) {
+            Assertions.fail(e.getMessage());
+        }
+    }
+}
diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/CommonTestData.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/CommonTestData.java
index bcfaf8b..cb06fcb 100644
--- a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/CommonTestData.java
+++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/CommonTestData.java
@@ -35,6 +35,7 @@
 import org.onap.policy.common.utils.coder.Coder;
 import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
+import org.onap.policy.common.utils.network.NetworkUtil;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
 
 /**
@@ -47,10 +48,8 @@
     public static final List<TopicParameters> TOPIC_PARAMS = Arrays.asList(getTopicParams());
     private static final String REST_CLIENT_PASSWORD = "password";
     private static final String REST_CLIENT_USER = "admin";
-    private static final int REST_CLAMP_PORT = 8443;
-    private static final int REST_CONSUL_PORT = 31321;
-    private static final String REST_CLAMP_HOST = "localhost";
-    private static final String REST_CONSUL_HOST = "consul";
+    private static final String REST_CLAMP_HOST = "0.0.0.0";
+    private static final String REST_CONSUL_HOST = "0.0.0.0";
     private static final boolean REST_CLAMP_HTTPS = false;
     private static final boolean REST_CONSUL_HTTPS = false;
     private static final boolean REST_CLIENT_AAF = false;
@@ -99,12 +98,17 @@
      */
     public Map<String, Object> getClampClientParametersMap(final boolean isEmpty) {
         final Map<String, Object> map = new TreeMap<>();
+        map.put("clientName", "Clamp");
         map.put("https", REST_CLAMP_HTTPS);
         map.put("aaf", REST_CLIENT_AAF);
 
         if (!isEmpty) {
-            map.put("host", REST_CLAMP_HOST);
-            map.put("port", REST_CLAMP_PORT);
+            map.put("hostname", REST_CLAMP_HOST);
+            try {
+                map.put("port", NetworkUtil.allocPort());
+            } catch (IOException e) {
+                throw new ControlLoopRuntimeException(Response.Status.NOT_ACCEPTABLE, "not valid port", e);
+            }
             map.put("userName", REST_CLIENT_USER);
             map.put("password", REST_CLIENT_PASSWORD);
         }
@@ -120,12 +124,17 @@
      */
     public Map<String, Object> getConsulClientParametersMap(final boolean isEmpty) {
         final Map<String, Object> map = new TreeMap<>();
+        map.put("clientName", "Consul");
         map.put("https", REST_CONSUL_HTTPS);
         map.put("aaf", REST_CLIENT_AAF);
 
         if (!isEmpty) {
-            map.put("host", REST_CONSUL_HOST);
-            map.put("port", REST_CONSUL_PORT);
+            map.put("hostname", REST_CONSUL_HOST);
+            try {
+                map.put("port", NetworkUtil.allocPort());
+            } catch (IOException e) {
+                throw new ControlLoopRuntimeException(Response.Status.NOT_ACCEPTABLE, "not valid port", e);
+            }
             map.put("userName", REST_CLIENT_USER);
             map.put("password", REST_CLIENT_PASSWORD);
         }
@@ -209,7 +218,7 @@
      */
     public static ToscaConceptIdentifier getParticipantId() {
         final ToscaConceptIdentifier participantId = new ToscaConceptIdentifier();
-        participantId.setName("CDSParticipant0");
+        participantId.setName("DCAEParticipant0");
         participantId.setVersion("1.0.0");
         return participantId;
     }
@@ -276,7 +285,7 @@
     }
 
     /**
-     * create Json response from getstatus call.
+     * Create Json response from getstatus call.
      *
      * @param status the status of Partecipant
      * @return the JSON
diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameterHandler.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameterHandler.java
index 058a3da..2eb8332 100644
--- a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameterHandler.java
+++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameterHandler.java
@@ -20,83 +20,45 @@
 
 package org.onap.policy.clamp.controlloop.participant.dcae.main.parameters;
 
-import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 
 import java.io.FileNotFoundException;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameterHandler;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.ParticipantDcaeCommandLineArguments;
 import org.onap.policy.common.utils.coder.CoderException;
 
+
 /**
  * Class to perform unit test of {@link ParticipantParameterHandler}.
  *
  */
-public class TestParticipantDcaeParameterHandler {
+class TestParticipantDcaeParameterHandler {
 
     @Test
-    public void testParameterHandlerNoParameterFile() throws ControlLoopException {
-        final String[] emptyArgumentString = { "-c", "src/test/resources/parameters/NoParametersFile.json" };
+    void testParameterHandlerNoParameterFile() throws ControlLoopException {
+        final String path = "src/test/resources/parameters/NoParametersFile.json";
 
-        final ParticipantDcaeCommandLineArguments emptyArguments = new ParticipantDcaeCommandLineArguments();
-        emptyArguments.parse(emptyArgumentString);
-
-        assertThatThrownBy(() -> new ParticipantDcaeParameterHandler().getParameters(emptyArguments))
+        assertThatThrownBy(() -> new ParticipantDcaeParameterHandler().toParticipantDcaeParameters(path))
             .hasCauseInstanceOf(CoderException.class)
             .hasRootCauseInstanceOf(FileNotFoundException.class);
     }
 
     @Test
-    public void testParameterHandlerInvalidParameters() throws ControlLoopException {
-        final String[] invalidArgumentString = { "-c", "src/test/resources/parameters/InvalidParameters.json" };
+    void testParameterHandlerInvalidParameters() throws ControlLoopException {
+        final String path = "src/test/resources/parameters/InvalidParameters.json";
 
-        final ParticipantDcaeCommandLineArguments invalidArguments =
-                new ParticipantDcaeCommandLineArguments();
-        invalidArguments.parse(invalidArgumentString);
-
-        assertThatThrownBy(() -> new ParticipantDcaeParameterHandler().getParameters(invalidArguments))
+        assertThatThrownBy(() -> new ParticipantDcaeParameterHandler().toParticipantDcaeParameters(path))
             .hasMessageStartingWith("error reading parameters from")
             .hasCauseInstanceOf(CoderException.class);
     }
 
     @Test
-    public void testParticipantParameterGroup() throws ControlLoopException {
-        final String[] participantConfigParameters = { "-c", "src/test/resources/parameters/TestParameters.json" };
-
-        final ParticipantDcaeCommandLineArguments arguments = new ParticipantDcaeCommandLineArguments();
-        arguments.parse(participantConfigParameters);
+    void testParticipantParameterGroup() throws ControlLoopException {
+        final String path = "src/test/resources/parameters/TestParameters.json";
 
         final ParticipantDcaeParameters parGroup = new ParticipantDcaeParameterHandler()
-                .getParameters(arguments);
-        assertTrue(arguments.checkSetConfigurationFilePath());
+                .toParticipantDcaeParameters(path);
         assertEquals(CommonTestData.PARTICIPANT_GROUP_NAME, parGroup.getName());
     }
-
-    @Test
-    public void testParticipantVersion() throws ControlLoopException {
-        final String[] participantConfigParameters = { "-v" };
-        final ParticipantDcaeCommandLineArguments arguments = new ParticipantDcaeCommandLineArguments();
-        assertThat(arguments.parse(participantConfigParameters)).startsWith(
-                "ONAP Tosca defined control loop Participant");
-    }
-
-    @Test
-    public void testParticipantHelp() throws ControlLoopException {
-        final String[] participantConfigParameters = { "-h" };
-        final ParticipantDcaeCommandLineArguments arguments = new ParticipantDcaeCommandLineArguments();
-        assertThat(arguments.parse(participantConfigParameters)).startsWith("usage:");
-    }
-
-    @Test
-    public void testParticipantInvalidOption() throws ControlLoopException {
-        final String[] participantConfigParameters = { "-d" };
-        final ParticipantDcaeCommandLineArguments arguments = new ParticipantDcaeCommandLineArguments();
-        assertThatThrownBy(() -> arguments.parse(participantConfigParameters))
-            .hasMessageStartingWith("invalid command line arguments specified");
-    }
 }
diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameters.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameters.java
index edb4293..2320ae0 100644
--- a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameters.java
+++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameters.java
@@ -20,14 +20,12 @@
 
 package org.onap.policy.clamp.controlloop.participant.dcae.main.parameters;
 
-import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import java.util.Map;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.onap.policy.clamp.controlloop.participant.intermediary.parameters.ParticipantIntermediaryParameters;
 import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
 import org.onap.policy.common.parameters.ValidationResult;
@@ -36,17 +34,17 @@
  * Class to perform unit test of {@link ParticipantParameterGroup}.
  *
  */
-public class TestParticipantDcaeParameters {
+class TestParticipantDcaeParameters {
     CommonTestData commonTestData = new CommonTestData();
 
     @Test
-    public void testParticipantParameterGroup_Named() {
+    void testParticipantParameterGroup_Named() {
         final ParticipantDcaeParameters participantParameters = new ParticipantDcaeParameters("my-name");
         assertEquals("my-name", participantParameters.getName());
     }
 
     @Test
-    public void testParticipantParameterGroup() {
+    void testParticipantParameterGroup() {
         final ParticipantDcaeParameters participantParameters = commonTestData.toObject(
                 commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME),
                 ParticipantDcaeParameters.class);
@@ -64,7 +62,7 @@
     }
 
     @Test
-    public void testParticipantParameterGroup_EmptyParticipantIntermediaryParameters() {
+    void testParticipantParameterGroup_EmptyParticipantIntermediaryParameters() {
         final Map<String, Object> map =
                 commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME);
         map.replace("intermediaryParameters", commonTestData.getIntermediaryParametersMap(true));
@@ -75,7 +73,7 @@
     }
 
     @Test
-    public void testParticipantParameterGroup_EmptyTopicParameters() {
+    void testParticipantParameterGroup_EmptyTopicParameters() {
         final Map<String, Object> map =
                 commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME);
         final Map<String, Object> intermediaryParametersMap = commonTestData.getIntermediaryParametersMap(false);
diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/rest/TestListenerUtils.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/rest/TestListenerUtils.java
index c3cc8b7..f414b7a 100644
--- a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/rest/TestListenerUtils.java
+++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/rest/TestListenerUtils.java
@@ -25,7 +25,6 @@
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.UUID;
-import lombok.Getter;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
@@ -35,10 +34,7 @@
 import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantControlLoopUpdate;
 import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantHealthCheck;
 import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStateChange;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.handler.DcaeProvider;
 import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.CommonTestData;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
-import org.onap.policy.clamp.controlloop.participant.intermediary.handler.ParticipantHandler;
 import org.onap.policy.common.utils.coder.Coder;
 import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
@@ -55,23 +51,6 @@
     private static final String TOSCA_TEMPLATE_YAML = "examples/controlloop/PMSubscriptionHandling.yaml";
     static CommonTestData commonTestData = new CommonTestData();
 
-    @Getter
-    private static ParticipantHandler participantHandler;
-
-    /**
-     * Method to initialize participantHandler.
-     */
-    public static void initParticipantHandler() {
-
-        final ParticipantDcaeParameters parameters = commonTestData.toObject(
-                commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME),
-                ParticipantDcaeParameters.class);
-
-        DcaeProvider dcaeProvider = new DcaeProvider(parameters);
-
-        participantHandler = dcaeProvider.getIntermediaryApi().getParticipantHandler();
-    }
-
     /**
      * Method to create a controlLoop from a yaml file.
      *
@@ -120,7 +99,7 @@
     public static ParticipantStateChange createParticipantStateChangeMsg(final ParticipantState participantState) {
         final ParticipantStateChange participantStateChangeMsg = new ParticipantStateChange();
         ToscaConceptIdentifier participantId = new ToscaConceptIdentifier();
-        participantId.setName("CDSParticipant0");
+        participantId.setName("DCAEParticipant0");
         participantId.setVersion("1.0.0");
 
         participantStateChangeMsg.setParticipantId(participantId);
@@ -146,7 +125,7 @@
         controlLoopId.setVersion("1.0.0");
 
         ToscaConceptIdentifier participantId = new ToscaConceptIdentifier();
-        participantId.setName("CDSParticipant0");
+        participantId.setName("DCAEParticipant0");
         participantId.setVersion("1.0.0");
 
         participantClStateChangeMsg.setControlLoopId(controlLoopId);
@@ -169,7 +148,7 @@
         controlLoopId.setVersion("1.0.0");
 
         ToscaConceptIdentifier participantId = new ToscaConceptIdentifier();
-        participantId.setName("CDSParticipant0");
+        participantId.setName("DCAEParticipant0");
         participantId.setVersion("1.0.0");
 
         clUpdateMsg.setControlLoopId(controlLoopId);
@@ -212,7 +191,7 @@
      */
     public static ParticipantHealthCheck createParticipantHealthCheckMsg() {
         ToscaConceptIdentifier participantId = new ToscaConceptIdentifier();
-        participantId.setName("CDSParticipant0");
+        participantId.setName("DCAEParticipant0");
         participantId.setVersion("1.0.0");
 
         ToscaConceptIdentifier controlLoopId = new ToscaConceptIdentifier();
diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestMain.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestMain.java
deleted file mode 100644
index f779f3a..0000000
--- a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestMain.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.main.startstop;
-
-import static org.assertj.core.api.Assertions.assertThatCode;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.clamp.controlloop.common.ControlLoopConstants;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.Main;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.ParticipantDcaeActivator;
-import org.onap.policy.common.utils.resources.MessageConstants;
-import org.onap.policy.common.utils.services.Registry;
-
-/**
- * Class to perform unit test of {@link Main}}.
- */
-public class TestMain {
-
-    /**
-     * Set up.
-     */
-    @BeforeClass
-    public static void setUp() {
-        Registry.newRegistry();
-    }
-
-    /**
-     * Shuts "main" down.
-     *
-     * @throws Exception if an error occurs
-     */
-    @AfterClass
-    public static void tearDown() throws Exception {
-        // shut down activator
-        final ParticipantDcaeActivator activator =
-            Registry.getOrDefault(ControlLoopConstants.REG_CLRUNTIME_ACTIVATOR,
-                            ParticipantDcaeActivator.class, null);
-        if (activator != null && activator.isAlive()) {
-            activator.shutdown();
-        }
-    }
-
-    @Test
-    public void testMain_Help() {
-        final String[] configParameters = {"-h"};
-        Main main = new Main(configParameters);
-        assertFalse(main.isRunning());
-    }
-
-    @Test
-    public void testMain_Version() {
-        final String[] configParameters = {"-v"};
-        Main main = new Main(configParameters);
-        assertFalse(main.isRunning());
-    }
-
-    @Test
-    public void testMain_Valid() {
-        final String[] configParameters = {"-c", "src/test/resources/parameters/TestParameters.json"};
-        Main main = new Main(configParameters);
-        assertTrue(main.isRunning());
-
-        // ensure items were added to the registry
-        assertNotNull(Registry.get(ControlLoopConstants.REG_CLRUNTIME_ACTIVATOR, ParticipantDcaeActivator.class));
-
-        assertThatCode(() -> main.shutdown()).doesNotThrowAnyException();
-
-        assertFalse(main.isRunning());
-    }
-
-    @Test
-    public void testMain_NoParameter() {
-        assertThatConfigParameterThrownException(new String[] {});
-    }
-
-    @Test
-    public void testMain_FilePathNotDefined() {
-        assertThatConfigParameterThrownException(new String[] {"-c"});
-    }
-
-    @Test
-    public void testMain_TooManyCommand() {
-        assertThatConfigParameterThrownException(new String[] {"-h", "d"});
-    }
-
-    @Test
-    public void testMain_WrongParameter() {
-        assertThatConfigParameterThrownException(new String[] {"-d"});
-    }
-
-    private void assertThatConfigParameterThrownException(final String[] configParameters) {
-        assertThatThrownBy(() -> Main.main(configParameters)).isInstanceOf(ControlLoopRuntimeException.class)
-                .hasMessage(String.format(MessageConstants.START_FAILURE_MSG, MessageConstants.POLICY_CLAMP));
-    }
-
-    @Test
-    public void testParticipant_NoFileWithThisName() {
-        assertThatConfigFileThrownException("src/test/resources/parameters/NoFileWithThisName.json");
-    }
-
-    @Test
-    public void testParticipant_NotValidFile() {
-        assertThatConfigFileThrownException("src/test/resources/parameters");
-    }
-
-    @Test
-    public void testParticipant_NoParameters() {
-        assertThatConfigFileThrownException("src/test/resources/parameters/NoParameters.json");
-    }
-
-    @Test
-    public void testParticipant_InvalidParameters() {
-        assertThatConfigFileThrownException("src/test/resources/parameters/InvalidParameters.json");
-    }
-
-    @Test
-    public void testParticipant_WrongJsonFormat() {
-        assertThatConfigFileThrownException("src/test/resources/parameters/Unreadable.json");
-    }
-
-    private void assertThatConfigFileThrownException(final String configFilePath) {
-        final String[] configParameters = new String[] {"-c", configFilePath};
-        assertThatThrownBy(() -> new Main(configParameters)).isInstanceOf(ControlLoopRuntimeException.class)
-                .hasMessage(String.format(MessageConstants.START_FAILURE_MSG, MessageConstants.POLICY_CLAMP));
-    }
-}
diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestParticipantDcaeActivator.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestParticipantDcaeActivator.java
deleted file mode 100644
index 1903868..0000000
--- a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestParticipantDcaeActivator.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2021 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.policy.clamp.controlloop.participant.dcae.main.startstop;
-
-import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.CommonTestData;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameterHandler;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.ParticipantDcaeActivator;
-import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.ParticipantDcaeCommandLineArguments;
-import org.onap.policy.common.utils.services.Registry;
-
-/**
- * Class to perform unit test of {@link ParticipantDcaeActivator}}.
- *
- */
-public class TestParticipantDcaeActivator {
-
-    private static ParticipantDcaeActivator activator;
-
-    /**
-     * Initializes an activator.
-     *
-     * @throws Exception if an error occurs
-     */
-    @BeforeClass
-    public static void setUp() throws Exception {
-        Registry.newRegistry();
-        final String[] participantConfigParameters = { "-c", "src/test/resources/parameters/TestParameters.json"};
-        final ParticipantDcaeCommandLineArguments arguments =
-                new ParticipantDcaeCommandLineArguments(participantConfigParameters);
-        final ParticipantDcaeParameters parGroup =
-                new ParticipantDcaeParameterHandler().getParameters(arguments);
-        activator = new ParticipantDcaeActivator(parGroup);
-    }
-
-    /**
-     * Method for cleanup after each test.
-     *
-     * @throws Exception if an error occurs
-     */
-    @AfterClass
-    public static void teardown() throws Exception {
-        // shut down activator
-        if (activator != null && activator.isAlive()) {
-            activator.shutdown();
-        }
-    }
-
-    @Test
-    public void testParticipantActivator() {
-        activator.start();
-        assertTrue(activator.isAlive());
-        assertTrue(activator.getParameters().isValid());
-        assertEquals(CommonTestData.PARTICIPANT_GROUP_NAME, activator.getParameters().getName());
-
-        // repeat - should throw an exception
-        assertThatIllegalStateException().isThrownBy(() -> activator.start());
-        assertTrue(activator.isAlive());
-        assertTrue(activator.getParameters().isValid());
-
-        activator.shutdown();
-        assertFalse(activator.isAlive());
-
-        // repeat - should throw an exception
-        assertThatIllegalStateException().isThrownBy(() -> activator.shutdown());
-        assertFalse(activator.isAlive());
-    }
-}
diff --git a/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestParameters.json b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestParameters.json
index 789fc7b..580eea7 100644
--- a/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestParameters.json
+++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestParameters.json
@@ -1,22 +1,21 @@
 {
     "name": "ControlLoopParticipantGroup",
     "clampClientParameters": {
-        "name": "Clamp",
-        "host": "0.0.0.0",
+        "clientName": "Clamp",
+        "hostname": "0.0.0.0",
         "port": 8443,
         "userName": "admin",
         "password": "password",
-        "https": true,
-        "aaf": false
+        "useHttps": true,
+        "allowSelfSignedCerts": false
     },
     "consulClientParameters": {
-        "name": "Clamp",
-        "host": "consul",
+        "clientName": "Consul",
+        "hostname": "consul",
         "port": 31321,
         "userName": "admin",
         "password": "password",
-        "https": false,
-        "aaf": false
+        "useHttps": false
     },
     "intermediaryParameters": {
         "name": "Participant parameters",