Add failure handling support in Intermediary

Add Failure handling support in Intermediary,
and refactor the communication between Participant and Intermediary.

Issue-ID: POLICY-4707
Change-Id: Ica22e0e820efda372886d6d8da9c3526633321e2
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
diff --git a/participant/participant-impl/participant-impl-a1pms/src/main/java/org/onap/policy/clamp/acm/participant/a1pms/config/ParticipantConfig.java b/participant/participant-impl/participant-impl-a1pms/src/main/java/org/onap/policy/clamp/acm/participant/a1pms/config/ParticipantConfig.java
deleted file mode 100755
index 7158b5d..0000000
--- a/participant/participant-impl/participant-impl-a1pms/src/main/java/org/onap/policy/clamp/acm/participant/a1pms/config/ParticipantConfig.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2022 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.acm.participant.a1pms.config;
-
-import org.onap.policy.clamp.acm.participant.a1pms.handler.AutomationCompositionElementHandler;
-import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class ParticipantConfig {
-
-    /**
-     * Register AutomationCompositionElementListener.
-     *
-     * @param intermediaryApi the ParticipantIntermediaryApi
-     * @param acElementHandler the AutomationComposition Element Handler
-     */
-    @Autowired
-    public void registerAutomationCompositionElementListener(ParticipantIntermediaryApi intermediaryApi,
-            AutomationCompositionElementHandler acElementHandler) {
-        intermediaryApi.registerAutomationCompositionElementListener(acElementHandler);
-        acElementHandler.setIntermediaryApi(intermediaryApi);
-    }
-}
diff --git a/participant/participant-impl/participant-impl-a1pms/src/main/java/org/onap/policy/clamp/acm/participant/a1pms/handler/AutomationCompositionElementHandler.java b/participant/participant-impl/participant-impl-a1pms/src/main/java/org/onap/policy/clamp/acm/participant/a1pms/handler/AutomationCompositionElementHandler.java
index 665071b..d653c5a 100755
--- a/participant/participant-impl/participant-impl-a1pms/src/main/java/org/onap/policy/clamp/acm/participant/a1pms/handler/AutomationCompositionElementHandler.java
+++ b/participant/participant-impl/participant-impl-a1pms/src/main/java/org/onap/policy/clamp/acm/participant/a1pms/handler/AutomationCompositionElementHandler.java
@@ -30,7 +30,6 @@
 import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import lombok.Setter;
 import org.apache.http.HttpStatus;
 import org.onap.policy.clamp.acm.participant.a1pms.exception.A1PolicyServiceException;
 import org.onap.policy.clamp.acm.participant.a1pms.models.ConfigurationEntity;
@@ -62,8 +61,7 @@
 
     private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
-    @Setter
-    private ParticipantIntermediaryApi intermediaryApi;
+    private final ParticipantIntermediaryApi intermediaryApi;
 
     private final AcA1PmsClient acA1PmsClient;
 
diff --git a/participant/participant-impl/participant-impl-a1pms/src/test/java/org/onap/policy/clamp/acm/participant/a1pms/handler/AcElementHandlerTest.java b/participant/participant-impl/participant-impl-a1pms/src/test/java/org/onap/policy/clamp/acm/participant/a1pms/handler/AcElementHandlerTest.java
index 77f41cb..50f4932 100755
--- a/participant/participant-impl/participant-impl-a1pms/src/test/java/org/onap/policy/clamp/acm/participant/a1pms/handler/AcElementHandlerTest.java
+++ b/participant/participant-impl/participant-impl-a1pms/src/test/java/org/onap/policy/clamp/acm/participant/a1pms/handler/AcElementHandlerTest.java
@@ -68,9 +68,9 @@
 
     @Test
     void test_automationCompositionElementStateChange() throws A1PolicyServiceException {
-        var automationCompositionElementHandler = new AutomationCompositionElementHandler(acA1PmsClient);
         var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-        automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+        var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acA1PmsClient);
 
         var automationCompositionId = commonTestData.getAutomationCompositionId();
         var element = commonTestData.getAutomationCompositionElement();
@@ -93,11 +93,11 @@
 
     @Test
     void test_AutomationCompositionElementUpdate() throws A1PolicyServiceException {
-        var automationCompositionElementHandler = new AutomationCompositionElementHandler(acA1PmsClient);
         var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-        automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
-        var element = commonTestData.getAutomationCompositionElement();
+        var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acA1PmsClient);
 
+        var element = commonTestData.getAutomationCompositionElement();
         var nodeTemplatesMap = serviceTemplate.getToscaTopologyTemplate().getNodeTemplates();
         automationCompositionElementHandler.deploy(commonTestData.getAutomationCompositionId(), element,
                 nodeTemplatesMap.get(A1_AUTOMATION_COMPOSITION_ELEMENT).getProperties());
@@ -108,8 +108,10 @@
 
     @Test
     void test_AutomationCompositionElementUpdateWithUnhealthyA1pms() {
-        var automationCompositionElementHandler = new AutomationCompositionElementHandler(acA1PmsClient);
-        automationCompositionElementHandler.setIntermediaryApi(mock(ParticipantIntermediaryApi.class));
+        var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
+        var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acA1PmsClient);
+
         var element = commonTestData.getAutomationCompositionElement();
         when(acA1PmsClient.isPmsHealthy()).thenReturn(Boolean.FALSE);
 
@@ -121,8 +123,10 @@
 
     @Test
     void test_AutomationCompositionElementUpdateWithInvalidConfiguration() {
-        var automationCompositionElementHandler = new AutomationCompositionElementHandler(acA1PmsClient);
-        automationCompositionElementHandler.setIntermediaryApi(mock(ParticipantIntermediaryApi.class));
+        var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
+        var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acA1PmsClient);
+
         var element = commonTestData.getAutomationCompositionElement();
         assertThrows(A1PolicyServiceException.class, () -> automationCompositionElementHandler
                 .deploy(commonTestData.getAutomationCompositionId(), element, Map.of()));
@@ -130,9 +134,10 @@
 
     @Test
     void testLock() throws PfModelException {
-        var automationCompositionElementHandler = new AutomationCompositionElementHandler(acA1PmsClient);
         var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-        automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+        var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acA1PmsClient);
+
         var automationCompositionId = UUID.randomUUID();
         var elementId = UUID.randomUUID();
         automationCompositionElementHandler.lock(automationCompositionId, elementId);
@@ -143,9 +148,10 @@
 
     @Test
     void testUnlock() throws PfModelException {
-        var automationCompositionElementHandler = new AutomationCompositionElementHandler(acA1PmsClient);
         var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-        automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+        var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acA1PmsClient);
+
         var automationCompositionId = UUID.randomUUID();
         var elementId = UUID.randomUUID();
         automationCompositionElementHandler.unlock(automationCompositionId, elementId);
@@ -156,9 +162,10 @@
 
     @Test
     void testUpdate() throws PfModelException {
-        var automationCompositionElementHandler = new AutomationCompositionElementHandler(acA1PmsClient);
         var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-        automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+        var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acA1PmsClient);
+
         var automationCompositionId = UUID.randomUUID();
         var element = commonTestData.getAutomationCompositionElement();
         automationCompositionElementHandler.update(automationCompositionId, element, Map.of());
@@ -169,9 +176,10 @@
 
     @Test
     void testDelete() throws PfModelException {
-        var automationCompositionElementHandler = new AutomationCompositionElementHandler(acA1PmsClient);
         var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-        automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+        var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acA1PmsClient);
+
         var automationCompositionId = UUID.randomUUID();
         var elementId = UUID.randomUUID();
         automationCompositionElementHandler.delete(automationCompositionId, elementId);
@@ -182,9 +190,10 @@
 
     @Test
     void testPrime() throws PfModelException {
-        var automationCompositionElementHandler = new AutomationCompositionElementHandler(acA1PmsClient);
         var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-        automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+        var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acA1PmsClient);
+
         var compositionId = UUID.randomUUID();
         automationCompositionElementHandler.prime(compositionId, List.of());
 
@@ -194,9 +203,10 @@
 
     @Test
     void testDeprime() throws PfModelException {
-        var automationCompositionElementHandler = new AutomationCompositionElementHandler(acA1PmsClient);
         var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-        automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+        var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acA1PmsClient);
+
         var compositionId = UUID.randomUUID();
         automationCompositionElementHandler.deprime(compositionId);
 
diff --git a/participant/participant-impl/participant-impl-http/src/main/java/org/onap/policy/clamp/acm/participant/http/config/ParticipantConfig.java b/participant/participant-impl/participant-impl-http/src/main/java/org/onap/policy/clamp/acm/participant/http/config/ParticipantConfig.java
deleted file mode 100644
index e2b5d17..0000000
--- a/participant/participant-impl/participant-impl-http/src/main/java/org/onap/policy/clamp/acm/participant/http/config/ParticipantConfig.java
+++ /dev/null
@@ -1,43 +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.acm.participant.http.config;
-
-import org.onap.policy.clamp.acm.participant.http.main.handler.AutomationCompositionElementHandler;
-import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class ParticipantConfig {
-
-    /**
-     * Register AutomationCompositionElementListener.
-     *
-     * @param intermediaryApi the ParticipantIntermediaryApi
-     * @param acElementHandler the AutomationComposition Element Handler
-     */
-    @Autowired
-    public void registerAutomationCompositionElementListener(ParticipantIntermediaryApi intermediaryApi,
-            AutomationCompositionElementHandler acElementHandler) {
-        intermediaryApi.registerAutomationCompositionElementListener(acElementHandler);
-        acElementHandler.setIntermediaryApi(intermediaryApi);
-    }
-}
diff --git a/participant/participant-impl/participant-impl-http/src/main/java/org/onap/policy/clamp/acm/participant/http/main/handler/AutomationCompositionElementHandler.java b/participant/participant-impl/participant-impl-http/src/main/java/org/onap/policy/clamp/acm/participant/http/main/handler/AutomationCompositionElementHandler.java
index 966aee9..7118874 100644
--- a/participant/participant-impl/participant-impl-http/src/main/java/org/onap/policy/clamp/acm/participant/http/main/handler/AutomationCompositionElementHandler.java
+++ b/participant/participant-impl/participant-impl-http/src/main/java/org/onap/policy/clamp/acm/participant/http/main/handler/AutomationCompositionElementHandler.java
@@ -34,7 +34,6 @@
 import javax.validation.Validation;
 import javax.ws.rs.core.Response.Status;
 import lombok.RequiredArgsConstructor;
-import lombok.Setter;
 import org.apache.commons.lang3.tuple.Pair;
 import org.onap.policy.clamp.acm.participant.http.main.models.ConfigRequest;
 import org.onap.policy.clamp.acm.participant.http.main.webclient.AcHttpClient;
@@ -70,8 +69,7 @@
 
     private final ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
 
-    @Setter
-    private ParticipantIntermediaryApi intermediaryApi;
+    private final ParticipantIntermediaryApi intermediaryApi;
 
     private final AcHttpClient acHttpClient;
 
diff --git a/participant/participant-impl/participant-impl-http/src/test/java/org/onap/policy/clamp/acm/participant/http/handler/AcElementHandlerTest.java b/participant/participant-impl/participant-impl-http/src/test/java/org/onap/policy/clamp/acm/participant/http/handler/AcElementHandlerTest.java
index 4dca5a5..12b8ee4 100644
--- a/participant/participant-impl/participant-impl-http/src/test/java/org/onap/policy/clamp/acm/participant/http/handler/AcElementHandlerTest.java
+++ b/participant/participant-impl/participant-impl-http/src/test/java/org/onap/policy/clamp/acm/participant/http/handler/AcElementHandlerTest.java
@@ -54,11 +54,10 @@
         var instanceId = commonTestData.getAutomationCompositionId();
         var element = commonTestData.getAutomationCompositionElement();
         var acElementId = element.getId();
+        var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
 
         try (var automationCompositionElementHandler =
-                new AutomationCompositionElementHandler(mock(AcHttpClient.class))) {
-            var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-            automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+                new AutomationCompositionElementHandler(participantIntermediaryApi, mock(AcHttpClient.class))) {
             automationCompositionElementHandler.undeploy(instanceId, acElementId);
             verify(participantIntermediaryApi).updateAutomationCompositionElementState(instanceId, acElementId,
                     DeployState.UNDEPLOYED, null, StateChangeResult.NO_ERROR, "");
@@ -72,8 +71,8 @@
         var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
 
         try (var automationCompositionElementHandler =
-                new AutomationCompositionElementHandler(mock(AcHttpClient.class))) {
-            automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+                new AutomationCompositionElementHandler(participantIntermediaryApi, mock(AcHttpClient.class))) {
+
             Map<String, Object> map = new HashMap<>();
             automationCompositionElementHandler.deploy(instanceId, element, map);
             verify(participantIntermediaryApi).updateAutomationCompositionElementState(instanceId, element.getId(),
@@ -89,8 +88,8 @@
         var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
 
         try (var automationCompositionElementHandler =
-                new AutomationCompositionElementHandler(mock(AcHttpClient.class))) {
-            automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+                new AutomationCompositionElementHandler(participantIntermediaryApi, mock(AcHttpClient.class))) {
+
             Map<String, Object> map = new HashMap<>();
             map.put("httpHeaders", 1);
             automationCompositionElementHandler.deploy(instanceId, element, map);
@@ -108,9 +107,11 @@
         map.putAll(element.getProperties());
         var instanceId = commonTestData.getAutomationCompositionId();
         var acHttpClient = mock(AcHttpClient.class);
-        try (var automationCompositionElementHandler = new AutomationCompositionElementHandler(acHttpClient)) {
-            var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-            automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+        var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
+
+        try (var automationCompositionElementHandler =
+                new AutomationCompositionElementHandler(participantIntermediaryApi, acHttpClient)) {
+
             automationCompositionElementHandler.deploy(instanceId, element, map);
             verify(acHttpClient).run(any(ConfigRequest.class), anyMap());
             verify(participantIntermediaryApi).updateAutomationCompositionElementState(instanceId, element.getId(),
@@ -123,11 +124,11 @@
         var instanceId = commonTestData.getAutomationCompositionId();
         var element = commonTestData.getAutomationCompositionElement();
         var acElementId = element.getId();
+        var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
 
         try (var automationCompositionElementHandler =
-                new AutomationCompositionElementHandler(mock(AcHttpClient.class))) {
-            var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-            automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+                new AutomationCompositionElementHandler(participantIntermediaryApi, mock(AcHttpClient.class))) {
+
             automationCompositionElementHandler.update(instanceId, element, Map.of());
             verify(participantIntermediaryApi).updateAutomationCompositionElementState(instanceId, acElementId,
                     DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Update not supported");
@@ -138,11 +139,11 @@
     void testLock() throws Exception {
         var instanceId = commonTestData.getAutomationCompositionId();
         var acElementId = UUID.randomUUID();
+        var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
 
         try (var automationCompositionElementHandler =
-                new AutomationCompositionElementHandler(mock(AcHttpClient.class))) {
-            var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-            automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+                new AutomationCompositionElementHandler(participantIntermediaryApi, mock(AcHttpClient.class))) {
+
             automationCompositionElementHandler.lock(instanceId, acElementId);
             verify(participantIntermediaryApi).updateAutomationCompositionElementState(instanceId, acElementId, null,
                     LockState.LOCKED, StateChangeResult.NO_ERROR, "Locked");
@@ -153,11 +154,11 @@
     void testUnlock() throws Exception {
         var instanceId = commonTestData.getAutomationCompositionId();
         var acElementId = UUID.randomUUID();
+        var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
 
         try (var automationCompositionElementHandler =
-                new AutomationCompositionElementHandler(mock(AcHttpClient.class))) {
-            var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-            automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+                new AutomationCompositionElementHandler(participantIntermediaryApi, mock(AcHttpClient.class))) {
+
             automationCompositionElementHandler.unlock(instanceId, acElementId);
             verify(participantIntermediaryApi).updateAutomationCompositionElementState(instanceId, acElementId, null,
                     LockState.UNLOCKED, StateChangeResult.NO_ERROR, "Unlocked");
@@ -168,11 +169,11 @@
     void testDelete() throws Exception {
         var instanceId = commonTestData.getAutomationCompositionId();
         var acElementId = UUID.randomUUID();
+        var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
 
         try (var automationCompositionElementHandler =
-                new AutomationCompositionElementHandler(mock(AcHttpClient.class))) {
-            var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-            automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+                new AutomationCompositionElementHandler(participantIntermediaryApi, mock(AcHttpClient.class))) {
+
             automationCompositionElementHandler.delete(instanceId, acElementId);
             verify(participantIntermediaryApi).updateAutomationCompositionElementState(instanceId, acElementId,
                     DeployState.DELETED, null, StateChangeResult.NO_ERROR, "Deleted");
@@ -182,11 +183,10 @@
     @Test
     void testPrime() throws Exception {
         var compositionId = UUID.randomUUID();
+        var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
 
         try (var automationCompositionElementHandler =
-                new AutomationCompositionElementHandler(mock(AcHttpClient.class))) {
-            var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-            automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+                new AutomationCompositionElementHandler(participantIntermediaryApi, mock(AcHttpClient.class))) {
 
             automationCompositionElementHandler.prime(compositionId, List.of());
             verify(participantIntermediaryApi).updateCompositionState(compositionId, AcTypeState.PRIMED,
@@ -197,11 +197,10 @@
     @Test
     void testDeprime() throws Exception {
         var compositionId = UUID.randomUUID();
+        var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
 
         try (var automationCompositionElementHandler =
-                new AutomationCompositionElementHandler(mock(AcHttpClient.class))) {
-            var participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
-            automationCompositionElementHandler.setIntermediaryApi(participantIntermediaryApi);
+                new AutomationCompositionElementHandler(participantIntermediaryApi, mock(AcHttpClient.class))) {
 
             automationCompositionElementHandler.deprime(compositionId);
             verify(participantIntermediaryApi).updateCompositionState(compositionId, AcTypeState.COMMISSIONED,
diff --git a/participant/participant-impl/participant-impl-kserve/src/main/java/org/onap/policy/clamp/acm/participant/kserve/config/ParticipantConfig.java b/participant/participant-impl/participant-impl-kserve/src/main/java/org/onap/policy/clamp/acm/participant/kserve/config/ParticipantConfig.java
deleted file mode 100755
index 1a67134..0000000
--- a/participant/participant-impl/participant-impl-kserve/src/main/java/org/onap/policy/clamp/acm/participant/kserve/config/ParticipantConfig.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2023 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.acm.participant.kserve.config;
-
-import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
-import org.onap.policy.clamp.acm.participant.kserve.handler.AutomationCompositionElementHandler;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class ParticipantConfig {
-
-    /**
-     * Register AutomationCompositionElementListener.
-     *
-     * @param intermediaryApi the ParticipantIntermediaryApi
-     * @param acElementHandler the AutomationComposition Element Handler
-     */
-    @Autowired
-    public void registerAutomationCompositionElementListener(ParticipantIntermediaryApi intermediaryApi,
-            AutomationCompositionElementHandler acElementHandler) {
-        intermediaryApi.registerAutomationCompositionElementListener(acElementHandler);
-        acElementHandler.setIntermediaryApi(intermediaryApi);
-    }
-}
diff --git a/participant/participant-impl/participant-impl-kserve/src/main/java/org/onap/policy/clamp/acm/participant/kserve/handler/AutomationCompositionElementHandler.java b/participant/participant-impl/participant-impl-kserve/src/main/java/org/onap/policy/clamp/acm/participant/kserve/handler/AutomationCompositionElementHandler.java
index 4d55657..ed02314 100755
--- a/participant/participant-impl/participant-impl-kserve/src/main/java/org/onap/policy/clamp/acm/participant/kserve/handler/AutomationCompositionElementHandler.java
+++ b/participant/participant-impl/participant-impl-kserve/src/main/java/org/onap/policy/clamp/acm/participant/kserve/handler/AutomationCompositionElementHandler.java
@@ -36,7 +36,6 @@
 import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import lombok.Setter;
 import org.apache.http.HttpStatus;
 import org.onap.policy.clamp.acm.participant.intermediary.api.AutomationCompositionElementListener;
 import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
@@ -72,8 +71,7 @@
 
     private ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
 
-    @Setter
-    private ParticipantIntermediaryApi intermediaryApi;
+    private final ParticipantIntermediaryApi intermediaryApi;
 
     private final KserveClient kserveClient;
 
diff --git a/participant/participant-impl/participant-impl-kserve/src/test/java/org/onap/policy/clamp/acm/participant/kserve/handler/AcElementHandlerTest.java b/participant/participant-impl/participant-impl-kserve/src/test/java/org/onap/policy/clamp/acm/participant/kserve/handler/AcElementHandlerTest.java
index 38db1b8..6112488 100755
--- a/participant/participant-impl/participant-impl-kserve/src/test/java/org/onap/policy/clamp/acm/participant/kserve/handler/AcElementHandlerTest.java
+++ b/participant/participant-impl/participant-impl-kserve/src/test/java/org/onap/policy/clamp/acm/participant/kserve/handler/AcElementHandlerTest.java
@@ -58,13 +58,12 @@
 
     private final KserveClient kserveClient = mock(KserveClient.class);
 
+    private ParticipantIntermediaryApi participantIntermediaryApi = mock(ParticipantIntermediaryApi.class);
+
     @InjectMocks
     @Spy
     private AutomationCompositionElementHandler automationCompositionElementHandler =
-            new AutomationCompositionElementHandler(kserveClient);
-
-    @Mock
-    private ParticipantIntermediaryApi participantIntermediaryApi;
+            new AutomationCompositionElementHandler(participantIntermediaryApi, kserveClient);
 
     @Mock
     private ExecutorService executor;
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/configurations/ParticipantIntermediaryConfig.java b/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/configurations/ParticipantIntermediaryConfig.java
deleted file mode 100644
index 878b43f..0000000
--- a/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/configurations/ParticipantIntermediaryConfig.java
+++ /dev/null
@@ -1,43 +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.acm.participant.kubernetes.configurations;
-
-import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
-import org.onap.policy.clamp.acm.participant.kubernetes.handler.AutomationCompositionElementHandler;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class ParticipantIntermediaryConfig {
-
-    /**
-     * Register AutomationCompositionElementListener.
-     *
-     * @param intermediaryApi the ParticipantIntermediaryApi
-     * @param acElementHandler the AutomationComposition Element Handler
-     */
-    @Autowired
-    public void registerAutomationCompositionElementListener(ParticipantIntermediaryApi intermediaryApi,
-            AutomationCompositionElementHandler acElementHandler) {
-        intermediaryApi.registerAutomationCompositionElementListener(acElementHandler);
-        acElementHandler.setIntermediaryApi(intermediaryApi);
-    }
-}
diff --git a/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/handler/AutomationCompositionElementHandler.java b/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/handler/AutomationCompositionElementHandler.java
index 95ff1e8..7050dfd 100644
--- a/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/handler/AutomationCompositionElementHandler.java
+++ b/participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/handler/AutomationCompositionElementHandler.java
@@ -33,7 +33,6 @@
 import javax.ws.rs.core.Response;
 import lombok.AccessLevel;
 import lombok.Getter;
-import lombok.Setter;
 import org.onap.policy.clamp.acm.participant.intermediary.api.AutomationCompositionElementListener;
 import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
 import org.onap.policy.clamp.acm.participant.kubernetes.exception.ServiceException;
@@ -72,7 +71,7 @@
     @Autowired
     private ChartService chartService;
 
-    @Setter
+    @Autowired
     private ParticipantIntermediaryApi intermediaryApi;
 
     // Map of acElement Id and installed Helm charts
diff --git a/participant/participant-impl/participant-impl-policy/src/main/java/org/onap/policy/clamp/acm/participant/policy/config/ParticipantConfig.java b/participant/participant-impl/participant-impl-policy/src/main/java/org/onap/policy/clamp/acm/participant/policy/config/ParticipantConfig.java
deleted file mode 100644
index 7f9ad24..0000000
--- a/participant/participant-impl/participant-impl-policy/src/main/java/org/onap/policy/clamp/acm/participant/policy/config/ParticipantConfig.java
+++ /dev/null
@@ -1,43 +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.acm.participant.policy.config;
-
-import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
-import org.onap.policy.clamp.acm.participant.policy.main.handler.AutomationCompositionElementHandler;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class ParticipantConfig {
-
-    /**
-     * Register AutomationCompositionElementListener.
-     *
-     * @param intermediaryApi the ParticipantIntermediaryApi
-     * @param acElementHandler the Aotumation Composition Element Handler
-     */
-    @Autowired
-    public void registerAutomationCompositionElementListener(ParticipantIntermediaryApi intermediaryApi,
-            AutomationCompositionElementHandler acElementHandler) {
-        intermediaryApi.registerAutomationCompositionElementListener(acElementHandler);
-        acElementHandler.setIntermediaryApi(intermediaryApi);
-    }
-}
diff --git a/participant/participant-impl/participant-impl-policy/src/main/java/org/onap/policy/clamp/acm/participant/policy/main/handler/AutomationCompositionElementHandler.java b/participant/participant-impl/participant-impl-policy/src/main/java/org/onap/policy/clamp/acm/participant/policy/main/handler/AutomationCompositionElementHandler.java
index 0b8ffe2..2962214 100644
--- a/participant/participant-impl/participant-impl-policy/src/main/java/org/onap/policy/clamp/acm/participant/policy/main/handler/AutomationCompositionElementHandler.java
+++ b/participant/participant-impl/participant-impl-policy/src/main/java/org/onap/policy/clamp/acm/participant/policy/main/handler/AutomationCompositionElementHandler.java
@@ -29,7 +29,6 @@
 import java.util.concurrent.ConcurrentHashMap;
 import javax.ws.rs.core.Response.Status;
 import lombok.RequiredArgsConstructor;
-import lombok.Setter;
 import org.apache.http.HttpStatus;
 import org.onap.policy.clamp.acm.participant.intermediary.api.AutomationCompositionElementListener;
 import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
@@ -62,9 +61,7 @@
 
     private final PolicyApiHttpClient apiHttpClient;
     private final PolicyPapHttpClient papHttpClient;
-
-    @Setter
-    private ParticipantIntermediaryApi intermediaryApi;
+    private final ParticipantIntermediaryApi intermediaryApi;
 
     /**
      * Callback method to handle a automation composition element state change.
diff --git a/participant/participant-impl/participant-impl-policy/src/test/java/org/onap/policy/clamp/acm/participant/policy/main/handler/AutomationCompositionElementHandlerTest.java b/participant/participant-impl/participant-impl-policy/src/test/java/org/onap/policy/clamp/acm/participant/policy/main/handler/AutomationCompositionElementHandlerTest.java
index ec55c17..84ddeed 100644
--- a/participant/participant-impl/participant-impl-policy/src/test/java/org/onap/policy/clamp/acm/participant/policy/main/handler/AutomationCompositionElementHandlerTest.java
+++ b/participant/participant-impl/participant-impl-policy/src/test/java/org/onap/policy/clamp/acm/participant/policy/main/handler/AutomationCompositionElementHandlerTest.java
@@ -57,10 +57,9 @@
 
     @Test
     void testHandlerUndeployNoPolicy() throws PfModelException {
-        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
-                mock(PolicyPapHttpClient.class));
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
+                mock(PolicyPapHttpClient.class), intermediaryApi);
 
         handler.undeploy(AC_ID, automationCompositionElementId);
         verify(intermediaryApi).updateAutomationCompositionElementState(AC_ID, automationCompositionElementId,
@@ -90,9 +89,8 @@
         var pap = mock(PolicyPapHttpClient.class);
         doReturn(Response.accepted().build()).when(pap).handlePolicyDeployOrUndeploy(any(), any(), any());
 
-        var handler = new AutomationCompositionElementHandler(api, pap);
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(api, pap, intermediaryApi);
 
         handler.deploy(AC_ID, getTestingAcElement(), Map.of());
         verify(intermediaryApi).updateAutomationCompositionElementState(AC_ID, automationCompositionElementId,
@@ -105,10 +103,9 @@
 
     @Test
     void testDeployNoPolicy() throws PfModelException {
-        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
-                mock(PolicyPapHttpClient.class));
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
+                mock(PolicyPapHttpClient.class), intermediaryApi);
 
         var acElement = getTestingAcElement();
         acElement.getToscaServiceTemplateFragment().setToscaTopologyTemplate(null);
@@ -126,9 +123,9 @@
         var pap = mock(PolicyPapHttpClient.class);
         doReturn(Response.accepted().build()).when(pap).handlePolicyDeployOrUndeploy(any(), any(), any());
 
-        var handler = new AutomationCompositionElementHandler(api, pap);
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(api, pap, intermediaryApi);
+
         var element = getTestingAcElement();
 
         // Mock failure in policy type creation
@@ -147,9 +144,9 @@
         var pap = mock(PolicyPapHttpClient.class);
         doReturn(Response.serverError().build()).when(pap).handlePolicyDeployOrUndeploy(any(), any(), any());
 
-        var handler = new AutomationCompositionElementHandler(api, pap);
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(api, pap, intermediaryApi);
+
         var element = getTestingAcElement();
         assertThatThrownBy(() -> handler.deploy(AC_ID, element, Map.of()))
                 .hasMessageMatching("Deploy of Policy failed.");
@@ -157,10 +154,9 @@
 
     @Test
     void testUpdate() throws Exception {
-        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
-                mock(PolicyPapHttpClient.class));
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
+                mock(PolicyPapHttpClient.class), intermediaryApi);
 
         var acElement = getTestingAcElement();
         acElement.getToscaServiceTemplateFragment().setToscaTopologyTemplate(null);
@@ -171,10 +167,9 @@
 
     @Test
     void testLock() throws Exception {
-        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
-                mock(PolicyPapHttpClient.class));
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
+                mock(PolicyPapHttpClient.class), intermediaryApi);
 
         handler.lock(AC_ID, automationCompositionElementId);
         verify(intermediaryApi).updateAutomationCompositionElementState(AC_ID, automationCompositionElementId, null,
@@ -183,10 +178,9 @@
 
     @Test
     void testUnlock() throws Exception {
-        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
-                mock(PolicyPapHttpClient.class));
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
+                mock(PolicyPapHttpClient.class), intermediaryApi);
 
         handler.unlock(AC_ID, automationCompositionElementId);
         verify(intermediaryApi).updateAutomationCompositionElementState(AC_ID, automationCompositionElementId, null,
@@ -195,10 +189,9 @@
 
     @Test
     void testDelete() throws Exception {
-        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
-                mock(PolicyPapHttpClient.class));
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
+                mock(PolicyPapHttpClient.class), intermediaryApi);
 
         handler.delete(AC_ID, automationCompositionElementId);
         verify(intermediaryApi).updateAutomationCompositionElementState(AC_ID, automationCompositionElementId,
@@ -207,10 +200,9 @@
 
     @Test
     void testPrime() throws Exception {
-        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
-                mock(PolicyPapHttpClient.class));
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
+                mock(PolicyPapHttpClient.class), intermediaryApi);
 
         handler.prime(AC_ID, List.of());
         verify(intermediaryApi).updateCompositionState(AC_ID, AcTypeState.PRIMED, StateChangeResult.NO_ERROR, "Primed");
@@ -218,10 +210,9 @@
 
     @Test
     void testDeprime() throws Exception {
-        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
-                mock(PolicyPapHttpClient.class));
         var intermediaryApi = mock(ParticipantIntermediaryApi.class);
-        handler.setIntermediaryApi(intermediaryApi);
+        var handler = new AutomationCompositionElementHandler(mock(PolicyApiHttpClient.class),
+                mock(PolicyPapHttpClient.class), intermediaryApi);
 
         handler.deprime(AC_ID);
         verify(intermediaryApi).updateCompositionState(AC_ID, AcTypeState.COMMISSIONED, StateChangeResult.NO_ERROR,
diff --git a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/api/ParticipantIntermediaryApi.java b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/api/ParticipantIntermediaryApi.java
index 1677f54..c75750c 100644
--- a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/api/ParticipantIntermediaryApi.java
+++ b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/api/ParticipantIntermediaryApi.java
@@ -35,14 +35,6 @@
 public interface ParticipantIntermediaryApi {
 
     /**
-     * Register a listener for automation composition elements that are mediated by the intermediary.
-     *
-     * @param automationCompositionElementListener The automation composition element listener to register
-     */
-    void registerAutomationCompositionElementListener(
-            AutomationCompositionElementListener automationCompositionElementListener);
-
-    /**
      * Update the state of a automation composition element.
      *
      * @param automationCompositionId the ID of the automation composition to update the state on
diff --git a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/ParticipantIntermediaryApiImpl.java b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/ParticipantIntermediaryApiImpl.java
index 14a6531..5925132 100644
--- a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/ParticipantIntermediaryApiImpl.java
+++ b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/ParticipantIntermediaryApiImpl.java
@@ -23,9 +23,10 @@
 
 import java.util.Map;
 import java.util.UUID;
-import org.onap.policy.clamp.acm.participant.intermediary.api.AutomationCompositionElementListener;
+import lombok.RequiredArgsConstructor;
 import org.onap.policy.clamp.acm.participant.intermediary.api.ParticipantIntermediaryApi;
-import org.onap.policy.clamp.acm.participant.intermediary.handler.AutomationCompositionHandler;
+import org.onap.policy.clamp.acm.participant.intermediary.handler.AutomationCompositionOutHandler;
+import org.onap.policy.clamp.acm.participant.intermediary.handler.CacheProvider;
 import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
 import org.onap.policy.clamp.models.acm.concepts.AutomationComposition;
 import org.onap.policy.clamp.models.acm.concepts.DeployState;
@@ -38,31 +39,19 @@
  * This class is api implementation used by participant intermediary.
  */
 @Component
+@RequiredArgsConstructor
 public class ParticipantIntermediaryApiImpl implements ParticipantIntermediaryApi {
 
     // The handler for the automationComposition intermediary
-    private final AutomationCompositionHandler automationCompositionHandler;
+    private final AutomationCompositionOutHandler automationCompositionHandler;
+    private final CacheProvider cacheProvider;
 
-    /**
-     * Constructor.
-     *
-     * @param automationCompositionHandler AutomationCompositionHandler
-     */
-    public ParticipantIntermediaryApiImpl(AutomationCompositionHandler automationCompositionHandler) {
-        this.automationCompositionHandler = automationCompositionHandler;
-    }
 
     @Override
-    public void registerAutomationCompositionElementListener(
-            AutomationCompositionElementListener automationCompositionElementListener) {
-        automationCompositionHandler.registerAutomationCompositionElementListener(automationCompositionElementListener);
-    }
-
-    @Override
-    public void updateAutomationCompositionElementState(UUID automationCompositionId, UUID id, DeployState deployState,
+    public void updateAutomationCompositionElementState(UUID automationCompositionId, UUID id, DeployState newState,
             LockState lockState, StateChangeResult stateChangeResult, String message) {
-        automationCompositionHandler.updateAutomationCompositionElementState(automationCompositionId, id, deployState,
-                lockState, message);
+        automationCompositionHandler.updateAutomationCompositionElementState(automationCompositionId, id, newState,
+                lockState, stateChangeResult, message);
     }
 
     @Override
@@ -74,12 +63,12 @@
 
     @Override
     public Map<UUID, AutomationComposition> getAutomationCompositions() {
-        return PfUtils.mapMap(automationCompositionHandler.getAutomationCompositionMap(), AutomationComposition::new);
+        return PfUtils.mapMap(cacheProvider.getAutomationCompositions(), AutomationComposition::new);
     }
 
     @Override
     public void updateCompositionState(UUID compositionId, AcTypeState state, StateChangeResult stateChangeResult,
             String message) {
-        // Auto-generated method stub
+        // TODO Auto-generated method stub
     }
 }
diff --git a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandler.java b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandler.java
index 0456777..0fcd5ec 100644
--- a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandler.java
+++ b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandler.java
@@ -21,41 +21,24 @@
 
 package org.onap.policy.clamp.acm.participant.intermediary.handler;
 
-import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.LinkedHashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.UUID;
-import lombok.Getter;
 import org.onap.policy.clamp.acm.participant.intermediary.api.AutomationCompositionElementListener;
 import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantMessagePublisher;
-import org.onap.policy.clamp.acm.participant.intermediary.parameters.ParticipantParameters;
 import org.onap.policy.clamp.models.acm.concepts.AcElementDeploy;
-import org.onap.policy.clamp.models.acm.concepts.AcElementDeployAck;
 import org.onap.policy.clamp.models.acm.concepts.AutomationComposition;
-import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElement;
-import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition;
-import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementInfo;
-import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionInfo;
-import org.onap.policy.clamp.models.acm.concepts.DeployState;
-import org.onap.policy.clamp.models.acm.concepts.LockState;
 import org.onap.policy.clamp.models.acm.concepts.ParticipantDeploy;
-import org.onap.policy.clamp.models.acm.concepts.ParticipantState;
-import org.onap.policy.clamp.models.acm.concepts.ParticipantSupportedElementType;
 import org.onap.policy.clamp.models.acm.concepts.ParticipantUtils;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionDeploy;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionDeployAck;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionStateChange;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantMessageType;
-import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantStatus;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.PropertiesUpdate;
 import org.onap.policy.clamp.models.acm.messages.rest.instantiation.DeployOrder;
 import org.onap.policy.clamp.models.acm.messages.rest.instantiation.LockOrder;
 import org.onap.policy.clamp.models.acm.persistence.provider.AcInstanceStateResolver;
 import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -67,125 +50,44 @@
 public class AutomationCompositionHandler {
     private static final Logger LOGGER = LoggerFactory.getLogger(AutomationCompositionHandler.class);
 
-    private final UUID participantId;
+    private final CacheProvider cacheProvider;
     private final ParticipantMessagePublisher publisher;
+    private final AutomationCompositionElementListener listener;
     private final AcInstanceStateResolver acInstanceStateResolver;
-    private final List<ParticipantSupportedElementType> supportedAcElementTypes;
-    private final List<AutomationCompositionElementListener> listeners = new ArrayList<>();
-
-    @Getter
-    private final Map<UUID, AutomationComposition> automationCompositionMap = new LinkedHashMap<>();
 
     /**
      * Constructor, set the participant ID and messageSender.
      *
-     * @param parameters the parameters of the participant
+     * @param cacheProvider the Cache Provider
      * @param publisher the ParticipantMessage Publisher
+     * @param listener the ThreadHandler Listener
      */
-    public AutomationCompositionHandler(ParticipantParameters parameters, ParticipantMessagePublisher publisher) {
-        this.participantId = parameters.getIntermediaryParameters().getParticipantId();
+    public AutomationCompositionHandler(CacheProvider cacheProvider, ParticipantMessagePublisher publisher,
+            AutomationCompositionElementListener listener) {
+        this.cacheProvider = cacheProvider;
         this.publisher = publisher;
+        this.listener = listener;
         this.acInstanceStateResolver = new AcInstanceStateResolver();
-        this.supportedAcElementTypes = parameters.getIntermediaryParameters().getParticipantSupportedElementTypes();
-    }
-
-    public void registerAutomationCompositionElementListener(AutomationCompositionElementListener listener) {
-        listeners.add(listener);
-    }
-
-    /**
-     * Handle a automation composition element state change message.
-     *
-     * @param automationCompositionId the automationComposition Id
-     * @param id the automationComposition UUID
-     * @param deployState the DeployState state
-     * @param lockState the LockState state
-     */
-    public void updateAutomationCompositionElementState(UUID automationCompositionId, UUID id, DeployState deployState,
-            LockState lockState, String message) {
-
-        if (automationCompositionId == null || id == null) {
-            LOGGER.error("Cannot update Automation composition element state, id is null");
-            return;
-        }
-
-        if ((deployState != null && lockState != null) || (deployState == null && lockState == null)) {
-            LOGGER.error("state error {} and {} cannot be handled", deployState, lockState);
-            return;
-        }
-
-        var automationComposition = automationCompositionMap.get(automationCompositionId);
-        if (automationComposition == null) {
-            LOGGER.error("Cannot update Automation composition element state, Automation composition id {} not present",
-                    automationComposition);
-            return;
-        }
-
-        var element = automationComposition.getElements().get(id);
-        if (element == null) {
-            var msg = "Cannot update Automation composition element state, AC Element id {} not present";
-            LOGGER.error(msg, automationComposition);
-            return;
-        }
-
-        if (deployState != null) {
-            element.setDeployState(deployState);
-            element.setLockState(
-                    DeployState.DEPLOYED.equals(element.getDeployState()) ? LockState.LOCKED : LockState.NONE);
-            var checkOpt = automationComposition.getElements().values().stream()
-                    .filter(acElement -> !deployState.equals(acElement.getDeployState())).findAny();
-            if (checkOpt.isEmpty()) {
-                automationComposition.setDeployState(deployState);
-                automationComposition.setLockState(element.getLockState());
-
-                if (DeployState.DELETED.equals(deployState)) {
-                    automationCompositionMap.remove(automationComposition.getInstanceId());
-                }
-            }
-        }
-        if (lockState != null) {
-            element.setLockState(lockState);
-            var checkOpt = automationComposition.getElements().values().stream()
-                    .filter(acElement -> !lockState.equals(acElement.getLockState())).findAny();
-            if (checkOpt.isEmpty()) {
-                automationComposition.setLockState(lockState);
-            }
-        }
-
-        var automationCompositionStateChangeAck =
-                new AutomationCompositionDeployAck(ParticipantMessageType.AUTOMATION_COMPOSITION_STATECHANGE_ACK);
-        automationCompositionStateChangeAck.setParticipantId(participantId);
-        automationCompositionStateChangeAck.setMessage(message);
-        automationCompositionStateChangeAck.setAutomationCompositionId(automationCompositionId);
-        automationCompositionStateChangeAck.getAutomationCompositionResultMap().put(element.getId(),
-                new AcElementDeployAck(element.getDeployState(), element.getLockState(), element.getOperationalState(),
-                        element.getUseState(), element.getOutProperties(), true,
-                        "Automation composition element {} state changed to {}\", id, newState)"));
-        LOGGER.debug("Automation composition element {} state changed to {}", id, deployState);
-        automationCompositionStateChangeAck.setResult(true);
-        publisher.sendAutomationCompositionAck(automationCompositionStateChangeAck);
     }
 
     /**
      * Handle a automation composition state change message.
      *
      * @param stateChangeMsg the state change message
-     * @param acElementDefinitions the list of AutomationCompositionElementDefinition
      */
-    public void handleAutomationCompositionStateChange(AutomationCompositionStateChange stateChangeMsg,
-            List<AutomationCompositionElementDefinition> acElementDefinitions) {
+    public void handleAutomationCompositionStateChange(AutomationCompositionStateChange stateChangeMsg) {
         if (stateChangeMsg.getAutomationCompositionId() == null) {
             return;
         }
 
-        var automationComposition = automationCompositionMap.get(stateChangeMsg.getAutomationCompositionId());
+        var automationComposition = cacheProvider.getAutomationComposition(stateChangeMsg.getAutomationCompositionId());
 
         if (automationComposition == null) {
             var automationCompositionAck =
                     new AutomationCompositionDeployAck(ParticipantMessageType.AUTOMATION_COMPOSITION_STATECHANGE_ACK);
-            automationCompositionAck.setParticipantId(participantId);
+            automationCompositionAck.setParticipantId(cacheProvider.getParticipantId());
             automationCompositionAck.setMessage("Automation composition " + stateChangeMsg.getAutomationCompositionId()
-                    + " does not use this participant " + participantId);
+                    + " does not use this participant " + cacheProvider.getParticipantId());
             automationCompositionAck.setResult(false);
             automationCompositionAck.setResponseTo(stateChangeMsg.getMessageId());
             automationCompositionAck.setAutomationCompositionId(stateChangeMsg.getAutomationCompositionId());
@@ -204,17 +106,17 @@
 
         if (DeployOrder.NONE.equals(stateChangeMsg.getDeployOrderedState())) {
             handleLockOrderState(automationComposition, stateChangeMsg.getLockOrderedState(),
-                    stateChangeMsg.getStartPhase(), acElementDefinitions);
+                    stateChangeMsg.getStartPhase());
         } else {
             handleDeployOrderState(automationComposition, stateChangeMsg.getDeployOrderedState(),
-                    stateChangeMsg.getStartPhase(), acElementDefinitions);
+                    stateChangeMsg.getStartPhase());
         }
     }
 
     private boolean checkConsistantOrderState(AutomationComposition automationComposition, DeployOrder deployOrder,
             LockOrder lockOrder) {
         if (DeployOrder.UPDATE.equals(deployOrder)) {
-            return true;
+            return false;
         }
         return acInstanceStateResolver.resolve(deployOrder, lockOrder, automationComposition.getDeployState(),
                 automationComposition.getLockState(), automationComposition.getStateChangeResult()) != null;
@@ -226,21 +128,20 @@
      * @param automationComposition participant response
      * @param orderedState automation composition ordered state
      * @param startPhaseMsg startPhase from message
-     * @param acElementDefinitions the list of AutomationCompositionElementDefinition
      */
     private void handleDeployOrderState(final AutomationComposition automationComposition, DeployOrder orderedState,
-            Integer startPhaseMsg, List<AutomationCompositionElementDefinition> acElementDefinitions) {
+            Integer startPhaseMsg) {
 
         switch (orderedState) {
             case UNDEPLOY:
-                handleUndeployState(automationComposition, startPhaseMsg, acElementDefinitions);
+                handleUndeployState(automationComposition, startPhaseMsg);
                 break;
             case DELETE:
-                handleDeleteState(automationComposition, startPhaseMsg, acElementDefinitions);
+                handleDeleteState(automationComposition, startPhaseMsg);
                 break;
 
             default:
-                LOGGER.debug("StateChange message has no state, state is null {}", automationComposition.getKey());
+                LOGGER.error("StateChange message has no state, state is null {}", automationComposition.getKey());
                 break;
         }
     }
@@ -251,20 +152,19 @@
      * @param automationComposition participant response
      * @param orderedState automation composition ordered state
      * @param startPhaseMsg startPhase from message
-     * @param acElementDefinitions the list of AutomationCompositionElementDefinition
      */
     private void handleLockOrderState(final AutomationComposition automationComposition, LockOrder orderedState,
-            Integer startPhaseMsg, List<AutomationCompositionElementDefinition> acElementDefinitions) {
+            Integer startPhaseMsg) {
 
         switch (orderedState) {
             case LOCK:
-                handleLockState(automationComposition, startPhaseMsg, acElementDefinitions);
+                handleLockState(automationComposition, startPhaseMsg);
                 break;
             case UNLOCK:
-                handleUnlockState(automationComposition, startPhaseMsg, acElementDefinitions);
+                handleUnlockState(automationComposition, startPhaseMsg);
                 break;
             default:
-                LOGGER.debug("StateChange message has no state, state is null {}", automationComposition.getKey());
+                LOGGER.error("StateChange message has no state, state is null {}", automationComposition.getKey());
                 break;
         }
     }
@@ -273,10 +173,8 @@
      * Handle a automation composition properties update message.
      *
      * @param updateMsg the properties update message
-     * @param acElementDefinitions the list of AutomationCompositionElementDefinition
      */
-    public void handleAcPropertyUpdate(PropertiesUpdate updateMsg,
-            List<AutomationCompositionElementDefinition> acElementDefinitions) {
+    public void handleAcPropertyUpdate(PropertiesUpdate updateMsg) {
 
         if (updateMsg.getParticipantUpdatesList().isEmpty()) {
             LOGGER.warn("No AutomationCompositionElement updates in message {}",
@@ -285,12 +183,11 @@
         }
 
         for (var participantDeploy : updateMsg.getParticipantUpdatesList()) {
-            if (participantId.equals(participantDeploy.getParticipantId())) {
+            if (cacheProvider.getParticipantId().equals(participantDeploy.getParticipantId())) {
 
-                initializeDeploy(updateMsg.getMessageId(), updateMsg.getAutomationCompositionId(), participantDeploy,
-                        DeployState.UPDATING);
+                updateExistingElementsOnThisParticipant(updateMsg.getAutomationCompositionId(), participantDeploy);
 
-                callParticipantUpdateProperty(participantDeploy.getAcElementList(), acElementDefinitions,
+                callParticipantUpdateProperty(participantDeploy.getAcElementList(),
                         updateMsg.getAutomationCompositionId());
             }
         }
@@ -299,128 +196,60 @@
     /**
      * Handle a automation composition Deploy message.
      *
-     * @param updateMsg the Deploy message
-     * @param acElementDefinitions the list of AutomationCompositionElementDefinition
+     * @param deployMsg the Deploy message
      */
-    public void handleAutomationCompositionDeploy(AutomationCompositionDeploy updateMsg,
-            List<AutomationCompositionElementDefinition> acElementDefinitions) {
+    public void handleAutomationCompositionDeploy(AutomationCompositionDeploy deployMsg) {
 
-        if (updateMsg.getParticipantUpdatesList().isEmpty()) {
-            LOGGER.warn("No AutomationCompositionElement updates in message {}",
-                    updateMsg.getAutomationCompositionId());
+        if (deployMsg.getParticipantUpdatesList().isEmpty()) {
+            LOGGER.warn("No AutomationCompositionElement deploy in message {}",
+                    deployMsg.getAutomationCompositionId());
             return;
         }
 
-        for (var participantDeploy : updateMsg.getParticipantUpdatesList()) {
-            if (participantId.equals(participantDeploy.getParticipantId())) {
-                if (updateMsg.isFirstStartPhase()) {
-                    initializeDeploy(updateMsg.getMessageId(), updateMsg.getAutomationCompositionId(),
-                            participantDeploy, DeployState.DEPLOYING);
+        for (var participantDeploy : deployMsg.getParticipantUpdatesList()) {
+            if (cacheProvider.getParticipantId().equals(participantDeploy.getParticipantId())) {
+                if (deployMsg.isFirstStartPhase()) {
+                    cacheProvider.initializeAutomationComposition(deployMsg.getCompositionId(),
+                            deployMsg.getAutomationCompositionId(), participantDeploy);
                 }
-                callParticipantDeploy(participantDeploy.getAcElementList(), acElementDefinitions,
-                        updateMsg.getStartPhase(), updateMsg.getAutomationCompositionId());
+                callParticipanDeploy(participantDeploy.getAcElementList(), deployMsg.getStartPhase(),
+                        deployMsg.getAutomationCompositionId());
             }
         }
     }
 
-    private void initializeDeploy(UUID messageId, UUID instanceId, ParticipantDeploy participantDeploy,
-            DeployState deployState) {
-        if (automationCompositionMap.containsKey(instanceId)) {
-            updateExistingElementsOnThisParticipant(instanceId, participantDeploy, deployState);
-        } else {
-            var automationComposition = new AutomationComposition();
-            automationComposition.setInstanceId(instanceId);
-            var acElements = storeElementsOnThisParticipant(participantDeploy, deployState);
-            automationComposition.setElements(prepareAcElementMap(acElements));
-            automationCompositionMap.put(instanceId, automationComposition);
-        }
-    }
-
-    private void callParticipantDeploy(List<AcElementDeploy> acElements,
-            List<AutomationCompositionElementDefinition> acElementDefinitions, Integer startPhaseMsg,
-            UUID automationCompositionId) {
+    private void callParticipanDeploy(List<AcElementDeploy> acElements, Integer startPhaseMsg, UUID instanceId) {
         try {
             for (var element : acElements) {
-                var acElementNodeTemplate = getAcElementNodeTemplate(acElementDefinitions, element.getDefinition());
-                if (acElementNodeTemplate != null) {
-                    int startPhase = ParticipantUtils.findStartPhase(acElementNodeTemplate.getProperties());
-                    if (startPhaseMsg.equals(startPhase)) {
-                        for (var acElementListener : listeners) {
-                            var map = new HashMap<>(acElementNodeTemplate.getProperties());
-                            map.putAll(element.getProperties());
-                            acElementListener.deploy(automationCompositionId, element, map);
-                        }
-                    }
+                var commonProperties = cacheProvider.getCommonProperties(instanceId, element.getId());
+                int startPhase = ParticipantUtils.findStartPhase(commonProperties);
+                if (startPhaseMsg.equals(startPhase)) {
+                    var map = new HashMap<>(commonProperties);
+                    map.putAll(element.getProperties());
+                    listener.deploy(instanceId, element, map);
                 }
             }
         } catch (PfModelException e) {
-            LOGGER.debug("Automation composition element update failed {}", automationCompositionId);
+            LOGGER.debug("Automation composition element Deploy failed {}", instanceId);
         }
-
     }
 
-    private void callParticipantUpdateProperty(List<AcElementDeploy> acElements,
-            List<AutomationCompositionElementDefinition> acElementDefinitions, UUID automationCompositionId) {
+    private void callParticipantUpdateProperty(List<AcElementDeploy> acElements, UUID instanceId) {
         try {
             for (var element : acElements) {
-                var acElementNodeTemplate = getAcElementNodeTemplate(acElementDefinitions, element.getDefinition());
-                if (acElementNodeTemplate != null) {
-                    for (var acElementListener : listeners) {
-                        var map = new HashMap<>(acElementNodeTemplate.getProperties());
-                        map.putAll(element.getProperties());
-                        acElementListener.update(automationCompositionId, element, map);
-                    }
-                }
+                listener.update(instanceId, element, element.getProperties());
             }
         } catch (PfModelException e) {
-            LOGGER.error("Automation composition element update failed for {} {}", automationCompositionId, e);
+            LOGGER.debug("Automation composition element update failed {}", instanceId);
         }
-
     }
 
-    private ToscaNodeTemplate getAcElementNodeTemplate(
-            List<AutomationCompositionElementDefinition> acElementDefinitions, ToscaConceptIdentifier acElementDefId) {
-
-        for (var acElementDefinition : acElementDefinitions) {
-            if (acElementDefId.getName().contains(acElementDefinition.getAcElementDefinitionId().getName())) {
-                return acElementDefinition.getAutomationCompositionElementToscaNodeTemplate();
-            }
-        }
-        return null;
-    }
-
-    private List<AutomationCompositionElement> storeElementsOnThisParticipant(ParticipantDeploy participantDeploy,
-            DeployState deployState) {
-        List<AutomationCompositionElement> acElementList = new ArrayList<>();
+    private void updateExistingElementsOnThisParticipant(UUID instanceId, ParticipantDeploy participantDeploy) {
+        var acElementList = cacheProvider.getAutomationComposition(instanceId).getElements();
         for (var element : participantDeploy.getAcElementList()) {
-            var acElement = new AutomationCompositionElement();
-            acElement.setId(element.getId());
-            acElement.setParticipantId(participantDeploy.getParticipantId());
-            acElement.setDefinition(element.getDefinition());
-            acElement.setDeployState(deployState);
-            acElement.setLockState(LockState.NONE);
-            acElementList.add(acElement);
+            var acElement = acElementList.get(element.getId());
+            acElement.getProperties().putAll(element.getProperties());
         }
-        return acElementList;
-    }
-
-    private void updateExistingElementsOnThisParticipant(UUID instanceId, ParticipantDeploy participantDeploy,
-            DeployState deployState) {
-
-        Map<UUID, AutomationCompositionElement> elementList = automationCompositionMap.get(instanceId).getElements();
-        for (var element : participantDeploy.getAcElementList()) {
-            automationCompositionMap.get(instanceId).getElements().get(element.getId()).getProperties()
-                    .putAll(element.getProperties());
-            automationCompositionMap.get(instanceId).getElements().get(element.getId()).setDeployState(deployState);
-        }
-    }
-
-    private Map<UUID, AutomationCompositionElement> prepareAcElementMap(List<AutomationCompositionElement> acElements) {
-        Map<UUID, AutomationCompositionElement> acElementMap = new LinkedHashMap<>();
-        for (var element : acElements) {
-            acElementMap.put(element.getId(), element);
-        }
-        return acElementMap;
     }
 
     /**
@@ -428,22 +257,33 @@
      *
      * @param automationComposition participant response
      * @param startPhaseMsg startPhase from message
-     * @param acElementDefinitions the list of AutomationCompositionElementDefinition
      */
-    private void handleUndeployState(final AutomationComposition automationComposition, Integer startPhaseMsg,
-            List<AutomationCompositionElementDefinition> acElementDefinitions) {
-
-        automationComposition.getElements().values().stream()
-                .forEach(acElement -> automationCompositionElementUndeploy(automationComposition.getInstanceId(),
-                        acElement, startPhaseMsg, acElementDefinitions));
+    private void handleUndeployState(final AutomationComposition automationComposition, Integer startPhaseMsg) {
+        try {
+            for (var acElement : automationComposition.getElements().values()) {
+                int startPhase = ParticipantUtils.findStartPhase(
+                        cacheProvider.getCommonProperties(automationComposition.getInstanceId(), acElement.getId()));
+                if (startPhaseMsg.equals(startPhase)) {
+                    listener.undeploy(automationComposition.getInstanceId(), acElement.getId());
+                }
+            }
+        } catch (PfModelException e) {
+            LOGGER.debug("Automation composition element Undeploy failed {}", automationComposition.getInstanceId());
+        }
     }
 
-    private void handleDeleteState(final AutomationComposition automationComposition, Integer startPhaseMsg,
-            List<AutomationCompositionElementDefinition> acElementDefinitions) {
-
-        automationComposition.getElements().values().stream()
-                .forEach(acElement -> automationCompositionElementDelete(automationComposition.getInstanceId(),
-                        acElement, startPhaseMsg, acElementDefinitions));
+    private void handleDeleteState(final AutomationComposition automationComposition, Integer startPhaseMsg) {
+        try {
+            for (var acElement : automationComposition.getElements().values()) {
+                int startPhase = ParticipantUtils.findStartPhase(
+                        cacheProvider.getCommonProperties(automationComposition.getInstanceId(), acElement.getId()));
+                if (startPhaseMsg.equals(startPhase)) {
+                    listener.delete(automationComposition.getInstanceId(), acElement.getId());
+                }
+            }
+        } catch (PfModelException e) {
+            LOGGER.debug("Automation composition element Delete failed {}", automationComposition.getInstanceId());
+        }
     }
 
     /**
@@ -451,13 +291,19 @@
      *
      * @param automationComposition participant response
      * @param startPhaseMsg startPhase from message
-     * @param acElementDefinitions the list of AutomationCompositionElementDefinition
      */
-    private void handleLockState(final AutomationComposition automationComposition, Integer startPhaseMsg,
-            List<AutomationCompositionElementDefinition> acElementDefinitions) {
-        automationComposition.getElements().values().stream()
-                .forEach(acElement -> automationCompositionElementLock(automationComposition.getInstanceId(), acElement,
-                        startPhaseMsg, acElementDefinitions));
+    private void handleLockState(final AutomationComposition automationComposition, Integer startPhaseMsg) {
+        try {
+            for (var acElement : automationComposition.getElements().values()) {
+                int startPhase = ParticipantUtils.findStartPhase(
+                        cacheProvider.getCommonProperties(automationComposition.getInstanceId(), acElement.getId()));
+                if (startPhaseMsg.equals(startPhase)) {
+                    listener.lock(automationComposition.getInstanceId(), acElement.getId());
+                }
+            }
+        } catch (PfModelException e) {
+            LOGGER.debug("Automation composition element Lock failed {}", automationComposition.getInstanceId());
+        }
     }
 
     /**
@@ -465,177 +311,18 @@
      *
      * @param automationComposition participant response
      * @param startPhaseMsg startPhase from message
-     * @param acElementDefinitions the list of AutomationCompositionElementDefinition
      */
-    private void handleUnlockState(final AutomationComposition automationComposition, Integer startPhaseMsg,
-            List<AutomationCompositionElementDefinition> acElementDefinitions) {
-        automationComposition.getElements().values().stream()
-                .forEach(acElement -> automationCompositionElementUnlock(automationComposition.getInstanceId(),
-                        acElement, startPhaseMsg, acElementDefinitions));
-    }
-
-    private void automationCompositionElementLock(UUID instanceId, AutomationCompositionElement acElement,
-            Integer startPhaseMsg, List<AutomationCompositionElementDefinition> acElementDefinitions) {
-        var acElementNodeTemplate = getAcElementNodeTemplate(acElementDefinitions, acElement.getDefinition());
-        if (acElementNodeTemplate != null) {
-            int startPhase = ParticipantUtils.findStartPhase(acElementNodeTemplate.getProperties());
-            if (startPhaseMsg.equals(startPhase)) {
-                for (var acElementListener : listeners) {
-                    try {
-                        acElementListener.lock(instanceId, acElement.getId());
-                    } catch (PfModelException e) {
-                        LOGGER.error("Automation composition element lock failed {}", instanceId);
-                    }
+    private void handleUnlockState(final AutomationComposition automationComposition, Integer startPhaseMsg) {
+        try {
+            for (var acElement : automationComposition.getElements().values()) {
+                int startPhase = ParticipantUtils.findStartPhase(
+                        cacheProvider.getCommonProperties(automationComposition.getInstanceId(), acElement.getId()));
+                if (startPhaseMsg.equals(startPhase)) {
+                    listener.unlock(automationComposition.getInstanceId(), acElement.getId());
                 }
             }
+        } catch (PfModelException e) {
+            LOGGER.debug("Automation composition element Unlock failed {}", automationComposition.getInstanceId());
         }
     }
-
-    private void automationCompositionElementUnlock(UUID instanceId, AutomationCompositionElement acElement,
-            Integer startPhaseMsg, List<AutomationCompositionElementDefinition> acElementDefinitions) {
-        var acElementNodeTemplate = getAcElementNodeTemplate(acElementDefinitions, acElement.getDefinition());
-        if (acElementNodeTemplate != null) {
-            int startPhase = ParticipantUtils.findStartPhase(acElementNodeTemplate.getProperties());
-            if (startPhaseMsg.equals(startPhase)) {
-                for (var acElementListener : listeners) {
-                    try {
-                        acElementListener.unlock(instanceId, acElement.getId());
-                    } catch (PfModelException e) {
-                        LOGGER.error("Automation composition element unlock failed {}", instanceId);
-                    }
-                }
-            }
-        }
-    }
-
-    private void automationCompositionElementUndeploy(UUID instanceId, AutomationCompositionElement acElement,
-            Integer startPhaseMsg, List<AutomationCompositionElementDefinition> acElementDefinitions) {
-        var acElementNodeTemplate = getAcElementNodeTemplate(acElementDefinitions, acElement.getDefinition());
-        if (acElementNodeTemplate != null) {
-            int startPhase = ParticipantUtils.findStartPhase(acElementNodeTemplate.getProperties());
-            if (startPhaseMsg.equals(startPhase)) {
-                undeployInstanceElements(instanceId, acElement.getId());
-            }
-        }
-    }
-
-    private void automationCompositionElementDelete(UUID instanceId, AutomationCompositionElement acElement,
-            Integer startPhaseMsg, List<AutomationCompositionElementDefinition> acElementDefinitions) {
-        var acElementNodeTemplate = getAcElementNodeTemplate(acElementDefinitions, acElement.getDefinition());
-        if (acElementNodeTemplate != null) {
-            int startPhase = ParticipantUtils.findStartPhase(acElementNodeTemplate.getProperties());
-            if (startPhaseMsg.equals(startPhase)) {
-                for (var acElementListener : listeners) {
-                    try {
-                        acElementListener.delete(instanceId, acElement.getId());
-                    } catch (PfModelException e) {
-                        LOGGER.error("Automation composition element unlock failed {}", instanceId);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Undeploy Instance Elements On Participant.
-     */
-    public void undeployInstances() {
-        automationCompositionMap.values().forEach(this::undeployInstance);
-    }
-
-    private void undeployInstance(AutomationComposition automationComposition) {
-        automationComposition.getElements().values().forEach(element -> {
-            if (element.getParticipantId().equals(participantId)) {
-                undeployInstanceElements(automationComposition.getInstanceId(), element.getId());
-            }
-        });
-    }
-
-    private void undeployInstanceElements(UUID instanceId, UUID elementId) {
-        for (var acElementListener : listeners) {
-            try {
-                acElementListener.undeploy(instanceId, elementId);
-            } catch (PfModelException e) {
-                LOGGER.error("Automation composition element update failed {}", instanceId);
-            }
-        }
-    }
-
-    /**
-     * Send Ac Element Info.
-     *
-     * @param automationCompositionId the automationComposition Id
-     * @param elementId the automationComposition Element id
-     * @param useState the use State
-     * @param operationalState the operational State
-     * @param outProperties the output Properties Map
-     */
-    public void sendAcElementInfo(UUID automationCompositionId, UUID elementId, String useState,
-            String operationalState, Map<String, Object> outProperties) {
-
-        if (automationCompositionId == null || elementId == null) {
-            LOGGER.error("Cannot update Automation composition element state, id is null");
-            return;
-        }
-
-        var automationComposition = automationCompositionMap.get(automationCompositionId);
-        if (automationComposition == null) {
-            LOGGER.error("Cannot update Automation composition element state, Automation composition id {} not present",
-                    automationComposition);
-            return;
-        }
-
-        var element = automationComposition.getElements().get(elementId);
-        if (element == null) {
-            var msg = "Cannot update Automation composition element state, AC Element id {} not present";
-            LOGGER.error(msg, automationComposition);
-            return;
-        }
-        element.setOperationalState(operationalState);
-        element.setUseState(useState);
-        element.setOutProperties(outProperties);
-
-        var statusMsg = new ParticipantStatus();
-        statusMsg.setParticipantId(participantId);
-        statusMsg.setState(ParticipantState.ON_LINE);
-        statusMsg.setParticipantSupportedElementType(new ArrayList<>(supportedAcElementTypes));
-        var acInfo = new AutomationCompositionInfo();
-        acInfo.setAutomationCompositionId(automationCompositionId);
-        acInfo.setDeployState(automationComposition.getDeployState());
-        acInfo.setLockState(automationComposition.getLockState());
-        acInfo.setElements(List.of(getAutomationCompositionElementInfo(element)));
-        statusMsg.setAutomationCompositionInfoList(List.of(acInfo));
-        publisher.sendParticipantStatus(statusMsg);
-    }
-
-    /**
-     * get AutomationComposition Info List.
-     *
-     * @return list of AutomationCompositionInfo
-     */
-    public List<AutomationCompositionInfo> getAutomationCompositionInfoList() {
-        List<AutomationCompositionInfo> automationCompositionInfoList = new ArrayList<>();
-        for (var entry : automationCompositionMap.entrySet()) {
-            var acInfo = new AutomationCompositionInfo();
-            acInfo.setAutomationCompositionId(entry.getKey());
-            acInfo.setDeployState(entry.getValue().getDeployState());
-            acInfo.setLockState(entry.getValue().getLockState());
-            for (var element : entry.getValue().getElements().values()) {
-                acInfo.getElements().add(getAutomationCompositionElementInfo(element));
-            }
-            automationCompositionInfoList.add(acInfo);
-        }
-        return automationCompositionInfoList;
-    }
-
-    private AutomationCompositionElementInfo getAutomationCompositionElementInfo(AutomationCompositionElement element) {
-        var elementInfo = new AutomationCompositionElementInfo();
-        elementInfo.setAutomationCompositionElementId(element.getId());
-        elementInfo.setDeployState(element.getDeployState());
-        elementInfo.setLockState(element.getLockState());
-        elementInfo.setOperationalState(element.getOperationalState());
-        elementInfo.setUseState(element.getUseState());
-        elementInfo.setOutProperties(element.getOutProperties());
-        return elementInfo;
-    }
 }
diff --git a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandler.java b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandler.java
index 9e1216c..1e5caad 100644
--- a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandler.java
+++ b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandler.java
@@ -24,17 +24,14 @@
 
 import io.micrometer.core.annotation.Timed;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.UUID;
-import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantMessagePublisher;
-import org.onap.policy.clamp.acm.participant.intermediary.parameters.ParticipantParameters;
 import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition;
+import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionInfo;
 import org.onap.policy.clamp.models.acm.concepts.ParticipantDefinition;
 import org.onap.policy.clamp.models.acm.concepts.ParticipantState;
-import org.onap.policy.clamp.models.acm.concepts.ParticipantSupportedElementType;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionDeploy;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionStateChange;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantAckMessage;
@@ -56,33 +53,14 @@
  * This class is responsible for managing the state of a participant.
  */
 @Component
+@RequiredArgsConstructor
 public class ParticipantHandler {
     private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantHandler.class);
 
-    @Getter
-    private final UUID participantId;
-
     private final AutomationCompositionHandler automationCompositionHandler;
+    private final AutomationCompositionOutHandler automationCompositionOutHandler;
     private final ParticipantMessagePublisher publisher;
-
-    private final Map<UUID, List<AutomationCompositionElementDefinition>> acElementDefsMap = new HashMap<>();
-
-    private final List<ParticipantSupportedElementType> supportedAcElementTypes;
-
-    /**
-     * Constructor, set the participant ID and sender.
-     *
-     * @param parameters the parameters of the participant
-     * @param publisher the publisher for sending responses to messages
-     * @param automationCompositionHandler the publisher for sending responses to messages
-     */
-    public ParticipantHandler(ParticipantParameters parameters, ParticipantMessagePublisher publisher,
-            AutomationCompositionHandler automationCompositionHandler) {
-        this.participantId = parameters.getIntermediaryParameters().getParticipantId();
-        this.publisher = publisher;
-        this.automationCompositionHandler = automationCompositionHandler;
-        this.supportedAcElementTypes = parameters.getIntermediaryParameters().getParticipantSupportedElementTypes();
-    }
+    private final CacheProvider cacheProvider;
 
     /**
      * Method which handles a participant health check event from clamp.
@@ -104,8 +82,7 @@
             value = "listener.automation_composition_update",
             description = "AUTOMATION_COMPOSITION_UPDATE messages received")
     public void handleAutomationCompositionDeploy(AutomationCompositionDeploy updateMsg) {
-        automationCompositionHandler.handleAutomationCompositionDeploy(updateMsg,
-                acElementDefsMap.get(updateMsg.getCompositionId()));
+        automationCompositionHandler.handleAutomationCompositionDeploy(updateMsg);
     }
 
     /**
@@ -117,8 +94,7 @@
             value = "listener.automation_composition_state_change",
             description = "AUTOMATION_COMPOSITION_STATE_CHANGE messages received")
     public void handleAutomationCompositionStateChange(AutomationCompositionStateChange stateChangeMsg) {
-        automationCompositionHandler.handleAutomationCompositionStateChange(stateChangeMsg,
-                acElementDefsMap.get(stateChangeMsg.getCompositionId()));
+        automationCompositionHandler.handleAutomationCompositionStateChange(stateChangeMsg);
     }
 
     /**
@@ -126,12 +102,9 @@
      *
      * @param propertyUpdateMsg the property update message
      */
-    @Timed(
-            value = "listener.properties_update",
-            description = "PROPERTIES_UPDATE message received")
+    @Timed(value = "listener.properties_update", description = "PROPERTIES_UPDATE message received")
     public void handleAcPropertyUpdate(PropertiesUpdate propertyUpdateMsg) {
-        automationCompositionHandler.handleAcPropertyUpdate(propertyUpdateMsg,
-                acElementDefsMap.get(propertyUpdateMsg.getCompositionId()));
+        automationCompositionHandler.handleAcPropertyUpdate(propertyUpdateMsg);
     }
 
     /**
@@ -141,7 +114,7 @@
      * @return true if it applies, false otherwise
      */
     public boolean appliesTo(ParticipantMessage participantMsg) {
-        return participantMsg.appliesTo(participantId);
+        return participantMsg.appliesTo(cacheProvider.getParticipantId());
     }
 
     /**
@@ -151,7 +124,7 @@
      * @return true if it applies, false otherwise
      */
     public boolean appliesTo(ParticipantAckMessage participantMsg) {
-        return participantMsg.appliesTo(participantId);
+        return participantMsg.appliesTo(cacheProvider.getParticipantId());
     }
 
     /**
@@ -159,8 +132,8 @@
      */
     public void sendParticipantRegister() {
         var participantRegister = new ParticipantRegister();
-        participantRegister.setParticipantId(participantId);
-        participantRegister.setParticipantSupportedElementType(supportedAcElementTypes);
+        participantRegister.setParticipantId(cacheProvider.getParticipantId());
+        participantRegister.setParticipantSupportedElementType(cacheProvider.getSupportedAcElementTypes());
 
         publisher.sendParticipantRegister(participantRegister);
     }
@@ -182,9 +155,8 @@
      */
     public void sendParticipantDeregister() {
         var participantDeregister = new ParticipantDeregister();
-        participantDeregister.setParticipantId(participantId);
+        participantDeregister.setParticipantId(cacheProvider.getParticipantId());
         publisher.sendParticipantDeregister(participantDeregister);
-        automationCompositionHandler.undeployInstances();
     }
 
     /**
@@ -205,22 +177,20 @@
      */
     @Timed(value = "listener.participant_prime", description = "PARTICIPANT_PRIME messages received")
     public void handleParticipantPrime(ParticipantPrime participantPrimeMsg) {
-        LOGGER.debug("ParticipantPrime message received for participantId {}",
-                participantPrimeMsg.getParticipantId());
+        LOGGER.debug("ParticipantPrime message received for participantId {}", participantPrimeMsg.getParticipantId());
 
-        acElementDefsMap.putIfAbsent(participantPrimeMsg.getCompositionId(), new ArrayList<>());
         if (!participantPrimeMsg.getParticipantDefinitionUpdates().isEmpty()) {
-            // This message is to commission the automation composition
+            // prime
+            List<AutomationCompositionElementDefinition> list = new ArrayList<>();
             for (var participantDefinition : participantPrimeMsg.getParticipantDefinitionUpdates()) {
-                if (participantDefinition.getParticipantId().equals(participantId)) {
-                    acElementDefsMap.get(participantPrimeMsg.getCompositionId())
-                            .addAll(participantDefinition.getAutomationCompositionElementDefinitionList());
-                    break;
+                if (participantDefinition.getParticipantId().equals(cacheProvider.getParticipantId())) {
+                    list.addAll(participantDefinition.getAutomationCompositionElementDefinitionList());
                 }
             }
+            cacheProvider.addElementDefinition(participantPrimeMsg.getCompositionId(), list);
         } else {
-            // This message is to decommission the automation composition
-            acElementDefsMap.get(participantPrimeMsg.getCompositionId()).clear();
+            // deprime
+            cacheProvider.removeElementDefinition(participantPrimeMsg.getCompositionId());
         }
         sendParticipantPrimeAck(participantPrimeMsg.getMessageId(), participantPrimeMsg.getCompositionId());
     }
@@ -234,7 +204,7 @@
         participantPrimeAck.setCompositionId(compositionId);
         participantPrimeAck.setMessage("Participant Prime Ack message");
         participantPrimeAck.setResult(true);
-        participantPrimeAck.setParticipantId(participantId);
+        participantPrimeAck.setParticipantId(cacheProvider.getParticipantId());
         participantPrimeAck.setState(ParticipantState.ON_LINE);
         publisher.sendParticipantPrimeAck(participantPrimeAck);
     }
@@ -251,17 +221,19 @@
      */
     public ParticipantStatus makeHeartbeat(boolean responseToParticipantStatusReq) {
         var heartbeat = new ParticipantStatus();
-        heartbeat.setParticipantId(participantId);
+        heartbeat.setParticipantId(cacheProvider.getParticipantId());
         heartbeat.setState(ParticipantState.ON_LINE);
-        heartbeat.setAutomationCompositionInfoList(automationCompositionHandler.getAutomationCompositionInfoList());
-        heartbeat.setParticipantSupportedElementType(new ArrayList<>(this.supportedAcElementTypes));
+        heartbeat.setAutomationCompositionInfoList(getAutomationCompositionInfoList());
+        heartbeat.setParticipantSupportedElementType(cacheProvider.getSupportedAcElementTypes());
 
         if (responseToParticipantStatusReq) {
+            var acElementDefsMap = cacheProvider.getAcElementsDefinitions();
             List<ParticipantDefinition> participantDefinitionList = new ArrayList<>(acElementDefsMap.size());
-            for (var acElementDefsOnThisParticipant : acElementDefsMap.values()) {
+            for (var acElementDefs : acElementDefsMap.values()) {
                 var participantDefinition = new ParticipantDefinition();
-                participantDefinition.setParticipantId(participantId);
-                participantDefinition.setAutomationCompositionElementDefinitionList(acElementDefsOnThisParticipant);
+                participantDefinition.setParticipantId(cacheProvider.getParticipantId());
+                participantDefinition
+                        .setAutomationCompositionElementDefinitionList(new ArrayList<>(acElementDefs.values()));
                 participantDefinitionList.add(participantDefinition);
             }
             heartbeat.setParticipantDefinitionUpdates(participantDefinitionList);
@@ -269,4 +241,24 @@
 
         return heartbeat;
     }
+
+    /**
+     * get AutomationComposition Info List.
+     *
+     * @return list of AutomationCompositionInfo
+     */
+    private List<AutomationCompositionInfo> getAutomationCompositionInfoList() {
+        List<AutomationCompositionInfo> automationCompositionInfoList = new ArrayList<>();
+        for (var entry : cacheProvider.getAutomationCompositions().entrySet()) {
+            var acInfo = new AutomationCompositionInfo();
+            acInfo.setAutomationCompositionId(entry.getKey());
+            acInfo.setDeployState(entry.getValue().getDeployState());
+            acInfo.setLockState(entry.getValue().getLockState());
+            for (var element : entry.getValue().getElements().values()) {
+                acInfo.getElements().add(automationCompositionOutHandler.getAutomationCompositionElementInfo(element));
+            }
+            automationCompositionInfoList.add(acInfo);
+        }
+        return automationCompositionInfoList;
+    }
 }
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/ParticipantIntermediaryApiImplTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/ParticipantIntermediaryApiImplTest.java
index 8f70bc7..4213e97 100644
--- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/ParticipantIntermediaryApiImplTest.java
+++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/api/impl/ParticipantIntermediaryApiImplTest.java
@@ -26,8 +26,7 @@
 import java.util.Map;
 import java.util.UUID;
 import org.junit.jupiter.api.Test;
-import org.onap.policy.clamp.acm.participant.intermediary.api.AutomationCompositionElementListener;
-import org.onap.policy.clamp.acm.participant.intermediary.handler.AutomationCompositionHandler;
+import org.onap.policy.clamp.acm.participant.intermediary.handler.AutomationCompositionOutHandler;
 import org.onap.policy.clamp.models.acm.concepts.DeployState;
 import org.onap.policy.clamp.models.acm.concepts.LockState;
 import org.onap.policy.clamp.models.acm.concepts.StateChangeResult;
@@ -41,22 +40,23 @@
 
     @Test
     void mockParticipantIntermediaryApiImplTest() throws CoderException {
-        var automationComposiitonHandler = mock(AutomationCompositionHandler.class);
-        var apiImpl = new ParticipantIntermediaryApiImpl(automationComposiitonHandler);
-
-        var acElementListener = mock(AutomationCompositionElementListener.class);
-        apiImpl.registerAutomationCompositionElementListener(acElementListener);
-        verify(automationComposiitonHandler).registerAutomationCompositionElementListener(acElementListener);
+        var automationComposiitonHandler = mock(AutomationCompositionOutHandler.class);
+        var apiImpl = new ParticipantIntermediaryApiImpl(automationComposiitonHandler, null);
 
         var uuid = UUID.randomUUID();
         var automationCompositionId = UUID.randomUUID();
         apiImpl.updateAutomationCompositionElementState(automationCompositionId, uuid, DeployState.UNDEPLOYED,
                 LockState.NONE, StateChangeResult.NO_ERROR, null);
         verify(automationComposiitonHandler).updateAutomationCompositionElementState(automationCompositionId, uuid,
-                DeployState.UNDEPLOYED, LockState.NONE, null);
+                DeployState.UNDEPLOYED, LockState.NONE, StateChangeResult.NO_ERROR, null);
 
         apiImpl.sendAcElementInfo(automationCompositionId, uuid, USE_STATE, OPERATIONAL_STATE, MAP);
         verify(automationComposiitonHandler).sendAcElementInfo(automationCompositionId, uuid, USE_STATE,
                 OPERATIONAL_STATE, MAP);
+
+        apiImpl.updateAutomationCompositionElementState(automationCompositionId, uuid, DeployState.DEPLOYED, null,
+                StateChangeResult.NO_ERROR, "");
+        verify(automationComposiitonHandler).updateAutomationCompositionElementState(automationCompositionId, uuid,
+                DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "");
     }
 }
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandlerTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandlerTest.java
index d782ae1..7e0c3da 100644
--- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandlerTest.java
+++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandlerTest.java
@@ -20,17 +20,13 @@
 
 package org.onap.policy.clamp.acm.participant.intermediary.handler;
 
-import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyMap;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
-import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import org.junit.jupiter.api.Test;
@@ -39,242 +35,165 @@
 import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantMessagePublisher;
 import org.onap.policy.clamp.acm.participant.intermediary.main.parameters.CommonTestData;
 import org.onap.policy.clamp.models.acm.concepts.AcElementDeploy;
-import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition;
-import org.onap.policy.clamp.models.acm.concepts.DeployState;
-import org.onap.policy.clamp.models.acm.concepts.LockState;
 import org.onap.policy.clamp.models.acm.concepts.ParticipantDeploy;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionDeploy;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionDeployAck;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionStateChange;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.PropertiesUpdate;
 import org.onap.policy.clamp.models.acm.messages.rest.instantiation.DeployOrder;
 import org.onap.policy.clamp.models.acm.messages.rest.instantiation.LockOrder;
 import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 @ExtendWith(SpringExtension.class)
 class AutomationCompositionHandlerTest {
 
-    private final CommonTestData commonTestData = new CommonTestData();
-
-    private static final String STATE_VALUE = "STATE_VALUE";
-
     @Test
-    void automationCompositionHandlerTest() {
-        var ach = commonTestData.getMockAutomationCompositionHandler();
-        assertNotNull(ach.getAutomationCompositionMap());
+    void handleAutomationCompositionStateChangeNullTest() {
+        var participantMessagePublisher = mock(ParticipantMessagePublisher.class);
+        var cacheProvider = mock(CacheProvider.class);
+        var ach = new AutomationCompositionHandler(cacheProvider, participantMessagePublisher,
+                mock(AutomationCompositionElementListener.class));
+
+        var automationCompositionStateChange = new AutomationCompositionStateChange();
+        assertDoesNotThrow(() -> ach.handleAutomationCompositionStateChange(automationCompositionStateChange));
+
+        automationCompositionStateChange.setAutomationCompositionId(UUID.randomUUID());
+        assertDoesNotThrow(() -> ach.handleAutomationCompositionStateChange(automationCompositionStateChange));
+        verify(participantMessagePublisher).sendAutomationCompositionAck(any(AutomationCompositionDeployAck.class));
+
+        var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+        automationCompositionStateChange.setAutomationCompositionId(automationComposition.getInstanceId());
+        when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
+                .thenReturn(automationComposition);
+        automationCompositionStateChange.setDeployOrderedState(DeployOrder.UPDATE);
+        assertDoesNotThrow(() -> ach.handleAutomationCompositionStateChange(automationCompositionStateChange));
     }
 
     @Test
-    void updateNullAutomationCompositionHandlerTest() {
-        var id = UUID.randomUUID();
+    void handleAutomationCompositionStateChangeUndeployTest() throws PfModelException {
+        var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+        var automationCompositionStateChange = CommonTestData.getStateChange(CommonTestData.getParticipantId(),
+                automationComposition.getInstanceId(), DeployOrder.UNDEPLOY, LockOrder.NONE);
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
+                .thenReturn(automationComposition);
+        when(cacheProvider.getCommonProperties(any(UUID.class), any(UUID.class))).thenReturn(Map.of());
 
-        var ach = commonTestData.getMockAutomationCompositionHandler();
-        assertDoesNotThrow(() -> ach.updateAutomationCompositionElementState(null, null, DeployState.UNDEPLOYED, null,
-                "Undeployed"));
-
-        assertDoesNotThrow(
-                () -> ach.updateAutomationCompositionElementState(null, id, DeployState.UNDEPLOYED, null, null));
+        var participantMessagePublisher = mock(ParticipantMessagePublisher.class);
+        var listener = mock(AutomationCompositionElementListener.class);
+        var ach = new AutomationCompositionHandler(cacheProvider, participantMessagePublisher, listener);
+        ach.handleAutomationCompositionStateChange(automationCompositionStateChange);
+        verify(listener, times(automationComposition.getElements().size())).undeploy(any(), any());
     }
 
     @Test
-    void updateAutomationCompositionHandlerTest() {
-        var uuid = UUID.randomUUID();
-        var partecipantId = CommonTestData.getParticipantId();
-        var definition = CommonTestData.getDefinition();
+    void handleAutomationCompositionStateChangeLockTest() throws PfModelException {
+        var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+        var automationCompositionStateChange = CommonTestData.getStateChange(CommonTestData.getParticipantId(),
+                automationComposition.getInstanceId(), DeployOrder.NONE, LockOrder.LOCK);
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
+                .thenReturn(automationComposition);
+        when(cacheProvider.getCommonProperties(any(UUID.class), any(UUID.class))).thenReturn(Map.of());
 
-        var ach = commonTestData.setTestAutomationCompositionHandler(definition, uuid, partecipantId);
-        var acKey = ach.getAutomationCompositionMap().keySet().iterator().next();
-        var key = ach.getAutomationCompositionMap().get(acKey).getElements().keySet().iterator().next();
-        var value = ach.getAutomationCompositionMap().get(acKey).getElements().get(key);
-        value.setDeployState(DeployState.DEPLOYING);
-        value.setLockState(LockState.NONE);
-        ach.updateAutomationCompositionElementState(CommonTestData.AC_ID_1, uuid, DeployState.DEPLOYED, null,
-                "Deployed");
-        assertEquals(DeployState.DEPLOYED, value.getDeployState());
-
-        ach.getAutomationCompositionMap().values().iterator().next().getElements().putIfAbsent(key, value);
-        ach.updateAutomationCompositionElementState(CommonTestData.AC_ID_1, key, DeployState.DEPLOYED, null,
-                "Deployed");
-        assertEquals(DeployState.DEPLOYED, value.getDeployState());
-
-        ach.getAutomationCompositionMap().values().iterator().next().getElements().clear();
-        assertDoesNotThrow(() -> ach.updateAutomationCompositionElementState(CommonTestData.AC_ID_1, key, null,
-                LockState.UNLOCKED, null));
+        var participantMessagePublisher = mock(ParticipantMessagePublisher.class);
+        var listener = mock(AutomationCompositionElementListener.class);
+        var ach = new AutomationCompositionHandler(cacheProvider, participantMessagePublisher, listener);
+        ach.handleAutomationCompositionStateChange(automationCompositionStateChange);
+        verify(listener, times(automationComposition.getElements().size())).lock(any(), any());
     }
 
     @Test
-    void handleAutomationCompositionStateChangeTest() {
-        var uuid = UUID.randomUUID();
-        var partecipantId = CommonTestData.getParticipantId();
-        var definition = CommonTestData.getDefinition();
-        var stateChange = commonTestData.getStateChange(partecipantId, uuid, DeployOrder.NONE, LockOrder.UNLOCK);
-        var ach = commonTestData.setTestAutomationCompositionHandler(definition, uuid, partecipantId);
-        assertDoesNotThrow(() -> ach
-                .handleAutomationCompositionStateChange(mock(AutomationCompositionStateChange.class), List.of()));
+    void handleAutomationCompositionStateChangeUnlockTest() throws PfModelException {
+        var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+        var automationCompositionStateChange = CommonTestData.getStateChange(CommonTestData.getParticipantId(),
+                automationComposition.getInstanceId(), DeployOrder.NONE, LockOrder.UNLOCK);
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
+                .thenReturn(automationComposition);
+        when(cacheProvider.getCommonProperties(any(UUID.class), any(UUID.class))).thenReturn(Map.of());
 
-        ach.handleAutomationCompositionStateChange(stateChange, List.of());
-        var newPartecipantId = CommonTestData.getRndParticipantId();
-        stateChange.setAutomationCompositionId(UUID.randomUUID());
-        stateChange.setParticipantId(newPartecipantId);
-        assertDoesNotThrow(() -> ach.handleAutomationCompositionStateChange(stateChange, List.of()));
+        var participantMessagePublisher = mock(ParticipantMessagePublisher.class);
+        var listener = mock(AutomationCompositionElementListener.class);
+        var ach = new AutomationCompositionHandler(cacheProvider, participantMessagePublisher, listener);
+        ach.handleAutomationCompositionStateChange(automationCompositionStateChange);
+        verify(listener, times(automationComposition.getElements().size())).unlock(any(), any());
+    }
+
+    @Test
+    void handleAutomationCompositionStateChangeDeleteTest() throws PfModelException {
+        var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+        var automationCompositionStateChange = CommonTestData.getStateChange(CommonTestData.getParticipantId(),
+                automationComposition.getInstanceId(), DeployOrder.DELETE, LockOrder.NONE);
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
+                .thenReturn(automationComposition);
+        when(cacheProvider.getCommonProperties(any(UUID.class), any(UUID.class))).thenReturn(Map.of());
+
+        var participantMessagePublisher = mock(ParticipantMessagePublisher.class);
+        var listener = mock(AutomationCompositionElementListener.class);
+        var ach = new AutomationCompositionHandler(cacheProvider, participantMessagePublisher, listener);
+        ach.handleAutomationCompositionStateChange(automationCompositionStateChange);
+        verify(listener, times(automationComposition.getElements().size())).delete(any(), any());
+    }
+
+    @Test
+    void handleAcPropertyUpdateTest() throws PfModelException {
+        var cacheProvider = mock(CacheProvider.class);
+        var listener = mock(AutomationCompositionElementListener.class);
+        var participantMessagePublisher = mock(ParticipantMessagePublisher.class);
+        var ach = new AutomationCompositionHandler(cacheProvider, participantMessagePublisher, listener);
+
+        var updateMsg = new PropertiesUpdate();
+        assertDoesNotThrow(() -> ach.handleAcPropertyUpdate(updateMsg));
+
+        updateMsg.setParticipantId(CommonTestData.getParticipantId());
+        when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
+        var participantDeploy = new ParticipantDeploy();
+        participantDeploy.setParticipantId(CommonTestData.getParticipantId());
+        updateMsg.getParticipantUpdatesList().add(participantDeploy);
+
+        var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+        updateMsg.setAutomationCompositionId(automationComposition.getInstanceId());
+        when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
+                .thenReturn(automationComposition);
+        var acElementDeploy = new AcElementDeploy();
+        acElementDeploy.setProperties(Map.of());
+        acElementDeploy.setId(automationComposition.getElements().values().iterator().next().getId());
+        participantDeploy.getAcElementList().add(acElementDeploy);
+
+        ach.handleAcPropertyUpdate(updateMsg);
+        verify(listener).update(any(), any(), any());
     }
 
     @Test
     void handleAutomationCompositionDeployTest() throws PfModelException {
-        var acd = new AutomationCompositionElementDefinition();
-        var definition = CommonTestData.getDefinition();
-        acd.setAcElementDefinitionId(definition);
-        acd.setAutomationCompositionElementToscaNodeTemplate(mock(ToscaNodeTemplate.class));
-        var updateMsg = new AutomationCompositionDeploy();
-        updateMsg.setAutomationCompositionId(UUID.randomUUID());
-        var uuid = UUID.randomUUID();
-        updateMsg.setMessageId(uuid);
-        var partecipantId = CommonTestData.getParticipantId();
-        updateMsg.setParticipantId(partecipantId);
-        updateMsg.setFirstStartPhase(true);
-        updateMsg.setStartPhase(0);
-        var acElementDefinitions = List.of(acd);
-        var ach = commonTestData.setTestAutomationCompositionHandler(definition, uuid, partecipantId);
+        var cacheProvider = mock(CacheProvider.class);
         var listener = mock(AutomationCompositionElementListener.class);
-        ach.registerAutomationCompositionElementListener(listener);
-        ach.handleAutomationCompositionDeploy(updateMsg, acElementDefinitions);
-        verify(listener, times(0)).deploy(any(), any(), anyMap());
-        updateMsg.setFirstStartPhase(false);
-        updateMsg.setStartPhase(1);
-        ach.handleAutomationCompositionDeploy(updateMsg, acElementDefinitions);
-        verify(listener, times(0)).deploy(any(), any(), anyMap());
-
-        ach.getAutomationCompositionMap().clear();
-        updateMsg.setFirstStartPhase(true);
-        updateMsg.setStartPhase(0);
-        ach.handleAutomationCompositionDeploy(updateMsg, acElementDefinitions);
-        verify(listener, times(0)).deploy(any(), any(), anyMap());
-
-        updateMsg.setAutomationCompositionId(UUID.randomUUID());
-        updateMsg.setParticipantUpdatesList(List.of(mock(ParticipantDeploy.class)));
-        ach.handleAutomationCompositionDeploy(updateMsg, acElementDefinitions);
-        verify(listener, times(0)).deploy(any(), any(), anyMap());
-
-        updateMsg.setStartPhase(1);
-        var participantDeploy = new ParticipantDeploy();
-        participantDeploy.setParticipantId(partecipantId);
-        var element = new AcElementDeploy();
-        element.setDefinition(definition);
-        participantDeploy.setAcElementList(List.of(element));
-        updateMsg.setParticipantUpdatesList(List.of(participantDeploy));
-
-        updateMsg.setStartPhase(0);
-        ach.handleAutomationCompositionDeploy(updateMsg, acElementDefinitions);
-        verify(listener, times(1)).deploy(any(), any(), anyMap());
-    }
-
-    @Test
-    void acUndeployTest() throws PfModelException {
-        var uuid = UUID.randomUUID();
-        var partecipantId = CommonTestData.getParticipantId();
-        var definition = CommonTestData.getDefinition();
-
-        var stateChangeUndeploy =
-                commonTestData.getStateChange(partecipantId, uuid, DeployOrder.UNDEPLOY, LockOrder.NONE);
-
-        var ach = commonTestData.setTestAutomationCompositionHandler(definition, uuid, partecipantId);
-        stateChangeUndeploy
-                .setAutomationCompositionId(ach.getAutomationCompositionMap().entrySet().iterator().next().getKey());
-        var listener = mock(AutomationCompositionElementListener.class);
-        ach.registerAutomationCompositionElementListener(listener);
-
-        var acd = new AutomationCompositionElementDefinition();
-        acd.setAcElementDefinitionId(definition);
-        acd.setAutomationCompositionElementToscaNodeTemplate(mock(ToscaNodeTemplate.class));
-        ach.handleAutomationCompositionStateChange(stateChangeUndeploy, List.of(acd));
-        verify(listener, times(1)).undeploy(any(), any());
-
-        stateChangeUndeploy.setAutomationCompositionId(UUID.randomUUID());
-        stateChangeUndeploy.setParticipantId(CommonTestData.getRndParticipantId());
-        assertDoesNotThrow(() -> ach.handleAutomationCompositionStateChange(stateChangeUndeploy, List.of()));
-    }
-
-    @Test
-    void automationCompositionStateLock() throws PfModelException {
-        var uuid = UUID.randomUUID();
-        var partecipantId = CommonTestData.getParticipantId();
-        var definition = CommonTestData.getDefinition();
-
-        var stateChangeLock =
-                commonTestData.getStateChange(partecipantId, uuid, DeployOrder.NONE, LockOrder.LOCK);
-
-        var ach = commonTestData.setTestAutomationCompositionHandler(definition, uuid, partecipantId);
-        var listener = mock(AutomationCompositionElementListener.class);
-        ach.registerAutomationCompositionElementListener(listener);
-        stateChangeLock
-                .setAutomationCompositionId(ach.getAutomationCompositionMap().entrySet().iterator().next().getKey());
-        var acd = new AutomationCompositionElementDefinition();
-        acd.setAcElementDefinitionId(definition);
-        acd.setAutomationCompositionElementToscaNodeTemplate(mock(ToscaNodeTemplate.class));
-        ach.handleAutomationCompositionStateChange(stateChangeLock, List.of(acd));
-        stateChangeLock.setAutomationCompositionId(UUID.randomUUID());
-        stateChangeLock.setParticipantId(CommonTestData.getRndParticipantId());
-        ach.handleAutomationCompositionStateChange(stateChangeLock, List.of());
-        verify(listener, times(1)).lock(any(), any());
-    }
-
-    @Test
-    void automationCompositionStateUnlock() throws PfModelException {
-        var uuid = UUID.randomUUID();
-        var partecipantId = CommonTestData.getParticipantId();
-        var definition = CommonTestData.getDefinition();
-
-        var stateChangeUnlock =
-                commonTestData.getStateChange(partecipantId, uuid, DeployOrder.NONE, LockOrder.UNLOCK);
-
-        var ach = commonTestData.setTestAutomationCompositionHandler(definition, uuid, partecipantId);
-        var listener = mock(AutomationCompositionElementListener.class);
-        ach.registerAutomationCompositionElementListener(listener);
-        stateChangeUnlock
-                .setAutomationCompositionId(ach.getAutomationCompositionMap().entrySet().iterator().next().getKey());
-        var acd = new AutomationCompositionElementDefinition();
-        acd.setAcElementDefinitionId(definition);
-        acd.setAutomationCompositionElementToscaNodeTemplate(mock(ToscaNodeTemplate.class));
-        ach.handleAutomationCompositionStateChange(stateChangeUnlock, List.of(acd));
-        stateChangeUnlock.setAutomationCompositionId(UUID.randomUUID());
-        stateChangeUnlock.setParticipantId(CommonTestData.getRndParticipantId());
-        ach.handleAutomationCompositionStateChange(stateChangeUnlock, List.of());
-        verify(listener, times(1)).unlock(any(), any());
-    }
-
-
-    @Test
-    void testgetAutomationCompositionInfoList() {
-        var uuid = UUID.randomUUID();
-        var partecipantId = CommonTestData.getParticipantId();
-        var definition = CommonTestData.getDefinition();
-        var ach = commonTestData.setTestAutomationCompositionHandler(definition, uuid, partecipantId);
-        var result = ach.getAutomationCompositionInfoList();
-        assertThat(result).hasSize(1);
-        assertThat(result.get(0).getElements()).hasSize(1);
-    }
-
-    @Test
-    void testsendAcElementInfo() {
         var participantMessagePublisher = mock(ParticipantMessagePublisher.class);
-        var ach = new AutomationCompositionHandler(CommonTestData.getParticipantParameters(),
-                participantMessagePublisher);
-        ach.getAutomationCompositionMap().putAll(commonTestData.getTestAutomationCompositionMap());
-        var key = ach.getAutomationCompositionMap().keySet().iterator().next();
-        var keyElement = ach.getAutomationCompositionMap().get(key).getElements().keySet().iterator().next();
-        ach.sendAcElementInfo(key, keyElement, "useState", "operationalState", Map.of("key", 1));
-        verify(participantMessagePublisher).sendParticipantStatus(any());
-    }
+        var ach = new AutomationCompositionHandler(cacheProvider, participantMessagePublisher, listener);
 
-    @Test
-    void testUndeployInstances() throws PfModelException {
-        var uuid = UUID.randomUUID();
-        var partecipantId = CommonTestData.getParticipantId();
-        var definition = CommonTestData.getDefinition();
-        var ach = commonTestData.setTestAutomationCompositionHandler(definition, uuid, partecipantId);
-        var listener = mock(AutomationCompositionElementListener.class);
-        ach.registerAutomationCompositionElementListener(listener);
-        ach.undeployInstances();
-        verify(listener).undeploy(any(), any());
+        var deployMsg = new AutomationCompositionDeploy();
+        assertDoesNotThrow(() -> ach.handleAutomationCompositionDeploy(deployMsg));
+
+        deployMsg.setParticipantId(CommonTestData.getParticipantId());
+        when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
+        var participantDeploy = new ParticipantDeploy();
+        participantDeploy.setParticipantId(CommonTestData.getParticipantId());
+        deployMsg.getParticipantUpdatesList().add(participantDeploy);
+
+        var automationComposition = CommonTestData.getTestAutomationCompositionMap().values().iterator().next();
+        deployMsg.setAutomationCompositionId(automationComposition.getInstanceId());
+        when(cacheProvider.getAutomationComposition(automationComposition.getInstanceId()))
+                .thenReturn(automationComposition);
+        for (var element : automationComposition.getElements().values()) {
+            var acElementDeploy = new AcElementDeploy();
+            acElementDeploy.setProperties(Map.of());
+            acElementDeploy.setId(element.getId());
+            participantDeploy.getAcElementList().add(acElementDeploy);
+        }
+        ach.handleAutomationCompositionDeploy(deployMsg);
+        verify(listener, times(automationComposition.getElements().size())).deploy(any(), any(), any());
     }
 }
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandlerTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandlerTest.java
index 3086030..6cad99f 100644
--- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandlerTest.java
+++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandlerTest.java
@@ -20,136 +20,187 @@
 
 package org.onap.policy.clamp.acm.participant.intermediary.handler;
 
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import java.time.Instant;
 import java.util.List;
 import java.util.UUID;
 import org.junit.jupiter.api.Test;
 import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantMessagePublisher;
 import org.onap.policy.clamp.acm.participant.intermediary.main.parameters.CommonTestData;
 import org.onap.policy.clamp.models.acm.concepts.ParticipantDefinition;
+import org.onap.policy.clamp.models.acm.concepts.ParticipantSupportedElementType;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionDeploy;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionStateChange;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantAckMessage;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantDeregister;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantDeregisterAck;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantMessage;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantMessageType;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantPrime;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantPrimeAck;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantRegister;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantRegisterAck;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.models.base.PfModelException;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantStatus;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantStatusReq;
+import org.onap.policy.clamp.models.acm.messages.dmaap.participant.PropertiesUpdate;
 
 class ParticipantHandlerTest {
 
-    private final CommonTestData commonTestData = new CommonTestData();
-
     @Test
-    void handleUpdateTest() {
-        var parameters = CommonTestData.getParticipantParameters();
-        var automationCompositionHander = commonTestData.getMockAutomationCompositionHandler();
-        var publisher = new ParticipantMessagePublisher();
-        var emptyParticipantHandler =
-                new ParticipantHandler(parameters, publisher, automationCompositionHander);
-        var participantPrimeMsg = new ParticipantPrime();
-
-        assertThatThrownBy(() ->
-                emptyParticipantHandler.handleParticipantPrime(participantPrimeMsg))
-                .isInstanceOf(RuntimeException.class);
-
-        var participantHandler = commonTestData.getMockParticipantHandler();
-
-        var participantId = CommonTestData.getParticipantId();
-        participantPrimeMsg.setCompositionId(CommonTestData.AC_ID_1);
-        participantPrimeMsg.setParticipantId(participantId);
-        participantPrimeMsg.setMessageId(UUID.randomUUID());
-        participantPrimeMsg.setTimestamp(Instant.ofEpochMilli(3000));
-
-        var heartbeatF = participantHandler.makeHeartbeat(false);
-        assertEquals(participantId, heartbeatF.getParticipantId());
-        assertThat(heartbeatF.getAutomationCompositionInfoList()).isEmpty();
-
-        participantHandler.handleParticipantPrime(participantPrimeMsg);
-
-        var heartbeatT = participantHandler.makeHeartbeat(true);
-        assertEquals(participantId, heartbeatT.getParticipantId());
-        assertThat(heartbeatT.getParticipantDefinitionUpdates()).isNotEmpty();
-        assertEquals(participantId, heartbeatT.getParticipantDefinitionUpdates().get(0).getParticipantId());
-
-        var pum = setListParticipantDefinition(participantPrimeMsg);
-        participantHandler.handleParticipantPrime(pum);
-        var heartbeatTAfterUpdate = participantHandler.makeHeartbeat(true);
-        assertEquals(participantId, heartbeatTAfterUpdate.getParticipantId());
-    }
-
-    private ParticipantPrime setListParticipantDefinition(ParticipantPrime participantPrimeMsg) {
-        var def = new ParticipantDefinition();
-        def.setParticipantId(CommonTestData.getParticipantId());
-        participantPrimeMsg.setParticipantDefinitionUpdates(List.of(def));
-        return participantPrimeMsg;
+    void handleParticipantStatusReqTest() {
+        var publisher = mock(ParticipantMessagePublisher.class);
+        var cacheProvider = mock(CacheProvider.class);
+        var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class),
+                mock(AutomationCompositionOutHandler.class), publisher, cacheProvider);
+        participantHandler.handleParticipantStatusReq(new ParticipantStatusReq());
+        verify(publisher).sendParticipantStatus(any(ParticipantStatus.class));
     }
 
     @Test
-    void checkAppliesTo() {
-        var participantHandler = commonTestData.getMockParticipantHandler();
-        var participantAckMsg =
-                new ParticipantAckMessage(ParticipantMessageType.AUTOMATION_COMPOSITION_DEPLOY);
+    void handleAutomationCompositionDeployTest() {
+        var acHandler = mock(AutomationCompositionHandler.class);
+        var participantHandler = new ParticipantHandler(acHandler, mock(AutomationCompositionOutHandler.class),
+                mock(ParticipantMessagePublisher.class), mock(CacheProvider.class));
+        var automationCompositionDeploy = new AutomationCompositionDeploy();
+        participantHandler.handleAutomationCompositionDeploy(automationCompositionDeploy);
+        verify(acHandler).handleAutomationCompositionDeploy(automationCompositionDeploy);
+    }
+
+    @Test
+    void handleAutomationCompositionStateChangeTest() {
+        var acHandler = mock(AutomationCompositionHandler.class);
+        var participantHandler = new ParticipantHandler(acHandler, mock(AutomationCompositionOutHandler.class),
+                mock(ParticipantMessagePublisher.class), mock(CacheProvider.class));
+        var acStateChange = new AutomationCompositionStateChange();
+        participantHandler.handleAutomationCompositionStateChange(acStateChange);
+        verify(acHandler).handleAutomationCompositionStateChange(acStateChange);
+    }
+
+    @Test
+    void handleAcPropertyUpdateTest() {
+        var acHandler = mock(AutomationCompositionHandler.class);
+        var participantHandler = new ParticipantHandler(acHandler, mock(AutomationCompositionOutHandler.class),
+                mock(ParticipantMessagePublisher.class), mock(CacheProvider.class));
+        var propertyUpdateMsg = new PropertiesUpdate();
+        participantHandler.handleAcPropertyUpdate(propertyUpdateMsg);
+        verify(acHandler).handleAcPropertyUpdate(propertyUpdateMsg);
+    }
+
+    @Test
+    void appliesToTest() {
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
+        var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class),
+                mock(AutomationCompositionOutHandler.class), mock(ParticipantMessagePublisher.class), cacheProvider);
+
+        var participantAckMsg = new ParticipantAckMessage(ParticipantMessageType.AUTOMATION_COMPOSITION_DEPLOY);
         assertTrue(participantHandler.appliesTo(participantAckMsg));
 
-        var participantMsg =
-                new ParticipantMessage(ParticipantMessageType.PARTICIPANT_STATUS);
+        var participantMsg = new ParticipantMessage(ParticipantMessageType.PARTICIPANT_STATUS);
         assertTrue(participantHandler.appliesTo(participantMsg));
 
-        var randomId = UUID.randomUUID();
-        participantMsg.setParticipantId(randomId);
+        participantMsg.setParticipantId(UUID.randomUUID());
         assertFalse(participantHandler.appliesTo(participantMsg));
-
     }
 
     @Test
-    void getAutomationCompositionInfoListTest() throws CoderException {
-        var automationCompositionHandler = mock(AutomationCompositionHandler.class);
-        var participantHandler =
-                commonTestData.getParticipantHandlerAutomationCompositions(automationCompositionHandler);
-        clearInvocations(automationCompositionHandler);
-        participantHandler.sendHeartbeat();
-        verify(automationCompositionHandler).getAutomationCompositionInfoList();
-    }
-
-    @Test
-    void testHandleParticipantRegisterAck() {
-        var parameters = CommonTestData.getParticipantParameters();
-        var automationCompositionHandler = commonTestData.getMockAutomationCompositionHandler();
+    void sendParticipantRegister() {
         var publisher = mock(ParticipantMessagePublisher.class);
-        var participantHandler = new ParticipantHandler(parameters, publisher, automationCompositionHandler);
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
+        when(cacheProvider.getSupportedAcElementTypes()).thenReturn(List.of(new ParticipantSupportedElementType()));
+        var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class),
+                mock(AutomationCompositionOutHandler.class), publisher, cacheProvider);
+
+        participantHandler.sendParticipantRegister();
+        verify(publisher).sendParticipantRegister(any(ParticipantRegister.class));
+    }
+
+    @Test
+    void handleParticipantRegisterAckTest() {
+        var publisher = mock(ParticipantMessagePublisher.class);
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
+        var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class),
+                mock(AutomationCompositionOutHandler.class), publisher, cacheProvider);
 
         participantHandler.handleParticipantRegisterAck(new ParticipantRegisterAck());
-        verify(publisher).sendParticipantStatus(any());
+        verify(publisher).sendParticipantStatus(any(ParticipantStatus.class));
     }
 
     @Test
-    void testSendParticipantDeregister() throws PfModelException {
-        var commonTestData = new CommonTestData();
-        var automationCompositionMap = commonTestData.getTestAutomationCompositionMap();
-        var automationCompositionHandler = mock(AutomationCompositionHandler.class);
-
-        automationCompositionMap.values().iterator().next().getElements().values().iterator().next()
-            .setParticipantId(CommonTestData.getParticipantId());
-        when(automationCompositionHandler.getAutomationCompositionMap()).thenReturn(automationCompositionMap);
-
+    void sendParticipantDeregisterTest() {
         var publisher = mock(ParticipantMessagePublisher.class);
-        var parameters = CommonTestData.getParticipantParameters();
-        var participantHandler = new ParticipantHandler(parameters, publisher, automationCompositionHandler);
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
+        var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class),
+                mock(AutomationCompositionOutHandler.class), publisher, cacheProvider);
 
         participantHandler.sendParticipantDeregister();
         verify(publisher).sendParticipantDeregister(any(ParticipantDeregister.class));
-        verify(automationCompositionHandler).undeployInstances();
+    }
+
+    @Test
+    void handleParticipantDeregisterAckTest() {
+        var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class),
+                mock(AutomationCompositionOutHandler.class), mock(ParticipantMessagePublisher.class),
+                mock(CacheProvider.class));
+        var participantDeregisterAck = new ParticipantDeregisterAck();
+        assertDoesNotThrow(() -> participantHandler.handleParticipantDeregisterAck(participantDeregisterAck));
+    }
+
+    @Test
+    void handleParticipantPrimeTest() {
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
+        var publisher = mock(ParticipantMessagePublisher.class);
+        var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class),
+                mock(AutomationCompositionOutHandler.class), publisher, cacheProvider);
+
+        var participantPrime = new ParticipantPrime();
+        participantPrime.setCompositionId(UUID.randomUUID());
+        participantPrime.setParticipantDefinitionUpdates(List.of(createParticipantDefinition()));
+        participantHandler.handleParticipantPrime(participantPrime);
+        verify(cacheProvider).addElementDefinition(any(), any());
+        verify(publisher).sendParticipantPrimeAck(any(ParticipantPrimeAck.class));
+    }
+
+    @Test
+    void handleParticipantDeprimeTest() {
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
+        var publisher = mock(ParticipantMessagePublisher.class);
+        var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class),
+                mock(AutomationCompositionOutHandler.class), publisher, cacheProvider);
+        var participantPrime = new ParticipantPrime();
+        var compositionId = UUID.randomUUID();
+        participantPrime.setCompositionId(compositionId);
+        participantHandler.handleParticipantPrime(participantPrime);
+        verify(cacheProvider).removeElementDefinition(compositionId);
+        verify(publisher).sendParticipantPrimeAck(any(ParticipantPrimeAck.class));
+    }
+
+    @Test
+    void sendHeartbeatTest() {
+        var cacheProvider = mock(CacheProvider.class);
+        when(cacheProvider.getParticipantId()).thenReturn(CommonTestData.getParticipantId());
+        when(cacheProvider.getAutomationCompositions()).thenReturn(CommonTestData.getTestAutomationCompositionMap());
+        var publisher = mock(ParticipantMessagePublisher.class);
+        var participantHandler = new ParticipantHandler(mock(AutomationCompositionHandler.class),
+                mock(AutomationCompositionOutHandler.class), publisher, cacheProvider);
+        participantHandler.sendHeartbeat();
+        verify(publisher).sendHeartbeat(any(ParticipantStatus.class));
+    }
+
+    private ParticipantDefinition createParticipantDefinition() {
+        var def = new ParticipantDefinition();
+        def.setParticipantId(CommonTestData.getParticipantId());
+        return def;
     }
 }
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java
index 60812c2..cc2bd70 100644
--- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java
+++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java
@@ -22,28 +22,19 @@
 
 import java.io.File;
 import java.time.Instant;
-import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 import java.util.UUID;
-import org.mockito.Mockito;
-import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantMessagePublisher;
-import org.onap.policy.clamp.acm.participant.intermediary.handler.AutomationCompositionHandler;
 import org.onap.policy.clamp.acm.participant.intermediary.handler.DummyParticipantParameters;
-import org.onap.policy.clamp.acm.participant.intermediary.handler.ParticipantHandler;
 import org.onap.policy.clamp.acm.participant.intermediary.parameters.ParticipantIntermediaryParameters;
 import org.onap.policy.clamp.models.acm.concepts.AutomationComposition;
-import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElement;
 import org.onap.policy.clamp.models.acm.concepts.AutomationCompositions;
-import org.onap.policy.clamp.models.acm.concepts.DeployState;
 import org.onap.policy.clamp.models.acm.concepts.ParticipantSupportedElementType;
 import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionStateChange;
-import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantDeregisterAck;
 import org.onap.policy.clamp.models.acm.messages.rest.instantiation.DeployOrder;
 import org.onap.policy.clamp.models.acm.messages.rest.instantiation.LockOrder;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
 import org.onap.policy.common.endpoints.parameters.TopicParameters;
 import org.onap.policy.common.utils.coder.Coder;
 import org.onap.policy.common.utils.coder.CoderException;
@@ -59,7 +50,6 @@
     public static final long TIME_INTERVAL = 2000;
     public static final List<TopicParameters> TOPIC_PARAMS = List.of(getTopicParams());
     public static final Coder CODER = new StandardCoder();
-    private static final Object lockit = new Object();
     public static final UUID AC_ID_0 = UUID.randomUUID();
     public static final UUID AC_ID_1 = UUID.randomUUID();
     public static final UUID PARTCICIPANT_ID = UUID.randomUUID();
@@ -69,7 +59,7 @@
      *
      * @return ParticipantIntermediaryParameters
      */
-    public ParticipantIntermediaryParameters getParticipantIntermediaryParameters() {
+    public static ParticipantIntermediaryParameters getParticipantIntermediaryParameters() {
         try {
             return CODER.convert(getIntermediaryParametersMap(PARTICIPANT_GROUP_NAME),
                     ParticipantIntermediaryParameters.class);
@@ -170,70 +160,6 @@
     }
 
     /**
-     * Returns a participantMessagePublisher for MessageSender.
-     *
-     * @return participant Message Publisher
-     */
-    private ParticipantMessagePublisher getParticipantMessagePublisher() {
-        synchronized (lockit) {
-            var participantMessagePublisher = new ParticipantMessagePublisher();
-            participantMessagePublisher.active(Collections.singletonList(Mockito.mock(TopicSink.class)));
-            return participantMessagePublisher;
-        }
-    }
-
-    /**
-     * Returns a mocked AutomationCompositionHandler for test cases.
-     *
-     * @return AutomationCompositionHandler
-     */
-    public AutomationCompositionHandler getMockAutomationCompositionHandler() {
-        return new AutomationCompositionHandler(getParticipantParameters(), getParticipantMessagePublisher());
-    }
-
-    /**
-     * Returns a mocked ParticipantHandler for test cases.
-     *
-     * @return participant Handler
-     */
-    public ParticipantHandler getMockParticipantHandler() {
-        var parameters = getParticipantParameters();
-        var automationCompositionHandler = getMockAutomationCompositionHandler();
-        var publisher = new ParticipantMessagePublisher();
-        publisher.active(Collections.singletonList(Mockito.mock(TopicSink.class)));
-        return new ParticipantHandler(parameters, publisher, automationCompositionHandler);
-    }
-
-    public ParticipantHandler getParticipantHandlerAutomationCompositions() {
-        var automationCompositionHandler = Mockito.mock(AutomationCompositionHandler.class);
-        return getParticipantHandlerAutomationCompositions(automationCompositionHandler);
-    }
-
-    /**
-     * Returns a mocked ParticipantHandler for test cases.
-     *
-     * @return participant Handler
-     *
-     * @throws CoderException if there is an error with .json file.
-     */
-    public ParticipantHandler getParticipantHandlerAutomationCompositions(
-            AutomationCompositionHandler automationCompositionHandler) {
-        Mockito.doReturn(getTestAutomationCompositionMap()).when(automationCompositionHandler)
-                .getAutomationCompositionMap();
-        var publisher = new ParticipantMessagePublisher();
-        publisher.active(Collections.singletonList(Mockito.mock(TopicSink.class)));
-        var parameters = getParticipantParameters();
-        var participantHandler = new ParticipantHandler(parameters, publisher, automationCompositionHandler);
-        participantHandler.sendParticipantRegister();
-        participantHandler.handleParticipantStatusReq(null);
-        participantHandler.sendParticipantDeregister();
-        var participantDeregisterAckMsg = new ParticipantDeregisterAck();
-        participantDeregisterAckMsg.setResponseTo(UUID.randomUUID());
-        participantHandler.handleParticipantDeregisterAck(participantDeregisterAckMsg);
-        return participantHandler;
-    }
-
-    /**
      * Returns a Map of ToscaConceptIdentifier and AutomationComposition for test cases.
      *
      * @return automationCompositionMap
@@ -269,59 +195,21 @@
     }
 
     /**
-     * Returns a map for a elementsOnThisParticipant for test cases.
-     *
-     * @param uuid UUID
-     * @param definition ToscaConceptIdentifier
-     * @return a map suitable for elementsOnThisParticipant
-     */
-    public Map<UUID, AutomationCompositionElement> setAutomationCompositionElementTest(UUID uuid,
-            ToscaConceptIdentifier definition, UUID participantId) {
-        var acElement = new AutomationCompositionElement();
-        acElement.setId(uuid);
-        acElement.setParticipantId(participantId);
-        acElement.setDefinition(definition);
-        acElement.setDeployState(DeployState.UNDEPLOYED);
-
-        Map<UUID, AutomationCompositionElement> elementsOnThisParticipant = new LinkedHashMap<>();
-        elementsOnThisParticipant.put(uuid, acElement);
-        return elementsOnThisParticipant;
-    }
-
-    /**
-     * Returns a AutomationCompositionHandler with elements on the definition,uuid.
-     *
-     * @param definition ToscaConceptIdentifier
-     * @param  uuid UUID
-     * @return a AutomationCompositionHander with elements
-     */
-    public AutomationCompositionHandler setTestAutomationCompositionHandler(ToscaConceptIdentifier definition,
-            UUID uuid, UUID participantId) {
-        var ach = getMockAutomationCompositionHandler();
-        ach.getAutomationCompositionMap().putAll(getTestAutomationCompositionMap());
-        var acKey = ach.getAutomationCompositionMap().keySet().iterator().next();
-        ach.getAutomationCompositionMap().get(acKey)
-                .setElements(setAutomationCompositionElementTest(uuid, definition, participantId));
-
-        return ach;
-    }
-
-    /**
      * Return a AutomationCompositionStateChange.
      *
      * @param participantId the participantId
-     * @param  uuid UUID
+     * @param instanceId th AutomationComposition Id
      * @param deployOrder a DeployOrder
      * @param lockOrder a LockOrder
      * @return a AutomationCompositionStateChange
      */
-    public AutomationCompositionStateChange getStateChange(UUID participantId, UUID uuid,
+    public static AutomationCompositionStateChange getStateChange(UUID participantId, UUID instanceId,
             DeployOrder deployOrder, LockOrder lockOrder) {
         var stateChange = new AutomationCompositionStateChange();
         stateChange.setStartPhase(0);
-        stateChange.setAutomationCompositionId(UUID.randomUUID());
+        stateChange.setAutomationCompositionId(instanceId);
         stateChange.setParticipantId(participantId);
-        stateChange.setMessageId(uuid);
+        stateChange.setMessageId(UUID.randomUUID());
         stateChange.setDeployOrderedState(deployOrder);
         stateChange.setLockOrderedState(lockOrder);
         stateChange.setTimestamp(Instant.ofEpochMilli(3000));
diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/TestParticipantIntermediaryParameters.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/TestParticipantIntermediaryParameters.java
index 2cbe157..e3631f1 100644
--- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/TestParticipantIntermediaryParameters.java
+++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/TestParticipantIntermediaryParameters.java
@@ -32,20 +32,19 @@
  * {@link org.onap.policy.clamp.acm.participant.intermediary.parameters.ParticipantParameters}.
  */
 class TestParticipantIntermediaryParameters {
-    private final CommonTestData commonTestData = new CommonTestData();
     private final ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
 
     @Test
     void testParticipantIntermediaryParameterGroup() {
         final ParticipantIntermediaryParameters participantParameters =
-                commonTestData.getParticipantIntermediaryParameters();
+                CommonTestData.getParticipantIntermediaryParameters();
         assertThat(validatorFactory.getValidator().validate(participantParameters)).isEmpty();
     }
 
     @Test
     void testParticipantIntermediaryParameterGroup_EmptyParameter() {
         final ParticipantIntermediaryParameters participantParameters =
-                commonTestData.getParticipantIntermediaryParameters();
+                CommonTestData.getParticipantIntermediaryParameters();
         participantParameters.setClampAutomationCompositionTopics(null);
         assertThat(validatorFactory.getValidator().validate(participantParameters)).isNotEmpty();
     }
@@ -53,7 +52,7 @@
     @Test
     void testParticipantIntermediaryParameters_NullTopicSinks() {
         final ParticipantIntermediaryParameters participantParameters =
-                commonTestData.getParticipantIntermediaryParameters();
+                CommonTestData.getParticipantIntermediaryParameters();
         participantParameters.getClampAutomationCompositionTopics().setTopicSinks(null);
         assertThat(validatorFactory.getValidator().validate(participantParameters)).isNotEmpty();
     }
@@ -61,7 +60,7 @@
     @Test
     void testParticipantIntermediaryParameters_NullTopicSources() {
         final ParticipantIntermediaryParameters participantParameters =
-                commonTestData.getParticipantIntermediaryParameters();
+                CommonTestData.getParticipantIntermediaryParameters();
         participantParameters.getClampAutomationCompositionTopics().setTopicSources(null);
         assertThat(validatorFactory.getValidator().validate(participantParameters)).isNotEmpty();
     }