diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumer.java
index 538b635..4bad4cb 100644
--- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumer.java
+++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumer.java
@@ -30,6 +30,7 @@
 import javax.jms.Session;
 import javax.jms.Topic;
 import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
 import org.onap.policy.apex.service.engine.event.ApexEventException;
 import org.onap.policy.apex.service.engine.event.ApexEventReceiver;
@@ -77,10 +78,10 @@
         jmsConsumerProperties = (JmsCarrierTechnologyParameters) consumerParameters.getCarrierTechnologyParameters();
 
         // Look up the JMS connection factory
-        InitialContext jmsContext = null;
-        ConnectionFactory connectionFactory = null;
+        InitialContext jmsContext;
+        ConnectionFactory connectionFactory;
         try {
-            jmsContext = new InitialContext(jmsConsumerProperties.getJmsConsumerProperties());
+            jmsContext = getInitialContext();
             connectionFactory = (ConnectionFactory) jmsContext.lookup(jmsConsumerProperties.getConnectionFactory());
 
             // Check if we actually got a connection factory
@@ -124,6 +125,17 @@
     }
 
     /**
+     * Construct InitialContext. This function should not be run directly.
+     * Package-private access is set for testing purposes only.
+     *
+     * @return InitialContext
+     * @throws NamingException if a naming exception is encountered
+     */
+    InitialContext getInitialContext() throws NamingException {
+        return new InitialContext(jmsConsumerProperties.getJmsConsumerProperties());
+    }
+
+    /**
      * {@inheritDoc}.
      */
     @Override
diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducer.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducer.java
index 4e5c7a3..44ed810 100644
--- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducer.java
+++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducer.java
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
- *  Modifications Copyright (C) 2019-2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2019-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.
@@ -32,6 +32,7 @@
 import javax.jms.Session;
 import javax.jms.Topic;
 import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import org.onap.policy.apex.service.engine.event.ApexEventException;
 import org.onap.policy.apex.service.engine.event.ApexEventProducer;
 import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
@@ -72,7 +73,8 @@
     private String name = null;
 
     // The peer references for this event handler
-    private Map<EventHandlerPeeredMode, PeeredReference> peerReferenceMap = new EnumMap<>(EventHandlerPeeredMode.class);
+    private final Map<EventHandlerPeeredMode, PeeredReference> peerReferenceMap =
+        new EnumMap<>(EventHandlerPeeredMode.class);
 
     /**
      * {@inheritDoc}.
@@ -91,10 +93,10 @@
         jmsProducerProperties = (JmsCarrierTechnologyParameters) producerParameters.getCarrierTechnologyParameters();
 
         // Look up the JMS connection factory
-        InitialContext jmsContext = null;
-        ConnectionFactory connectionFactory = null;
+        InitialContext jmsContext;
+        ConnectionFactory connectionFactory;
         try {
-            jmsContext = new InitialContext(jmsProducerProperties.getJmsProducerProperties());
+            jmsContext = getInitialContext();
             connectionFactory = (ConnectionFactory) jmsContext.lookup(jmsProducerProperties.getConnectionFactory());
 
             // Check if we actually got a connection factory
@@ -159,6 +161,17 @@
     }
 
     /**
+     * Construct InitialContext. This function should not be run directly.
+     * Package-private access is set for testing purposes only.
+     *
+     * @return InitialContext
+     * @throws NamingException if a naming exception is encountered
+     */
+    public InitialContext getInitialContext() throws NamingException {
+        return new InitialContext(jmsProducerProperties.getJmsProducerProperties());
+    }
+
+    /**
      * {@inheritDoc}.
      */
     @Override
@@ -204,7 +217,7 @@
         }
 
         // The JMS message to send is constructed using the JMS session
-        Message jmsMessage = null;
+        Message jmsMessage;
 
         // Check the type of JMS message to send
         if (jmsProducerProperties.isObjectMessageSending()) {
diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumerTest.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumerTest.java
index 8591d04..e3ead32 100644
--- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumerTest.java
+++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsConsumerTest.java
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2019 Samsung. All rights reserved.
- *  Modifications Copyright (C) 2019-2020 Nordix Foundation.
+ *  Modifications Copyright (C) 2019-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.
@@ -26,10 +26,18 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
+import java.util.Properties;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
 import javax.jms.Message;
-import javax.jms.Session;
+import javax.jms.Topic;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.ArgumentMatchers;
+import org.mockito.Mockito;
 import org.onap.policy.apex.service.engine.event.ApexEventException;
 import org.onap.policy.apex.service.engine.event.ApexEventProducer;
 import org.onap.policy.apex.service.engine.event.ApexEventReceiver;
@@ -41,41 +49,150 @@
 
 public class ApexJmsConsumerTest {
 
-    ApexJmsConsumer apexJmsConsumer = null;
-    EventHandlerParameters consumerParameters = null;
-    ApexEventReceiver incomingEventReceiver = null;
-    ApexEventProducer apexJmsProducer = null;
-    Session jmsSession = null;
-    JmsCarrierTechnologyParameters jmsCarrierTechnologyParameters = null;
+    private static final String CONSUMER_NAME = "TestApexJmsConsumer";
+    private ApexJmsConsumer apexJmsConsumer = null;
+    private EventHandlerParameters consumerParameters = null;
+    private ApexEventReceiver incomingEventReceiver = null;
+    private ApexEventProducer apexJmsProducer = null;
+    private JmsCarrierTechnologyParameters jmsCarrierTechnologyParameters = null;
 
     /**
      * Set up testing.
-     *
-     * @throws Exception on test set up errors.
      */
     @Before
-    public void setUp() throws Exception {
-        apexJmsConsumer = new ApexJmsConsumer();
+    public void setUp() {
+        apexJmsConsumer = Mockito.spy(new ApexJmsConsumer());
         consumerParameters = new EventHandlerParameters();
         apexJmsProducer = new ApexJmsProducer();
     }
 
     @Test
-    public void testInitWithNonJmsCarrierTechnologyParameters() throws ApexEventException {
-        consumerParameters.setCarrierTechnologyParameters(new CarrierTechnologyParameters() {});
-        assertThatThrownBy(() -> apexJmsConsumer.init("TestApexJmsConsumer", consumerParameters, incomingEventReceiver))
+    public void testInitWithNonJmsCarrierTechnologyParameters() {
+        consumerParameters.setCarrierTechnologyParameters(new CarrierTechnologyParameters() {
+        });
+        assertThatThrownBy(
+            () -> apexJmsConsumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver)
+        )
             .isInstanceOf(ApexEventException.class);
     }
 
     @Test
-    public void testInitWithJmsCarrierTechnologyParameters() throws ApexEventException {
+    public void testInitWithJmsCarrierTechnologyParameters() {
         jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
         consumerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
-        assertThatThrownBy(() -> apexJmsConsumer.init("TestApexJmsConsumer", consumerParameters, incomingEventReceiver))
+        assertThatThrownBy(
+            () -> apexJmsConsumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver)
+        )
             .isInstanceOf(ApexEventException.class);
     }
 
     @Test
+    public void testInitNoConnectionFactory() throws NamingException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        consumerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        Mockito.doReturn(null).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(context).when(apexJmsConsumer).getInitialContext();
+
+        assertThatThrownBy(
+            () -> apexJmsConsumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver)
+        )
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void testInitNoConsumerTopic() throws NamingException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        consumerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(null).when(context).lookup(jmsCarrierTechnologyParameters.getConsumerTopic());
+        Mockito.doReturn(context).when(apexJmsConsumer).getInitialContext();
+
+        assertThatThrownBy(
+            () -> apexJmsConsumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver)
+        )
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void testInitNoConnection() throws NamingException, JMSException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        consumerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getConsumerTopic());
+        Mockito.doThrow(JMSException.class)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+
+        Mockito.doReturn(context).when(apexJmsConsumer).getInitialContext();
+
+        assertThatThrownBy(
+            () -> apexJmsConsumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver)
+        )
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void testInitConnectionError() throws NamingException, JMSException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        consumerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getConsumerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doThrow(JMSException.class).when(connection).start();
+        Mockito.doReturn(context).when(apexJmsConsumer).getInitialContext();
+
+        assertThatThrownBy(
+            () -> apexJmsConsumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver)
+        )
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void testInit() throws NamingException, JMSException, ApexEventException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        consumerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getConsumerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(context).when(apexJmsConsumer).getInitialContext();
+
+        apexJmsConsumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
+
+        Mockito.verify(connection, Mockito.times(1)).start();
+    }
+
+    @Test
     public void testStart() {
         assertThatCode(apexJmsConsumer::start).doesNotThrowAnyException();
     }
@@ -93,7 +210,7 @@
     @Test
     public void testSetPeeredReference() {
         PeeredReference peeredReference = new PeeredReference(EventHandlerPeeredMode.REQUESTOR,
-                apexJmsConsumer, apexJmsProducer);
+            apexJmsConsumer, apexJmsProducer);
         apexJmsConsumer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, peeredReference);
         assertNotNull(apexJmsConsumer.getPeeredReference(EventHandlerPeeredMode.REQUESTOR));
     }
@@ -104,14 +221,107 @@
     }
 
     @Test
-    public void testOnMessage() {
+    public void testOnMessageUninitialized() {
         Message jmsMessage = null;
         assertThatThrownBy(() -> apexJmsConsumer.onMessage(jmsMessage))
             .isInstanceOf(ApexEventRuntimeException.class);
     }
 
     @Test
-    public void testStop() {
+    public void testOnMessage() throws JMSException, NamingException, ApexEventException {
+        // prepare ApexJmsConsumer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        consumerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        incomingEventReceiver = Mockito.mock(ApexEventReceiver.class);
+
+
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getConsumerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(context).when(apexJmsConsumer).getInitialContext();
+
+        apexJmsConsumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
+
+        final Message message = Mockito.mock(Message.class);
+
+        apexJmsConsumer.onMessage(message);
+        Mockito
+            .verify(incomingEventReceiver, Mockito.times(1))
+            .receiveEvent(ArgumentMatchers.any(Properties.class), ArgumentMatchers.eq(message));
+    }
+
+    @Test
+    public void testConnectionError() throws NamingException, JMSException, ApexEventException {
+        // prepare ApexJmsConsumer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        consumerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getConsumerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(context).when(apexJmsConsumer).getInitialContext();
+
+        apexJmsConsumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
+
+        Mockito.doThrow(JMSException.class).when(connection).close();
+
+        // do tests
+        apexJmsConsumer.start();
+        assertThatCode(() -> apexJmsConsumer.stop()).doesNotThrowAnyException();
+        Mockito.verify(connection, Mockito.times(1)).close();
+    }
+
+    @Test
+    public void testStop() throws NamingException, JMSException, ApexEventException {
+        // prepare ApexJmsConsumer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        consumerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getConsumerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(context).when(apexJmsConsumer).getInitialContext();
+
+        apexJmsConsumer.init(CONSUMER_NAME, consumerParameters, incomingEventReceiver);
+
+        Mockito.doNothing().when(connection).close();
+
+        apexJmsConsumer.start();
+
+        // do tests
+        apexJmsConsumer.stop();
+        Mockito.verify(connection, Mockito.times(1)).close();
+    }
+
+    @Test
+    public void testStopNoJmsProperties() {
         assertThatThrownBy(apexJmsConsumer::stop).isInstanceOf(NullPointerException.class);
     }
 }
diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducerTest.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducerTest.java
index 09a87f8..708f29f 100644
--- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducerTest.java
+++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/test/java/org/onap/policy/apex/plugins/event/carrier/jms/ApexJmsProducerTest.java
@@ -21,18 +21,33 @@
 
 package org.onap.policy.apex.plugins.event.carrier.jms;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
 
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.Random;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageProducer;
+import javax.jms.ObjectMessage;
 import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.jms.Topic;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 import org.onap.policy.apex.service.engine.event.ApexEvent;
 import org.onap.policy.apex.service.engine.event.ApexEventException;
-import org.onap.policy.apex.service.engine.event.ApexEventProducer;
-import org.onap.policy.apex.service.engine.event.ApexEventReceiver;
 import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
 import org.onap.policy.apex.service.engine.event.PeeredReference;
 import org.onap.policy.apex.service.engine.event.SynchronousEventCache;
@@ -42,43 +57,204 @@
 
 public class ApexJmsProducerTest {
 
-    ApexJmsConsumer apexJmsConsumer = null;
-    EventHandlerParameters producerParameters = null;
-    ApexEventReceiver incomingEventReceiver = null;
-    ApexEventProducer apexJmsProducer = null;
-    Session jmsSession = null;
-    JmsCarrierTechnologyParameters jmsCarrierTechnologyParameters = null;
-    SynchronousEventCache synchronousEventCache = null;
+    private static final String PRODUCER_NAME = "TestApexJmsProducer";
+    private ApexJmsConsumer apexJmsConsumer;
+    private EventHandlerParameters producerParameters;
+    private ApexJmsProducer apexJmsProducer;
+    private JmsCarrierTechnologyParameters jmsCarrierTechnologyParameters;
     private static final long DEFAULT_SYNCHRONOUS_EVENT_TIMEOUT = 1000;
+    private final Random random = new Random();
+    private final PrintStream out = System.out;
 
     /**
      * Set up testing.
      *
-     * @throws Exception on test set up errors.
      */
     @Before
-    public void setUp() throws Exception {
+    public void setUp() {
         apexJmsConsumer = new ApexJmsConsumer();
         producerParameters = new EventHandlerParameters();
-        apexJmsProducer = new ApexJmsProducer();
+        apexJmsProducer = Mockito.spy(new ApexJmsProducer());
+    }
+
+    @After
+    public void tearDown() {
+        // restore system.out
+        System.setOut(out);
     }
 
     @Test
     public void testInitWithNonJmsCarrierTechnologyParameters() {
-        producerParameters.setCarrierTechnologyParameters(new CarrierTechnologyParameters() {});
-        assertThatThrownBy(() -> apexJmsProducer.init("TestApexJmsProducer", producerParameters))
+        producerParameters.setCarrierTechnologyParameters(new CarrierTechnologyParameters() {
+        });
+        assertThatThrownBy(() -> apexJmsProducer.init(PRODUCER_NAME, producerParameters))
             .isInstanceOf(ApexEventException.class);
     }
 
     @Test
-    public void testInitWithJmsCarrierTechnologyParameters() throws ApexEventException {
+    public void testInitWithJmsCarrierTechnologyParameters() {
         jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
         producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
-        assertThatThrownBy(() -> apexJmsProducer.init("TestApexJmsProducer", producerParameters))
+        assertThatThrownBy(() -> apexJmsProducer.init(PRODUCER_NAME, producerParameters))
             .isInstanceOf(ApexEventException.class);
     }
 
     @Test
+    public void testInitWithoutConnectionFactory() throws NamingException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+        final String producerName = RandomStringUtils.randomAlphabetic(5);
+
+        InitialContext context = Mockito.mock(InitialContext.class);
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(null).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+
+        assertThatThrownBy(() -> apexJmsProducer.init(producerName, producerParameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void testInitWithoutTopic() throws NamingException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+        final String producerName = RandomStringUtils.randomAlphabetic(5);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(null).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+
+        assertThatThrownBy(() -> apexJmsProducer.init(producerName, producerParameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void testInitConnectionCreateError() throws NamingException, JMSException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+        final String producerName = RandomStringUtils.randomAlphabetic(5);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doThrow(JMSException.class).when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+
+        assertThatThrownBy(() -> apexJmsProducer.init(producerName, producerParameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void testInitConnectionStartError() throws NamingException, JMSException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+        final String producerName = RandomStringUtils.randomAlphabetic(5);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doThrow(JMSException.class).when(connection).start();
+
+        assertThatThrownBy(() -> apexJmsProducer.init(producerName, producerParameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void testInitSessionCreateError() throws NamingException, JMSException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+        final String producerName = RandomStringUtils.randomAlphabetic(5);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doThrow(JMSException.class).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        assertThatThrownBy(() -> apexJmsProducer.init(producerName, producerParameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void testInitProducerCreateError() throws NamingException, JMSException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+        final String producerName = RandomStringUtils.randomAlphabetic(5);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doThrow(JMSException.class).when(session).createProducer(topic);
+        assertThatThrownBy(() -> apexJmsProducer.init(producerName, producerParameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void testInit() throws NamingException, JMSException {
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+        final String producerName = RandomStringUtils.randomAlphabetic(5);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+
+        assertThatCode(() -> apexJmsProducer.init(producerName, producerParameters))
+            .doesNotThrowAnyException();
+    }
+
+    @Test
     public void testGetName() {
         assertNull(apexJmsProducer.getName());
     }
@@ -91,40 +267,444 @@
     @Test
     public void testSetPeeredReference() {
         PeeredReference peeredReference = new PeeredReference(EventHandlerPeeredMode.REQUESTOR,
-                apexJmsConsumer, apexJmsProducer);
+            apexJmsConsumer, apexJmsProducer);
         apexJmsProducer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, peeredReference);
-        assertNotNull(apexJmsProducer.getPeeredReference(EventHandlerPeeredMode.REQUESTOR));
+        final PeeredReference actual = apexJmsProducer.getPeeredReference(EventHandlerPeeredMode.REQUESTOR);
+        assertSame(peeredReference, actual);
     }
 
     @Test
-    public void testSendEvent() throws ApexEventException {
-        producerParameters.setCarrierTechnologyParameters(new JmsCarrierTechnologyParameters() {});
-        synchronousEventCache = new SynchronousEventCache(EventHandlerPeeredMode.SYNCHRONOUS,
-                apexJmsConsumer, apexJmsProducer, DEFAULT_SYNCHRONOUS_EVENT_TIMEOUT);
-        apexJmsProducer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS,
-                synchronousEventCache);
-        ApexEvent apexEvent = new ApexEvent("testEvent", "testVersion", "testNameSpace",
-                "testSource", "testTarget");
-        assertThatThrownBy(() -> apexJmsProducer.sendEvent(1000L, null, "TestApexJmsProducer", apexEvent))
-            .isInstanceOf(NullPointerException.class);
-    }
-
-    @Test
-    public void testSendEventWithNonSerializableObject() throws ApexEventException {
-        producerParameters.setCarrierTechnologyParameters(new JmsCarrierTechnologyParameters() {});
-        synchronousEventCache = new SynchronousEventCache(EventHandlerPeeredMode.SYNCHRONOUS,
-                apexJmsConsumer, apexJmsProducer, DEFAULT_SYNCHRONOUS_EVENT_TIMEOUT);
-        apexJmsProducer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS,
-                synchronousEventCache);
-
-        ApexJmsProducerTest producerTest = new ApexJmsProducerTest();
-
-        assertThatThrownBy(() -> apexJmsProducer.sendEvent(-1L, null, "TestApexJmsProducer", producerTest))
+    public void testSendEventNotSerializable() {
+        producerParameters.setCarrierTechnologyParameters(new JmsCarrierTechnologyParameters());
+        Object object = new Object();
+        final long executionId = random.nextLong();
+        assertThatThrownBy(() -> apexJmsProducer.sendEvent(executionId, null, PRODUCER_NAME, object))
             .isInstanceOf(ApexEventRuntimeException.class);
     }
 
     @Test
-    public void testStop() {
+    public void testSendEventRemoveCache() {
+        producerParameters.setCarrierTechnologyParameters(new JmsCarrierTechnologyParameters());
+        final SynchronousEventCache synchronousEventCache =
+            Mockito.spy(new SynchronousEventCache(EventHandlerPeeredMode.SYNCHRONOUS,
+                apexJmsConsumer, apexJmsProducer, DEFAULT_SYNCHRONOUS_EVENT_TIMEOUT));
+        apexJmsProducer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS,
+            synchronousEventCache);
+
+        Object object = new Object();
+        final long executionId = random.nextLong();
+
+        assertThatThrownBy(() -> apexJmsProducer.sendEvent(executionId, null, PRODUCER_NAME, object))
+            .isInstanceOf(ApexEventRuntimeException.class);
+        Mockito.verify(synchronousEventCache, Mockito.times(1)).removeCachedEventToApexIfExists(executionId);
+    }
+
+    @Test
+    public void testSendEventCreateObjectMessageError() throws ApexEventException, NamingException, JMSException {
+        // Prepare ApexJmsProducer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+
+        apexJmsProducer.init(RandomStringUtils.random(5), producerParameters);
+
+        // Prepare sendEvent
+
+        ApexEvent apexEvent = new ApexEvent("testEvent", "testVersion", "testNameSpace",
+            "testSource", "testTarget");
+        Mockito.doThrow(JMSException.class).when(session).createObjectMessage(apexEvent);
+
+        final long executionId = random.nextLong();
+
+
+        assertThatThrownBy(() -> apexJmsProducer.sendEvent(executionId, null, PRODUCER_NAME, apexEvent))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void testSendEventCreateObjectMessageSendError() throws ApexEventException, NamingException, JMSException {
+        // Prepare ApexJmsProducer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+
+        apexJmsProducer.init(RandomStringUtils.random(5), producerParameters);
+
+        // Prepare sendEvent
+        final Message message = Mockito.mock(ObjectMessage.class);
+        ApexEvent apexEvent = new ApexEvent("testEvent", "testVersion", "testNameSpace",
+            "testSource", "testTarget");
+        Mockito.doReturn(message).when(session).createObjectMessage(apexEvent);
+        Mockito.doThrow(JMSException.class).when(messageProducer).send(message);
+
+        final long executionId = random.nextLong();
+
+
+        assertThatThrownBy(
+            () -> apexJmsProducer
+                .sendEvent(executionId, null, PRODUCER_NAME, apexEvent)
+        )
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void testSendEventCreateObjectMessageSend() throws ApexEventException, NamingException, JMSException {
+        // Prepare ApexJmsProducer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+
+        apexJmsProducer.init(RandomStringUtils.random(5), producerParameters);
+
+        // Prepare sendEvent
+        final Message message = Mockito.mock(ObjectMessage.class);
+        ApexEvent apexEvent = new ApexEvent("testEvent", "testVersion", "testNameSpace",
+            "testSource", "testTarget");
+        Mockito.doReturn(message).when(session).createObjectMessage(apexEvent);
+        Mockito.doNothing().when(messageProducer).send(message);
+
+        final long executionId = random.nextLong();
+
+
+        assertThatCode(
+            () -> apexJmsProducer
+                .sendEvent(executionId, null, PRODUCER_NAME, apexEvent)
+        )
+            .doesNotThrowAnyException();
+    }
+
+    @Test
+    public void testSendEventCreateTextMessageError() throws ApexEventException, NamingException, JMSException {
+        // Prepare ApexJmsProducer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        jmsCarrierTechnologyParameters.setObjectMessageSending(false);
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+        apexJmsProducer.init(RandomStringUtils.random(5), producerParameters);
+
+        // Prepare sendEvent
+        ApexEvent apexEvent = new ApexEvent("testEvent", "testVersion", "testNameSpace",
+            "testSource", "testTarget");
+
+        Mockito.doThrow(JMSException.class).when(session).createTextMessage(apexEvent.toString());
+
+        final long executionId = random.nextLong();
+
+        assertThatThrownBy(
+            () -> apexJmsProducer
+                .sendEvent(executionId, null, PRODUCER_NAME, apexEvent)
+        )
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void testSendEventCreateTextMessageSendError() throws ApexEventException, NamingException, JMSException {
+        // Prepare ApexJmsProducer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        jmsCarrierTechnologyParameters.setObjectMessageSending(false);
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+
+        apexJmsProducer.init(RandomStringUtils.random(5), producerParameters);
+
+        // Prepare sendEvent
+        final Message message = Mockito.mock(TextMessage.class);
+        ApexEvent apexEvent = new ApexEvent("testEvent", "testVersion", "testNameSpace",
+            "testSource", "testTarget");
+        Mockito.doReturn(message).when(session).createTextMessage(apexEvent.toString());
+        Mockito.doThrow(JMSException.class).when(messageProducer).send(message);
+
+        final long executionId = random.nextLong();
+
+
+        assertThatThrownBy(
+            () -> apexJmsProducer
+                .sendEvent(executionId, null, PRODUCER_NAME, apexEvent)
+        )
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void testSendEventCreateTextMessageSend() throws ApexEventException, NamingException, JMSException {
+        // Prepare ApexJmsProducer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        jmsCarrierTechnologyParameters.setObjectMessageSending(false);
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+
+        apexJmsProducer.init(RandomStringUtils.random(5), producerParameters);
+
+        // Prepare sendEvent
+        final Message message = Mockito.mock(TextMessage.class);
+        ApexEvent apexEvent = new ApexEvent("testEvent", "testVersion", "testNameSpace",
+            "testSource", "testTarget");
+        Mockito.doReturn(message).when(session).createTextMessage(apexEvent.toString());
+        Mockito.doNothing().when(messageProducer).send(message);
+
+        final long executionId = random.nextLong();
+
+
+        assertThatCode(
+            () -> apexJmsProducer.sendEvent(executionId, null, PRODUCER_NAME, apexEvent)
+        )
+            .doesNotThrowAnyException();
+    }
+
+    @Test
+    public void testStopProducerException() throws NamingException, ApexEventException, JMSException {
+        // Prepare ApexJmsProducer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        jmsCarrierTechnologyParameters.setObjectMessageSending(false);
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+
+        apexJmsProducer.init(RandomStringUtils.random(5), producerParameters);
+
+        // Prepare stop mock
+        Mockito.doThrow(JMSException.class).when(messageProducer).close();
+
+        // Prepare system.out
+        final ByteArrayOutputStream testBuffer = new ByteArrayOutputStream();
+        System.setOut(new PrintStream(testBuffer));
+
+        // do the test
+        assertThatCode(apexJmsProducer::stop).doesNotThrowAnyException();
+        assertThat(testBuffer.toString()).contains("failed to close JMS message producer");
+    }
+
+    @Test
+    public void testStopCloseSessionException() throws NamingException, ApexEventException, JMSException {
+        // Prepare ApexJmsProducer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        jmsCarrierTechnologyParameters.setObjectMessageSending(false);
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+
+        apexJmsProducer.init(RandomStringUtils.random(5), producerParameters);
+
+        // Prepare stop mocks
+        Mockito.doNothing().when(messageProducer).close();
+        Mockito.doThrow(JMSException.class).when(session).close();
+
+        // Prepare system.out
+        final ByteArrayOutputStream testBuffer = new ByteArrayOutputStream();
+        System.setOut(new PrintStream(testBuffer));
+
+        // do the test
+        assertThatCode(apexJmsProducer::stop).doesNotThrowAnyException();
+        assertThat(testBuffer.toString()).contains("failed to close the JMS session");
+    }
+
+    @Test
+    public void testStopCloseConnectionException() throws NamingException, ApexEventException, JMSException {
+        // Prepare ApexJmsProducer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        jmsCarrierTechnologyParameters.setObjectMessageSending(false);
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+
+        apexJmsProducer.init(RandomStringUtils.random(5), producerParameters);
+
+        // Prepare stop mocks
+        Mockito.doNothing().when(messageProducer).close();
+        Mockito.doNothing().when(session).close();
+        Mockito.doThrow(JMSException.class).when(connection).close();
+
+        // Prepare system.out
+        final ByteArrayOutputStream testBuffer = new ByteArrayOutputStream();
+        System.setOut(new PrintStream(testBuffer));
+
+        // do the test
+        assertThatCode(apexJmsProducer::stop).doesNotThrowAnyException();
+        assertThat(testBuffer.toString()).contains("close of connection");
+    }
+
+    @Test
+    public void testStop() throws NamingException, JMSException, ApexEventException {
+        // Prepare ApexJmsProducer
+        jmsCarrierTechnologyParameters = new JmsCarrierTechnologyParameters();
+        jmsCarrierTechnologyParameters.setObjectMessageSending(false);
+        producerParameters.setCarrierTechnologyParameters(jmsCarrierTechnologyParameters);
+
+        final InitialContext context = Mockito.mock(InitialContext.class);
+        final ConnectionFactory connectionFactory = Mockito.mock(ConnectionFactory.class);
+        final Topic topic = Mockito.mock(Topic.class);
+        final Connection connection = Mockito.mock(Connection.class);
+        final Session session = Mockito.mock(Session.class);
+        final MessageProducer messageProducer = Mockito.mock(MessageProducer.class);
+
+        Mockito.doReturn(context).when(apexJmsProducer).getInitialContext();
+        Mockito.doReturn(connectionFactory).when(context).lookup(jmsCarrierTechnologyParameters.getConnectionFactory());
+        Mockito.doReturn(topic).when(context).lookup(jmsCarrierTechnologyParameters.getProducerTopic());
+        Mockito.doReturn(connection)
+            .when(connectionFactory)
+            .createConnection(jmsCarrierTechnologyParameters.getSecurityPrincipal(),
+                jmsCarrierTechnologyParameters.getSecurityCredentials());
+        Mockito.doNothing().when(connection).start();
+        Mockito.doReturn(session).when(connection).createSession(false, Session.AUTO_ACKNOWLEDGE);
+        Mockito.doReturn(messageProducer).when(session).createProducer(topic);
+
+        apexJmsProducer.init(RandomStringUtils.random(5), producerParameters);
+
+        // Prepare stop mocks
+        Mockito.doNothing().when(messageProducer).close();
+        Mockito.doNothing().when(session).close();
+        Mockito.doNothing().when(connection).close();
+
+        // do the test
         assertThatCode(apexJmsProducer::stop).doesNotThrowAnyException();
     }
 }
diff --git a/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/pom.xml b/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/pom.xml
index d9f800e..6e562a8 100644
--- a/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/pom.xml
+++ b/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/pom.xml
@@ -1,6 +1,7 @@
 <!--
   ============LICENSE_START=======================================================
    Copyright (C) 2018 Ericsson. All rights reserved.
+   Modifications 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.
@@ -17,8 +18,17 @@
   SPDX-License-Identifier: Apache-2.0
   ============LICENSE_END=========================================================
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-client</artifactId>
+            <version>5.16.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
     <parent>
         <groupId>org.onap.policy.apex-pdp.plugins.plugins-event.plugins-event-protocol</groupId>
         <artifactId>plugins-event-protocol</artifactId>
@@ -27,5 +37,6 @@
 
     <artifactId>plugins-event-protocol-jms</artifactId>
     <name>${project.artifactId}</name>
-    <description>[${project.parent.artifactId}] Plugins for handling events that are being transported as JMS messages</description>
+    <description>[${project.parent.artifactId}] Plugins for handling events that are being transported as JMS messages
+    </description>
 </project>
\ No newline at end of file
diff --git a/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/java/org/onap/policy/apex/plugins/event/protocol/jms/Apex2JmsObjectEventConverter.java b/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/java/org/onap/policy/apex/plugins/event/protocol/jms/Apex2JmsObjectEventConverter.java
index 89e2e81..924765d 100644
--- a/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/java/org/onap/policy/apex/plugins/event/protocol/jms/Apex2JmsObjectEventConverter.java
+++ b/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/java/org/onap/policy/apex/plugins/event/protocol/jms/Apex2JmsObjectEventConverter.java
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
- *  Modifications Copyright (C) 2019 Nordix Foundation.
+ *  Modifications Copyright (C) 2019-2021 Nordix Foundation.
  *  Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -141,4 +141,13 @@
         // Return the single object from the Apex event message
         return apexEvent.values().iterator().next();
     }
+
+    /**
+     * Returns eventProtocolParameters field. Getter used only for testing
+     *
+     * @return eventProtocolParameters
+     */
+    JmsObjectEventProtocolParameters getEventProtocolParameters() {
+        return eventProtocolParameters;
+    }
 }
diff --git a/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/test/org/onap/policy/apex/plugins/event/protocol/jms/Apex2JmsObjectEventConverterTest.java b/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/test/org/onap/policy/apex/plugins/event/protocol/jms/Apex2JmsObjectEventConverterTest.java
new file mode 100644
index 0000000..70c17c3
--- /dev/null
+++ b/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/test/org/onap/policy/apex/plugins/event/protocol/jms/Apex2JmsObjectEventConverterTest.java
@@ -0,0 +1,195 @@
+/*-
+ * ============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.apex.plugins.event.protocol.jms;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.List;
+import javax.jms.JMSException;
+import javax.jms.ObjectMessage;
+import org.apache.activemq.command.ActiveMQObjectMessage;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEvent;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+import org.onap.policy.apex.service.engine.event.impl.apexprotocolplugin.ApexEventProtocolParameters;
+
+public class Apex2JmsObjectEventConverterTest {
+    private Apex2JmsObjectEventConverter converter;
+    private final PrintStream orgOutBuffer = System.out;
+    private ByteArrayOutputStream testOutStream;
+
+    @Before
+    public void setUp() throws Exception {
+        converter = new Apex2JmsObjectEventConverter();
+        testOutStream = new ByteArrayOutputStream();
+        System.setOut(new PrintStream(testOutStream));
+    }
+
+    @After
+    public void tearDown() {
+        System.setOut(orgOutBuffer);
+    }
+
+    @Test
+    public void initNull() {
+        assertThatThrownBy(() -> converter.init(null))
+            .isInstanceOf(NullPointerException.class);
+    }
+
+    @Test
+    public void initWrongClass() {
+        converter.init(new ApexEventProtocolParameters());
+        final String actual = testOutStream.toString();
+        assertThat(actual).contains("specified Event Protocol Parameters properties of typ");
+        assertNull(converter.getEventProtocolParameters());
+    }
+
+    @Test
+    public void init() {
+        final JmsObjectEventProtocolParameters parameters = new JmsObjectEventProtocolParameters();
+        converter.init(parameters);
+        final JmsObjectEventProtocolParameters actual = converter.getEventProtocolParameters();
+        assertSame(parameters, actual);
+    }
+
+    @Test
+    public void toApexEventNull() {
+        final JmsObjectEventProtocolParameters parameters = new JmsObjectEventProtocolParameters();
+        converter.init(parameters);
+        final String eventName = RandomStringUtils.randomAlphabetic(4);
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, null))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void toApexEventObject() {
+        final JmsObjectEventProtocolParameters parameters = new JmsObjectEventProtocolParameters();
+        converter.init(parameters);
+        final String eventName = RandomStringUtils.randomAlphabetic(4);
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, new Object()))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void toApexEventNoParams() {
+        final String eventName = RandomStringUtils.randomAlphabetic(4);
+        ObjectMessage object = new ActiveMQObjectMessage();
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, object))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void toApexEventIncomingObjectIsNull() {
+        final JmsObjectEventProtocolParameters parameters = new JmsObjectEventProtocolParameters();
+
+        converter.init(parameters);
+        final String eventName = RandomStringUtils.randomAlphabetic(4);
+        ObjectMessage object = new ActiveMQObjectMessage();
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, object))
+            .isInstanceOf(NullPointerException.class);
+    }
+
+    @Test
+    public void toApexEvent() throws ApexEventException, JMSException {
+        final JmsObjectEventProtocolParameters parameters = new JmsObjectEventProtocolParameters();
+
+        converter.init(parameters);
+        final String eventName = RandomStringUtils.randomAlphabetic(4);
+        final ObjectMessage object = new ActiveMQObjectMessage();
+        final String value = RandomStringUtils.randomAlphabetic(3);
+        object.setObject(value);
+
+        // Prepare expected object
+        final ApexEvent expectedEvent = new ApexEvent("String" + parameters.getIncomingEventSuffix(),
+            parameters.getIncomingEventVersion(),
+            "java.lang",
+            parameters.getIncomingEventSource(),
+            parameters.getIncomingEventTarget());
+        // Overwrite executionId to match executionId of actual
+        expectedEvent.setExecutionId(1);
+        final Object[] expected = {expectedEvent};
+
+        // Run tested method
+        final List<ApexEvent> actual = converter.toApexEvent(eventName, object);
+        // Overwrite executionId to match executionId of expected
+        actual.get(0).setExecutionId(1);
+        assertArrayEquals(expected, actual.toArray());
+    }
+
+    @Test
+    public void fromApexEventNull() {
+        assertThatThrownBy(() -> converter.fromApexEvent(null))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void fromApexEventEmptyEvent() throws ApexEventException {
+        final ApexEvent apexEvent = new ApexEvent(
+            "a" + RandomStringUtils.randomAlphabetic(3),
+            "a" + RandomStringUtils.randomAlphabetic(3),
+            "a" + RandomStringUtils.randomAlphabetic(3),
+            "",
+            "");
+        assertThatThrownBy(() -> converter.fromApexEvent(apexEvent))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void fromApexEventMultipleEvents() throws ApexEventException {
+        final ApexEvent apexEvent = new ApexEvent(
+            "a" + RandomStringUtils.randomAlphabetic(3),
+            "a" + RandomStringUtils.randomAlphabetic(4),
+            "a" + RandomStringUtils.randomAlphabetic(5),
+            "",
+            "");
+        apexEvent.put(RandomStringUtils.randomAlphabetic(2), new Object());
+        apexEvent.put(RandomStringUtils.randomAlphabetic(6), new Object());
+        assertThatThrownBy(() -> converter.fromApexEvent(apexEvent)).isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void fromApexEventSingleEvent() throws ApexEventException {
+        final ApexEvent apexEvent = new ApexEvent(
+            "a" + RandomStringUtils.randomAlphabetic(3),
+            "a" + RandomStringUtils.randomAlphabetic(3),
+            "a" + RandomStringUtils.randomAlphabetic(3),
+            "",
+            "");
+
+        final Object expected = new Object();
+        apexEvent.put(RandomStringUtils.randomAlphabetic(2), expected);
+
+        final Object actual = converter.fromApexEvent(apexEvent);
+
+        assertSame(expected, actual);
+    }
+}
diff --git a/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/test/org/onap/policy/apex/plugins/event/protocol/jms/Apex2JmsTextEventConverterTest.java b/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/test/org/onap/policy/apex/plugins/event/protocol/jms/Apex2JmsTextEventConverterTest.java
new file mode 100644
index 0000000..9f68b49
--- /dev/null
+++ b/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/test/org/onap/policy/apex/plugins/event/protocol/jms/Apex2JmsTextEventConverterTest.java
@@ -0,0 +1,149 @@
+/*-
+ * ============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.apex.plugins.event.protocol.jms;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+
+import java.util.List;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.parameters.ContextParameterConstants;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
+import org.onap.policy.apex.model.eventmodel.concepts.AxEvents;
+import org.onap.policy.apex.service.engine.event.ApexEvent;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.TextBlock;
+import org.onap.policy.apex.service.engine.event.impl.jsonprotocolplugin.JsonEventProtocolParameters;
+import org.onap.policy.common.parameters.ParameterService;
+
+public class Apex2JmsTextEventConverterTest {
+    private Apex2JmsTextEventConverter converter;
+
+    @Before
+    public void setUp() {
+        converter = new Apex2JmsTextEventConverter();
+        ModelService.registerModel(AxContextSchemas.class, new AxContextSchemas());
+        ModelService.registerModel(AxEvents.class, new AxEvents());
+        ParameterService.register(new SchemaParameters());
+    }
+
+    @After
+    public void tearDown() {
+        ModelService.deregisterModel(AxContextSchema.class);
+        ModelService.deregisterModel(AxEvents.class);
+        ParameterService.deregister(ContextParameterConstants.SCHEMA_GROUP_NAME);
+    }
+
+    @Test
+    public void toApexEventNull() {
+        final String eventName = RandomStringUtils.randomAlphabetic(4);
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, null))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void toApexEventObject() {
+        final String eventName = RandomStringUtils.randomAlphabetic(4);
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, new Object()))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void toApexEventJsonString() throws ApexEventException {
+        final String eventName = RandomStringUtils.randomAlphabetic(4);
+        final String eventVersion = "0.0.1";
+        final String source = RandomStringUtils.randomAlphabetic(5);
+        final String target = RandomStringUtils.randomAlphabetic(6);
+        final String nameSpace = "a.name.space";
+
+        // Prepare Json String to be translated into ApexEvent
+        final TextBlock object =
+            new TextBlock(false, "{\"name\": \"" + eventName + "\", \"version\":\"" + eventVersion + "\"}");
+
+        // Prepare Model service
+        final AxArtifactKey eventKey = new AxArtifactKey(eventName + ":" + eventVersion);
+        final AxEvent axEvent = new AxEvent(eventKey, nameSpace, source, target);
+        ModelService.getModel(AxEvents.class).getEventMap().put(eventKey, axEvent);
+
+        // prepare converter
+        converter.init(new JsonEventProtocolParameters());
+
+        // execute test
+        final List<ApexEvent> apexEvents = converter.toApexEvent(eventName, object);
+
+        final ApexEvent expectedEvent = new ApexEvent(eventName, eventVersion, nameSpace, source, target);
+
+        // Reset executionId
+        expectedEvent.setExecutionId(0);
+        for (ApexEvent event : apexEvents) {
+            event.setExecutionId(0);
+        }
+        Object[] expected = {expectedEvent};
+
+        assertArrayEquals(expected, apexEvents.toArray());
+    }
+
+    @Test
+    public void fromApexNull() {
+        assertThatThrownBy(() -> converter.fromApexEvent(null)).isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void fromApex() throws ApexEventException {
+        final String name = RandomStringUtils.randomAlphabetic(4);
+        final String version = "0.2.3";
+        final String nameSpace = "a.name.space";
+        final String source = RandomStringUtils.randomAlphabetic(6);
+        final String target = RandomStringUtils.randomAlphabetic(7);
+
+        final String expected = "{\n" +
+            "  \"name\": \"" + name + "\",\n" +
+            "  \"version\": \"" + version + "\",\n" +
+            "  \"nameSpace\": \"" + nameSpace + "\",\n" +
+            "  \"source\": \"" + source + "\",\n" +
+            "  \"target\": \"" + target + "\"\n" +
+            "}";
+
+        // Prepare Model service
+        final AxArtifactKey eventKey = new AxArtifactKey(name + ":" + version);
+        final AxEvent axEvent = new AxEvent(eventKey, nameSpace, source, target);
+        ModelService.getModel(AxEvents.class).getEventMap().put(eventKey, axEvent);
+
+        converter.init(new JsonEventProtocolParameters());
+
+        final ApexEvent apexEvent = new ApexEvent(name, version, nameSpace, source, target);
+        final Object actual = converter.fromApexEvent(apexEvent);
+
+        assertEquals(expected, actual);
+    }
+
+}
diff --git a/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/test/org/onap/policy/apex/plugins/event/protocol/jms/JmsObjectEventProtocolParametersTest.java b/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/test/org/onap/policy/apex/plugins/event/protocol/jms/JmsObjectEventProtocolParametersTest.java
new file mode 100644
index 0000000..8baa9d5
--- /dev/null
+++ b/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src/main/test/org/onap/policy/apex/plugins/event/protocol/jms/JmsObjectEventProtocolParametersTest.java
@@ -0,0 +1,53 @@
+/*-
+ * ============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.apex.plugins.event.protocol.jms;
+
+import static org.junit.Assert.assertEquals;
+
+
+import org.junit.Test;
+
+public class JmsObjectEventProtocolParametersTest {
+
+    @Test
+    public void getIncomingEventVersion() {
+        final JmsObjectEventProtocolParameters jmsObjectEventProtocolParameters =
+            new JmsObjectEventProtocolParameters();
+        final String actual = jmsObjectEventProtocolParameters.getIncomingEventVersion();
+        assertEquals("1.0.0", actual);
+    }
+
+    @Test
+    public void getIncomingEventSource() {
+        final JmsObjectEventProtocolParameters jmsObjectEventProtocolParameters =
+            new JmsObjectEventProtocolParameters();
+        final String actual = jmsObjectEventProtocolParameters.getIncomingEventSource();
+        assertEquals("JMS", actual);
+    }
+
+    @Test
+    public void getIncomingEventTarget() {
+        final JmsObjectEventProtocolParameters jmsObjectEventProtocolParameters =
+            new JmsObjectEventProtocolParameters();
+        final String actual = jmsObjectEventProtocolParameters.getIncomingEventTarget();
+        assertEquals("Apex", actual);
+    }
+}
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/PeeredReferenceTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/PeeredReferenceTest.java
new file mode 100644
index 0000000..cadb5c8
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/PeeredReferenceTest.java
@@ -0,0 +1,57 @@
+/*
+ * ============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.apex.service.engine.event;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.ApexFileEventConsumer;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.producer.ApexFileEventProducer;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
+
+public class PeeredReferenceTest {
+
+    @Test
+    public void getPeeredConsumer() {
+        final ApexFileEventConsumer eventConsumer = new ApexFileEventConsumer();
+        final ApexFileEventProducer eventProducer = new ApexFileEventProducer();
+        final EventHandlerPeeredMode peeredMode = EventHandlerPeeredMode.REQUESTOR;
+        final PeeredReference peeredReference =
+            new PeeredReference(peeredMode, eventConsumer, eventProducer);
+
+        final ApexEventConsumer actual = peeredReference.getPeeredConsumer();
+        assertNotNull(actual);
+        assertEquals(peeredReference, actual.getPeeredReference(peeredMode));
+    }
+
+    @Test
+    public void getPeeredProducer() {
+        final ApexEventConsumer eventConsumer = new ApexFileEventConsumer();
+        final ApexEventProducer eventProducer = new ApexFileEventProducer();
+        final EventHandlerPeeredMode peeredMode = EventHandlerPeeredMode.SYNCHRONOUS;
+        final PeeredReference reference =
+            new PeeredReference(peeredMode, eventConsumer, eventProducer);
+
+        final ApexEventProducer actual = reference.getPeeredProducer();
+        assertNotNull(actual);
+        assertEquals(reference, actual.getPeeredReference(peeredMode));
+    }
+}
\ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventConsumerFactoryTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventConsumerFactoryTest.java
new file mode 100644
index 0000000..976376e
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventConsumerFactoryTest.java
@@ -0,0 +1,83 @@
+/*
+ * ============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.apex.service.engine.event.impl;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEventConsumer;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters;
+import org.onap.policy.apex.service.parameters.carriertechnology.RestPluginCarrierTechnologyParameters;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
+
+public class EventConsumerFactoryTest {
+    private EventConsumerFactory factory;
+
+    @Before
+    public void setUp() throws Exception {
+        factory = new EventConsumerFactory();
+    }
+
+    @Test
+    public void createConsumerNoTechnologyParameter() {
+        final String name = RandomStringUtils.randomAlphabetic(6);
+        final EventHandlerParameters parameters = new EventHandlerParameters();
+
+        assertThatThrownBy(() -> factory.createConsumer(name, parameters))
+            .isInstanceOf(NullPointerException.class);
+    }
+
+    @Test
+    public void createConsumerNoConsumerPlugin() {
+        final String name = RandomStringUtils.randomAlphabetic(6);
+        final EventHandlerParameters parameters = new EventHandlerParameters();
+        parameters.setCarrierTechnologyParameters(new RestPluginCarrierTechnologyParameters());
+
+        assertThatThrownBy(() -> factory.createConsumer(name, parameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void createConsumerWrongPluginClassName() {
+        final String name = RandomStringUtils.randomAlphabetic(6);
+        final EventHandlerParameters parameters = new EventHandlerParameters();
+        final RestPluginCarrierTechnologyParameters technologyParameters =
+            new RestPluginCarrierTechnologyParameters();
+        technologyParameters.setEventConsumerPluginClass("java.lang.Object");
+        parameters.setCarrierTechnologyParameters(technologyParameters);
+
+        assertThatThrownBy(() -> factory.createConsumer(name, parameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void createConsumer() throws ApexEventException {
+        final String name = RandomStringUtils.randomAlphabetic(6);
+        final EventHandlerParameters parameters = new EventHandlerParameters();
+        parameters.setCarrierTechnologyParameters(new SuperDooperCarrierTechnologyParameters());
+
+        final ApexEventConsumer actual = factory.createConsumer(name, parameters);
+        assertNotNull(actual);
+    }
+}
\ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProducerFactoryTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProducerFactoryTest.java
new file mode 100644
index 0000000..7e3cb54
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProducerFactoryTest.java
@@ -0,0 +1,83 @@
+/*
+ * ============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.apex.service.engine.event.impl;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventProducer;
+import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters;
+import org.onap.policy.apex.service.parameters.carriertechnology.RestPluginCarrierTechnologyParameters;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
+
+public class EventProducerFactoryTest {
+    private EventProducerFactory factory;
+
+    @Before
+    public void setUp() throws Exception {
+        factory = new EventProducerFactory();
+    }
+
+    @Test
+    public void createConsumerNoTechnologyParameter() {
+        final EventHandlerParameters parameters = new EventHandlerParameters();
+        final String name = RandomStringUtils.randomAlphabetic(4);
+
+        assertThatThrownBy(() -> factory.createProducer(name, parameters))
+            .isInstanceOf(NullPointerException.class);
+    }
+
+    @Test
+    public void createConsumerNoConsumerPlugin() {
+        final EventHandlerParameters parameters = new EventHandlerParameters();
+        final String name = RandomStringUtils.randomAlphabetic(4);
+        parameters.setCarrierTechnologyParameters(new RestPluginCarrierTechnologyParameters());
+
+        assertThatThrownBy(() -> factory.createProducer(name, parameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void createConsumerWrongProducerPluginName() {
+        final EventHandlerParameters parameters = new EventHandlerParameters();
+        final RestPluginCarrierTechnologyParameters technologyParameters =
+            new RestPluginCarrierTechnologyParameters();
+        final String name = RandomStringUtils.randomAlphabetic(4);
+        technologyParameters.setEventProducerPluginClass("java.lang.Object");
+        parameters.setCarrierTechnologyParameters(technologyParameters);
+
+        assertThatThrownBy(() -> factory.createProducer(name, parameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void createConsumer() throws ApexEventException {
+        final EventHandlerParameters parameters = new EventHandlerParameters();
+        parameters.setCarrierTechnologyParameters(new SuperDooperCarrierTechnologyParameters());
+        final String name = RandomStringUtils.randomAlphabetic(4);
+
+        final ApexEventProducer actual = factory.createProducer(name, parameters);
+        assertNotNull(actual);
+    }
+}
\ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProtocolFactoryTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProtocolFactoryTest.java
new file mode 100644
index 0000000..8ed3a9f
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProtocolFactoryTest.java
@@ -0,0 +1,70 @@
+/*
+ * ============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.apex.service.engine.event.impl;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEventProtocolConverter;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+import org.onap.policy.apex.service.engine.event.impl.apexprotocolplugin.ApexEventProtocolParameters;
+import org.onap.policy.apex.service.engine.event.impl.jsonprotocolplugin.JsonEventProtocolParameters;
+import org.onap.policy.apex.service.parameters.eventprotocol.EventProtocolParameters;
+
+public class EventProtocolFactoryTest {
+    private EventProtocolFactory factory;
+
+    @Before
+    public void setUp() throws Exception {
+        factory = new EventProtocolFactory();
+    }
+
+    @Test
+    public void createConsumerNoConsumerPlugin() {
+        final EventProtocolParameters parameters = new ApexEventProtocolParameters();
+        parameters.setEventProtocolPluginClass("");
+        final String name = RandomStringUtils.randomAlphabetic(9);
+
+        assertThatThrownBy(() -> factory.createConverter(name, parameters))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void createConsumer2() {
+        final EventProtocolParameters parameters = new ApexEventProtocolParameters();
+        final String name = RandomStringUtils.randomAlphabetic(9);
+        parameters.setEventProtocolPluginClass("java.lang.Object");
+
+        assertThatThrownBy(() -> factory.createConverter(name, parameters))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void createConsumer() {
+        final EventProtocolParameters parameters = new JsonEventProtocolParameters();
+        final String name = RandomStringUtils.randomAlphabetic(9);
+
+        final ApexEventProtocolConverter actual = factory.createConverter(name, parameters);
+        assertNotNull(actual);
+    }
+}
\ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/Apex2ApexEventConverterTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/Apex2ApexEventConverterTest.java
new file mode 100644
index 0000000..04e87ee
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/Apex2ApexEventConverterTest.java
@@ -0,0 +1,180 @@
+/*
+ * ============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.apex.service.engine.event.impl.apexprotocolplugin;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatNoException;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertSame;
+
+import java.util.List;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEvent;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventList;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+
+public class Apex2ApexEventConverterTest {
+    private Apex2ApexEventConverter converter;
+
+    @Before
+    public void setUp() throws Exception {
+        converter = new Apex2ApexEventConverter();
+    }
+
+    @Test
+    public void initWithNull() {
+        assertThatThrownBy(() -> converter.init(null))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void init() {
+        assertThatNoException()
+            .isThrownBy(() -> converter.init(new ApexEventProtocolParameters()));
+    }
+
+    @Test
+    public void toApexEventWithNull() {
+        final String eventName = RandomStringUtils.randomAlphanumeric(5);
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, null))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void toApexEventWithNonApexEvent() {
+        final String eventName = RandomStringUtils.randomAlphanumeric(5);
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, new Object()))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void toApexEmptyEvent() throws ApexEventException {
+        final String eventName = RandomStringUtils.randomAlphanumeric(4);
+        final String name = RandomStringUtils.randomAlphanumeric(5);
+        final String version = RandomStringUtils.randomAlphanumeric(6);
+        final String nameSpace = "a" + RandomStringUtils.randomAlphanumeric(7);
+        final String source = RandomStringUtils.randomAlphanumeric(8);
+        final String target = RandomStringUtils.randomAlphanumeric(9);
+
+        final ApexEvent event = new ApexEvent(name, version, nameSpace, source, target);
+        final List<ApexEvent> result = converter.toApexEvent(eventName, event);
+        assertThat(result).isEmpty();
+    }
+
+    @Test
+    public void toApexEventWithApexAndOtherFields() throws ApexEventException {
+        final String eventName = RandomStringUtils.randomAlphanumeric(4);
+        final String name1 = RandomStringUtils.randomAlphanumeric(5);
+        final String version1 = RandomStringUtils.randomAlphanumeric(6);
+        final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
+        final String source1 = RandomStringUtils.randomAlphanumeric(8);
+        final String target1 = RandomStringUtils.randomAlphanumeric(9);
+
+        final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1);
+
+        final String key = RandomStringUtils.randomAlphabetic(3);
+        event.put(key, new Object());
+        final List<ApexEvent> result = converter.toApexEvent(eventName, event);
+        Object[] expected = {event};
+        assertArrayEquals(expected, result.toArray());
+    }
+
+    @Test
+    public void toApexEventWithApexAndList() throws ApexEventException {
+        final String eventName = RandomStringUtils.randomAlphanumeric(4);
+        final String name1 = RandomStringUtils.randomAlphanumeric(5);
+        final String version1 = RandomStringUtils.randomAlphanumeric(6);
+        final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
+        final String source1 = RandomStringUtils.randomAlphanumeric(8);
+        final String target1 = RandomStringUtils.randomAlphanumeric(9);
+
+        final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1);
+
+        final ApexEventList eventList = new ApexEventList();
+        eventList.add(event);
+
+        final String name2 = RandomStringUtils.randomAlphanumeric(15);
+        final String version2 = RandomStringUtils.randomAlphanumeric(16);
+        final String nameSpace2 = "b" + RandomStringUtils.randomAlphanumeric(17);
+        final String source2 = RandomStringUtils.randomAlphanumeric(18);
+        final String target2 = RandomStringUtils.randomAlphanumeric(19);
+
+        final ApexEvent parentEvent = new ApexEvent(name2, version2, nameSpace2, source2, target2);
+        final String key = RandomStringUtils.randomAlphabetic(3);
+        parentEvent.put(key, eventList);
+        final List<ApexEvent> result = converter.toApexEvent(eventName, parentEvent);
+        Object[] expected = {event};
+        assertArrayEquals(expected, result.toArray());
+    }
+
+    @Test
+    public void toApexEventWithApexAndListAndOtherFields() throws ApexEventException {
+        final String eventName = RandomStringUtils.randomAlphanumeric(4);
+        final String name1 = RandomStringUtils.randomAlphanumeric(5);
+        final String version1 = RandomStringUtils.randomAlphanumeric(6);
+        final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
+        final String source1 = RandomStringUtils.randomAlphanumeric(8);
+        final String target1 = RandomStringUtils.randomAlphanumeric(9);
+
+        final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1);
+
+        final ApexEventList eventList = new ApexEventList();
+        eventList.add(event);
+
+        final String name2 = RandomStringUtils.randomAlphanumeric(15);
+        final String version2 = RandomStringUtils.randomAlphanumeric(16);
+        final String nameSpace2 = "b" + RandomStringUtils.randomAlphanumeric(17);
+        final String source2 = RandomStringUtils.randomAlphanumeric(18);
+        final String target2 = RandomStringUtils.randomAlphanumeric(19);
+
+        final ApexEvent parentEvent = new ApexEvent(name2, version2, nameSpace2, source2, target2);
+        final String key1 = RandomStringUtils.randomAlphabetic(3);
+        final String key2 = RandomStringUtils.randomAlphabetic(2);
+        parentEvent.put(key1, eventList);
+        parentEvent.put(key2, new Object());
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, parentEvent))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void fromApexEventNull() {
+        assertThatThrownBy(() -> converter.fromApexEvent(null))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void fromApexEvent() throws ApexEventException {
+        final String name1 = RandomStringUtils.randomAlphanumeric(5);
+        final String version1 = RandomStringUtils.randomAlphanumeric(6);
+        final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
+        final String source1 = RandomStringUtils.randomAlphanumeric(8);
+        final String target1 = RandomStringUtils.randomAlphanumeric(9);
+
+        final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1);
+
+        final Object actual = converter.fromApexEvent(event);
+        assertSame(event, actual);
+    }
+
+}
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/ApexEventProtocolParametersTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/ApexEventProtocolParametersTest.java
new file mode 100644
index 0000000..8b39b0a
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/ApexEventProtocolParametersTest.java
@@ -0,0 +1,50 @@
+/*
+ * ============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.apex.service.engine.event.impl.apexprotocolplugin;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Test;
+
+public class ApexEventProtocolParametersTest {
+
+    @Test
+    public void testNoArgConstructor() {
+        final ApexEventProtocolParameters apexEventProtocolParameters = new ApexEventProtocolParameters();
+        final String actual = apexEventProtocolParameters.getLabel();
+        final String pluginClass = apexEventProtocolParameters.getEventProtocolPluginClass();
+
+        assertEquals(ApexEventProtocolParameters.APEX_EVENT_PROTOCOL_LABEL, actual);
+        assertEquals(Apex2ApexEventConverter.class.getName(), pluginClass);
+    }
+
+    @Test
+    public void testConstructor() {
+        final String expected = RandomStringUtils.randomAlphabetic(6);
+        final ApexEventProtocolParameters apexEventProtocolParameters = new ApexEventProtocolParameters(expected);
+        final String actual = apexEventProtocolParameters.getLabel();
+        final String pluginClass = apexEventProtocolParameters.getEventProtocolPluginClass();
+
+        assertEquals(expected, actual);
+        assertEquals(Apex2ApexEventConverter.class.getName(), pluginClass);
+    }
+
+}
\ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/enevent/ApexEvent2EnEventConverterTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/enevent/ApexEvent2EnEventConverterTest.java
new file mode 100644
index 0000000..562760f
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/enevent/ApexEvent2EnEventConverterTest.java
@@ -0,0 +1,100 @@
+/*
+ * ============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.apex.service.engine.event.impl.enevent;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertArrayEquals;
+
+import java.util.List;
+import java.util.Random;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.core.engine.event.EnEvent;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
+import org.onap.policy.apex.service.engine.event.ApexEvent;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+
+public class ApexEvent2EnEventConverterTest {
+    private ApexEvent2EnEventConverter converter;
+    private final Random random = new Random();
+
+    @Before
+    public void setUp() throws Exception {
+        converter = new ApexEvent2EnEventConverter(null);
+    }
+
+    @Test
+    public void toApexEventNull() {
+        final String eventName = RandomStringUtils.randomAlphabetic(3);
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, null))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void toApexEventWrongClass() throws ApexException {
+        final String eventName = RandomStringUtils.randomAlphabetic(3);
+        final String name = RandomStringUtils.randomAlphanumeric(5);
+        final String version = RandomStringUtils.randomAlphanumeric(6);
+        final String nameSpace = "a" + RandomStringUtils.randomAlphanumeric(7);
+        final String source = RandomStringUtils.randomAlphanumeric(8);
+        final String target = RandomStringUtils.randomAlphanumeric(9);
+
+        final ApexEvent event = new ApexEvent(name, version, nameSpace, source, target);
+
+        assertThatThrownBy(() -> converter.toApexEvent(eventName, event))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void toApex() throws ApexException {
+        // prepare String values for events
+        final String name = RandomStringUtils.randomAlphabetic(5);
+        final String version = RandomStringUtils.randomAlphabetic(6);
+        final String nameSpace = "b" + RandomStringUtils.randomAlphabetic(7);
+        final String source = RandomStringUtils.randomAlphabetic(8);
+        final String target = RandomStringUtils.randomAlphabetic(9);
+        final int executionId = random.nextInt(1000);
+        final String exceptionMessage = RandomStringUtils.randomAlphabetic(11);
+
+        // prepare events
+        final AxEvent axEvent = new AxEvent();
+        axEvent.getKey().setName(name);
+        axEvent.getKey().setVersion(version);
+        axEvent.setNameSpace(nameSpace);
+        axEvent.setSource(source);
+        axEvent.setTarget(target);
+        final EnEvent enEvent = new EnEvent(axEvent);
+        enEvent.setExecutionId(executionId);
+        enEvent.setExceptionMessage(exceptionMessage);
+
+        // prepare expected event
+        final ApexEvent apexEvent = new ApexEvent(name, version, nameSpace, source, target);
+        apexEvent.setExecutionId(executionId);
+        apexEvent.setExceptionMessage(exceptionMessage);
+        final Object[] expected = {apexEvent};
+
+        // Test
+        final List<ApexEvent> actual = converter.toApexEvent(RandomStringUtils.randomAlphabetic(3), enEvent);
+        assertArrayEquals(expected, actual.toArray());
+    }
+}
\ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorCarrierTechnologyParametersTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorCarrierTechnologyParametersTest.java
new file mode 100644
index 0000000..c0da816
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorCarrierTechnologyParametersTest.java
@@ -0,0 +1,43 @@
+/*
+ * ============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.apex.service.engine.event.impl.eventrequestor;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+import org.onap.policy.common.parameters.GroupValidationResult;
+
+public class EventRequestorCarrierTechnologyParametersTest {
+
+    @Test
+    public void getName() {
+        final EventRequestorCarrierTechnologyParameters parameters = new EventRequestorCarrierTechnologyParameters();
+        final String actual = parameters.getName();
+        assertEquals(EventRequestorCarrierTechnologyParameters.EVENT_REQUESTOR_CARRIER_TECHNOLOGY_LABEL, actual);
+    }
+
+    @Test
+    public void validate() {
+        final EventRequestorCarrierTechnologyParameters parameters = new EventRequestorCarrierTechnologyParameters();
+        final GroupValidationResult actual = parameters.validate();
+        assertNotNull(actual);
+    }
+}
\ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumerTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumerTest.java
new file mode 100644
index 0000000..dd44da7
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumerTest.java
@@ -0,0 +1,86 @@
+/*
+ * ============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.apex.service.engine.event.impl.eventrequestor;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.PeeredReference;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.ApexFileEventConsumer;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.producer.ApexFileEventProducer;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
+
+public class EventRequestorConsumerTest {
+    private EventRequestorConsumer consumer;
+
+    @Before
+    public void setUp() throws Exception {
+        consumer = new EventRequestorConsumer();
+    }
+
+    @Test
+    public void initNoCarrierTechnologyParameters() {
+        final String consumerName = RandomStringUtils.randomAlphabetic(6);
+        final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+
+        assertThatThrownBy(() -> consumer.init(consumerName, eventHandlerParameters, null))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void initNoPeered() {
+        final String consumerName = RandomStringUtils.randomAlphabetic(6);
+        final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+        eventHandlerParameters.setCarrierTechnologyParameters(new EventRequestorCarrierTechnologyParameters());
+
+        assertThatThrownBy(() -> consumer.init(consumerName, eventHandlerParameters, null))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void getName() throws ApexEventException {
+        final String consumerName = RandomStringUtils.randomAlphabetic(6);
+        final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+        eventHandlerParameters.setCarrierTechnologyParameters(new EventRequestorCarrierTechnologyParameters());
+        eventHandlerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
+
+        consumer.init(consumerName, eventHandlerParameters, null);
+        final String actual = consumer.getName();
+
+        assertEquals(consumerName, actual);
+    }
+
+    @Test
+    public void getSetPeeeredReference() {
+        final PeeredReference peeredReference =
+            new PeeredReference(EventHandlerPeeredMode.REQUESTOR, new ApexFileEventConsumer(),
+                new ApexFileEventProducer());
+        consumer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, peeredReference);
+
+        final PeeredReference actual = consumer.getPeeredReference(EventHandlerPeeredMode.REQUESTOR);
+
+        assertEquals(peeredReference, actual);
+    }
+}
\ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducerTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducerTest.java
new file mode 100644
index 0000000..2f4764f
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducerTest.java
@@ -0,0 +1,161 @@
+/*
+ * ============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.apex.service.engine.event.impl.eventrequestor;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+
+import java.util.Random;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventProducer;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+import org.onap.policy.apex.service.engine.event.PeeredReference;
+import org.onap.policy.apex.service.engine.event.SynchronousEventCache;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.ApexFileEventConsumer;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
+
+public class EventRequestorProducerTest {
+    private final Random random = new Random();
+    private EventRequestorProducer producer;
+
+    @Mock
+    private ApexEventProducer apexProducer;
+    @Mock
+    private EventRequestorConsumer apexConsumer;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        producer = new EventRequestorProducer();
+    }
+
+    @Test
+    public void initWithEmptyParams() {
+        final String producerName = RandomStringUtils.random(4);
+        final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+
+        assertThatThrownBy(() -> producer.init(producerName, eventHandlerParameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void initNotPeered() {
+        final String producerName = RandomStringUtils.random(4);
+        final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+        eventHandlerParameters.setCarrierTechnologyParameters(new EventRequestorCarrierTechnologyParameters());
+
+        assertThatThrownBy(() -> producer.init(producerName, eventHandlerParameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+    @Test
+    public void getName() throws ApexEventException {
+        final String expected = RandomStringUtils.random(4);
+        final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+        eventHandlerParameters.setCarrierTechnologyParameters(new EventRequestorCarrierTechnologyParameters());
+        eventHandlerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
+
+        producer.init(expected, eventHandlerParameters);
+        final String actual = producer.getName();
+
+        assertEquals(expected, actual);
+    }
+
+    @Test
+    public void getSetPeeredReference() {
+        final PeeredReference peeredReference = new PeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, apexConsumer,
+            apexProducer);
+        producer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, peeredReference);
+
+        final PeeredReference actual = this.producer.getPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS);
+        assertEquals(peeredReference, actual);
+    }
+
+    @Test
+    public void sendEventNoRequestor() {
+        final int id = random.nextInt(1000);
+
+        assertThatThrownBy(() -> producer.sendEvent(id, null, null, null))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void sendEventNoEventRequestorConsumer() {
+        final int id = random.nextInt(1000);
+
+        final ApexFileEventConsumer fileEventConsumer = Mockito.mock(ApexFileEventConsumer.class);
+
+        final PeeredReference reference =
+            new PeeredReference(EventHandlerPeeredMode.REQUESTOR, fileEventConsumer, apexProducer);
+
+        producer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, reference);
+
+        assertThatThrownBy(() -> producer.sendEvent(id, null, null, null))
+            .isInstanceOf(ApexEventRuntimeException.class);
+    }
+
+    @Test
+    public void sendEvent() {
+        final int id = random.nextInt(1000);
+        // Prepare mocks
+        final PeeredReference peeredReference = Mockito.mock(PeeredReference.class);
+
+        Mockito.when(apexConsumer.getPeeredReference(Matchers.any())).thenReturn(peeredReference);
+        Mockito.when(peeredReference.getPeeredConsumer()).thenReturn(apexConsumer);
+
+        final PeeredReference reference =
+            new PeeredReference(EventHandlerPeeredMode.REQUESTOR, apexConsumer, apexProducer);
+        producer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, reference);
+
+        producer.sendEvent(id, null, null, null);
+        Mockito.verify(apexConsumer, Mockito.times(1)).processEvent(Matchers.any());
+    }
+
+    @Test
+    public void sendEventCached() {
+        final int id = random.nextInt(1000);
+
+        // Set event cache
+        final SynchronousEventCache eventCache = Mockito.mock(SynchronousEventCache.class);
+        producer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, eventCache);
+
+        // Prepare other mocks
+        final PeeredReference peeredReference = Mockito.mock(PeeredReference.class);
+
+        Mockito.when(peeredReference.getPeeredConsumer()).thenReturn(apexConsumer);
+        Mockito.when(apexConsumer.getPeeredReference(Matchers.any())).thenReturn(peeredReference);
+
+        final PeeredReference reference =
+            new PeeredReference(EventHandlerPeeredMode.REQUESTOR, apexConsumer, apexProducer);
+        producer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, reference);
+
+        producer.sendEvent(id, null, null, null);
+        Mockito.verify(apexConsumer, Mockito.times(1)).processEvent(Matchers.any());
+        Mockito.verify(eventCache, Mockito.times(1)).removeCachedEventToApexIfExists(id);
+    }
+}
\ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockReaderFactoryTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockReaderFactoryTest.java
new file mode 100644
index 0000000..4fa42a7
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockReaderFactoryTest.java
@@ -0,0 +1,79 @@
+/*
+ * ============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.apex.service.engine.event.impl.filecarrierplugin.consumer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.impl.apexprotocolplugin.ApexEventProtocolParameters;
+import org.onap.policy.apex.service.engine.event.impl.jsonprotocolplugin.JsonEventProtocolParameters;
+import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters;
+import org.onap.policy.apex.service.parameters.eventprotocol.EventProtocolParameters;
+
+public class TextBlockReaderFactoryTest {
+    private TextBlockReaderFactory factory;
+
+    @Before
+    public void setUp() throws Exception {
+        factory = new TextBlockReaderFactory();
+    }
+
+    @Test
+    public void getTaggedReaderTextCharDelimitedParametersParams() throws ApexEventException {
+        final String text = RandomStringUtils.randomAlphanumeric(22);
+        final InputStream inputStream = prepareInputStream(text);
+        final EventProtocolParameters parameters = new JsonEventProtocolParameters();
+
+        final TextBlockReader actual = factory.getTaggedReader(inputStream, parameters);
+        assertThat(actual).isNotInstanceOf(HeaderDelimitedTextBlockReader.class);
+    }
+
+    @Test
+    public void getTaggedReaderTextTokenDelimitedParams() throws ApexEventException {
+        final String text = RandomStringUtils.randomAlphanumeric(22);
+        final InputStream inputStream = prepareInputStream(text);
+        new ApexEventProtocolParameters();
+        final EventProtocolParameters parameters = new SuperTokenDelimitedEventProtocolParameters();
+
+        final TextBlockReader actual = factory.getTaggedReader(inputStream, parameters);
+        assertThat(actual).isInstanceOf(HeaderDelimitedTextBlockReader.class);
+    }
+
+    @Test
+    public void getTaggedReaderNotSupportedParams() {
+        final String text = RandomStringUtils.randomAlphanumeric(22);
+        final InputStream inputStream = prepareInputStream(text);
+        final EventProtocolParameters parameters = new ApexEventProtocolParameters();
+        assertThatThrownBy(() -> factory.getTaggedReader(inputStream, parameters))
+            .isInstanceOf(ApexEventException.class);
+    }
+
+
+    private InputStream prepareInputStream(String text) {
+        return new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8));
+    }
+}
\ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockTest.java
new file mode 100644
index 0000000..4390c3f
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockTest.java
@@ -0,0 +1,57 @@
+/*
+ * ============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.apex.service.engine.event.impl.filecarrierplugin.consumer;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Random;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Test;
+
+public class TextBlockTest {
+    private final Random random = new Random();
+
+    @Test
+    public void isEndOfText() {
+        final boolean endOfText = random.nextBoolean();
+        final TextBlock textBlock = new TextBlock(endOfText, null);
+
+        assertEquals(endOfText, textBlock.isEndOfText());
+    }
+
+    @Test
+    public void getText() {
+        final boolean endOfText = random.nextBoolean();
+        final String text = RandomStringUtils.randomAlphanumeric(8);
+        final TextBlock textBlock = new TextBlock(endOfText, text);
+
+        assertEquals(text, textBlock.getText());
+    }
+
+    @Test
+    public void setText() {
+        final boolean endOfText = random.nextBoolean();
+        final String text = RandomStringUtils.randomAlphanumeric(8);
+        final TextBlock textBlock = new TextBlock(endOfText, null);
+
+        textBlock.setText(text);
+        assertEquals(text, textBlock.getText());
+    }
+}
\ No newline at end of file
diff --git a/testsuites/apex-pdp-stability/src/main/resources/apexPdpStabilityTestPlan.jmx b/testsuites/apex-pdp-stability/src/main/resources/apexPdpStabilityTestPlan.jmx
index 7a8777f..afeb77f 100644
--- a/testsuites/apex-pdp-stability/src/main/resources/apexPdpStabilityTestPlan.jmx
+++ b/testsuites/apex-pdp-stability/src/main/resources/apexPdpStabilityTestPlan.jmx
@@ -67,43 +67,43 @@
           </elementProp>
           <elementProp name="threadsTimeOutInMs" elementType="Argument">
             <stringProp name="Argument.name">threadsTimeOutInMs</stringProp>
-            <stringProp name="Argument.value">${__P(threadsTimeOutInMs,150000)}</stringProp>
+            <stringProp name="Argument.value">${__P(threadsTimeOutInMs,5000)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
           <elementProp name="wait" elementType="Argument">
             <stringProp name="Argument.name">wait</stringProp>
-            <stringProp name="Argument.value">${__P(wait,120000)}</stringProp>
+            <stringProp name="Argument.value">${__P(wait,10000)}</stringProp>
             <stringProp name="Argument.desc">Wait time between requests to apex-pdp</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
           <elementProp name="PAP_PORT" elementType="Argument">
             <stringProp name="Argument.name">PAP_PORT</stringProp>
-            <stringProp name="Argument.value">${__P(PAP_PORT,30844)}</stringProp>
+            <stringProp name="Argument.value">${__P(PAP_PORT,30211)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
           <elementProp name="API_PORT" elementType="Argument">
             <stringProp name="Argument.name">API_PORT</stringProp>
-            <stringProp name="Argument.value">${__P(API_PORT,30485)}</stringProp>
+            <stringProp name="Argument.value">${__P(API_PORT,30785)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
           <elementProp name="APEX_PORT" elementType="Argument">
             <stringProp name="Argument.name">APEX_PORT</stringProp>
-            <stringProp name="Argument.value">${__P(APEX_PORT,31686)}</stringProp>
+            <stringProp name="Argument.value">${__P(APEX_PORT,30687)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
           <elementProp name="DMAAP_PORT" elementType="Argument">
             <stringProp name="Argument.name">DMAAP_PORT</stringProp>
-            <stringProp name="Argument.value">${__P(DMAAP_PORT,31499)}</stringProp>
+            <stringProp name="Argument.value">${__P(DMAAP_PORT,31345)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
           <elementProp name="HOSTNAME" elementType="Argument">
             <stringProp name="Argument.name">HOSTNAME</stringProp>
-            <stringProp name="Argument.value">${__P(HOSTNAME,10.2.0.97)}</stringProp>
+            <stringProp name="Argument.value">${__P(HOSTNAME,10.2.0.120)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
           <elementProp name="LOG_PATH" elementType="Argument">
             <stringProp name="Argument.name">LOG_PATH</stringProp>
-            <stringProp name="Argument.value">${__P(LOG_PATH,/home/wayned/apex_stability)}</stringProp>
+            <stringProp name="Argument.value">${__P(LOG_PATH,/home/arkadiusza/apex_stability)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
         </collectionProp>
@@ -157,2296 +157,2287 @@
               <elementProp name="" elementType="HTTPArgument">
                 <boolProp name="HTTPArgument.always_encode">false</boolProp>
                 <stringProp name="Argument.value">{&#xd;
-    &quot;tosca_definitions_version&quot;: &quot;tosca_simple_yaml_1_1_0&quot;,&#xd;
-    &quot;topology_template&quot;: {&#xd;
-        &quot;policies&quot;: [&#xd;
-            {&#xd;
-                &quot;operational.apex.stabilityTestDefaultDomain&quot;: {&#xd;
-                    &quot;type&quot;: &quot;onap.policies.native.Apex&quot;,&#xd;
-                    &quot;type_version&quot;: &quot;1.0.0&quot;,&#xd;
-                    &quot;properties&quot;: {&#xd;
-                        &quot;engineServiceParameters&quot;: {&#xd;
-                            &quot;name&quot;: &quot;MyApexEngine&quot;,&#xd;
-                            &quot;version&quot;: &quot;0.0.1&quot;,&#xd;
-                            &quot;id&quot;: 45,&#xd;
-                            &quot;instanceCount&quot;: 4,&#xd;
-                            &quot;deploymentPort&quot;: 12561,&#xd;
-                            &quot;engineParameters&quot;: {&#xd;
-                                &quot;executorParameters&quot;: {&#xd;
-                                    &quot;JAVASCRIPT&quot;: {&#xd;
-                                        &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters&quot;&#xd;
-                                    }&#xd;
-                                },&#xd;
-                                &quot;contextParameters&quot;: {&#xd;
-                                    &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.context.parameters.ContextParameters&quot;,&#xd;
-                                    &quot;schemaParameters&quot;: {&#xd;
-                                        &quot;Avro&quot;: {&#xd;
-                                            &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters&quot;&#xd;
-                                        },&#xd;
-                                        &quot;Java&quot;: {&#xd;
-                                            &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters&quot;,&#xd;
-                                            &quot;jsonAdapters&quot;: {&#xd;
-                                                &quot;Instant&quot;: {&#xd;
-                                                    &quot;adaptedClass&quot;: &quot;java.time.Instant&quot;,&#xd;
-                                                    &quot;adaptorClass&quot;: &quot;org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter&quot;&#xd;
-                                                }&#xd;
-                                            }&#xd;
-                                        }&#xd;
-                                    }&#xd;
-                                }&#xd;
-                            },&#xd;
-                            &quot;policy_type_impl&quot;: {&#xd;
-                                &quot;apexPolicyModel&quot;: {&#xd;
-                                    &quot;key&quot;: {&#xd;
-                                        &quot;name&quot;: &quot;APEXgRPCPolicy&quot;,&#xd;
-                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                    },&#xd;
-                                    &quot;keyInformation&quot;: {&#xd;
-                                        &quot;key&quot;: {&#xd;
-                                            &quot;name&quot;: &quot;APEXgRPCPolicy_KeyInfo&quot;,&#xd;
-                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                        },&#xd;
-                                        &quot;keyInfoMap&quot;: {&#xd;
-                                            &quot;entry&quot;: [&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;APEXgRPCPolicy&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;APEXgRPCPolicy&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;b8424cdb-29fb-3566-b77a-f4f847d81cc9&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;APEXgRPCPolicy_Albums&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;APEXgRPCPolicy_Albums&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;9922906c-ccaa-34f7-95e2-bcc36e77821b&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Albums:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;APEXgRPCPolicy_Events&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;APEXgRPCPolicy_Events&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;5bf28afd-787c-3138-a3e1-b33ad94a038a&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Events:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;APEXgRPCPolicy_KeyInfo&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;APEXgRPCPolicy_KeyInfo&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;68abaa6f-8d03-3a53-9590-007115817d5c&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_KeyInfo:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;APEXgRPCPolicy_Policies&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;APEXgRPCPolicy_Policies&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;819d06c3-33c2-3031-aa78-96281aa4270a&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Policies:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;APEXgRPCPolicy_Schemas&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;APEXgRPCPolicy_Schemas&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;8e67d466-f990-3a39-9fd7-4490cac342dc&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Schemas:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;APEXgRPCPolicy_Tasks&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;APEXgRPCPolicy_Tasks&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;4668db3d-6fe2-3885-8e47-f30cd0102f0a&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Tasks:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;6e5fa19b-14df-37e3-a4ae-8c537e861a82&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSActionIdentifiersType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;8350ac5e-c157-38b9-9614-a0f93a830e60&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSCreateSubscriptionPayloadType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;12658406-9147-3c9d-a38c-5ad5e30b092b&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSDeleteSubscriptionPayloadType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;35590ac0-062c-39f1-8786-b4ff716e30b1&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSRequestCommonHeaderType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;dd7e1805-885a-350b-aaf9-ed541321ae3c&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseCommonHeaderType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;15161037-9ac8-3223-820f-4e743562a345&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseEvent:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;97dc5f58-25bb-3c20-8d53-fdb70d7ca256&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponsePayloadType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;c28b05a8-7436-3ac0-82ca-6d5fc18c9584&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponsePolicy:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;7986e21b-32f7-302e-9554-31f21b673493&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseStatusEvent:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;92b8a2cf-344e-3ce1-8cc0-2b7d3cb695fa&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseStatusType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;d22c78a5-272c-391d-8083-28588280caf9&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseTask:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;92162397-1a8e-3a3f-a469-d2af7700af4a&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionPayloadEvent:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;bc0c69f0-52ed-38ea-b468-ae4a6fd1730d&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionPayloadTask:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;7cfcf843-337e-3f41-b755-5043cb0a08fc&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionRequestEvent:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;89cb75e9-f06c-30d3-b4ff-698d45f63869&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionRequestTask:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;994fa441-04ab-33bb-832d-1cd12ab5d074&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionPayloadEvent:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;0f519117-5fea-3e4b-941f-8f778100465f&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionPayloadTask:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;15d618d8-1689-3a05-89a5-05efa9388f65&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionRequestEvent:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;acb772fe-d442-39e3-98f9-b1080caf4150&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionRequestTask:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;c2bd6f0d-6854-317a-9be2-97c08338428c&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;PMSubscriptionAlbum:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;992b7819-9f69-3aa0-bb0f-6e45ea15ce05&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;PMSubscriptionOutputEvent:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;73c1c397-4fc3-357f-93b6-a8ad707fbaae&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;PMSubscriptionType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;568b7345-9de1-36d3-b6a3-9b857e6809a1&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;ReceiveEventPolicy:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;6c1c6c45-26e0-3591-94bf-679d20e283f4&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;ReceivePMSubscriptionTask:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;153791fd-ae0a-36a7-88a5-309a7936415d&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SimpleIntType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;8a4957cf-9493-3a76-8c22-a208e23259af&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SimpleStringType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;597643b1-9db1-31ce-85d0-e1c63c43b30b&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SubscriptionStatusType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;184547bb-7d64-3cb2-a273-d7185102c5ce&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SubscriptionType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;6a8cc68e-dfc8-3403-9c6d-071c886b319c&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;UUIDType:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;UUID&quot;: &quot;ead590a3-ba2e-3a01-b6e9-9329f5c8fee1&quot;,&#xd;
-                                                        &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;testPolicyB:0.0.1\&quot;&quot;&#xd;
-                                                    }&#xd;
-                                                }&#xd;
-                                            ]&#xd;
-                                        }&#xd;
-                                    },&#xd;
-                                    &quot;policies&quot;: {&#xd;
-                                        &quot;key&quot;: {&#xd;
-                                            &quot;name&quot;: &quot;APEXgRPCPolicy_Policies&quot;,&#xd;
-                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                        },&#xd;
-                                        &quot;policyMap&quot;: {&#xd;
-                                            &quot;entry&quot;: [&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;policyKey&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;template&quot;: &quot;Freestyle&quot;,&#xd;
-                                                        &quot;state&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;CDSResponseState&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;stateKey&quot;: {&#xd;
-                                                                            &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
-                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                            &quot;localName&quot;: &quot;CDSResponseState&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;trigger&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;stateOutputs&quot;: {&#xd;
-                                                                            &quot;entry&quot;: [&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: &quot;ResponseOutput&quot;,&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CDSResponseState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;ResponseOutput&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outgoingEvent&quot;: {&#xd;
-                                                                                            &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
-                                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;nextState&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;NULL&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.0&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;NULL&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                }&#xd;
-                                                                            ]&#xd;
-                                                                        },&#xd;
-                                                                        &quot;contextAlbumReference&quot;: [],&#xd;
-                                                                        &quot;taskSelectionLogic&quot;: {&#xd;
-                                                                            &quot;key&quot;: &quot;NULL&quot;,&#xd;
-                                                                            &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
-                                                                            &quot;logic&quot;: &quot;&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;stateFinalizerLogicMap&quot;: {&#xd;
-                                                                            &quot;entry&quot;: []&#xd;
-                                                                        },&#xd;
-                                                                        &quot;defaultTask&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;taskReferences&quot;: {&#xd;
-                                                                            &quot;entry&quot;: [&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: {&#xd;
-                                                                                        &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
-                                                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                    },&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CDSResponseState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;CDSResponsePolicy&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
-                                                                                        &quot;output&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CDSResponseState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;ResponseOutput&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                }&#xd;
-                                                                            ]&#xd;
-                                                                        }&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;firstState&quot;: &quot;CDSResponseState&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;policyKey&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;template&quot;: &quot;Freestyle&quot;,&#xd;
-                                                        &quot;state&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;stateKey&quot;: {&#xd;
-                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                            &quot;localName&quot;: &quot;CreateOrDeleteState&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;trigger&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;stateOutputs&quot;: {&#xd;
-                                                                            &quot;entry&quot;: [&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: &quot;CreateSubscriptionPayload&quot;,&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;CreateSubscriptionPayload&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outgoingEvent&quot;: {&#xd;
-                                                                                            &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
-                                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;nextState&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;CreateSubscription&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                },&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: &quot;DeleteSubscriptionPayload&quot;,&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;DeleteSubscriptionPayload&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outgoingEvent&quot;: {&#xd;
-                                                                                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
-                                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;nextState&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;DeleteSubscription&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                }&#xd;
-                                                                            ]&#xd;
-                                                                        },&#xd;
-                                                                        &quot;contextAlbumReference&quot;: [&#xd;
-                                                                            {&#xd;
-                                                                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                            }&#xd;
-                                                                        ],&#xd;
-                                                                        &quot;taskSelectionLogic&quot;: {&#xd;
-                                                                            &quot;key&quot;: &quot;TaskSelectionLogic&quot;,&#xd;
-                                                                            &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
-                                                                            &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\nvar changeType = pmSubscriptionInfo.get(\&quot;changeType\&quot;).toString()\n\nif (\&quot;CREATE\&quot;.equals(changeType)) {\n    executor.subject.getTaskKey(\&quot;CreateSubscriptionPayloadTask\&quot;).copyTo(executor.selectedTask);\n}\nelse if (\&quot;DELETE\&quot;.equals(changeType)) {\n    executor.subject.getTaskKey(\&quot;DeleteSubscriptionPayloadTask\&quot;).copyTo(executor.selectedTask);\n}\n\ntrue;&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;stateFinalizerLogicMap&quot;: {&#xd;
-                                                                            &quot;entry&quot;: []&#xd;
-                                                                        },&#xd;
-                                                                        &quot;defaultTask&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;taskReferences&quot;: {&#xd;
-                                                                            &quot;entry&quot;: [&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: {&#xd;
-                                                                                        &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
-                                                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                    },&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
-                                                                                        &quot;output&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;CreateSubscriptionPayload&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                },&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: {&#xd;
-                                                                                        &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
-                                                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                    },&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
-                                                                                        &quot;output&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;DeleteSubscriptionPayload&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                }&#xd;
-                                                                            ]&#xd;
-                                                                        }&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;CreateSubscription&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;stateKey&quot;: {&#xd;
-                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                            &quot;localName&quot;: &quot;CreateSubscription&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;trigger&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;stateOutputs&quot;: {&#xd;
-                                                                            &quot;entry&quot;: [&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: &quot;IssueCreateSubscriptionRequestOutput&quot;,&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CreateSubscription&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;IssueCreateSubscriptionRequestOutput&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outgoingEvent&quot;: {&#xd;
-                                                                                            &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
-                                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;nextState&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;NULL&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.0&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;NULL&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                }&#xd;
-                                                                            ]&#xd;
-                                                                        },&#xd;
-                                                                        &quot;contextAlbumReference&quot;: [&#xd;
-                                                                            {&#xd;
-                                                                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                            }&#xd;
-                                                                        ],&#xd;
-                                                                        &quot;taskSelectionLogic&quot;: {&#xd;
-                                                                            &quot;key&quot;: &quot;NULL&quot;,&#xd;
-                                                                            &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
-                                                                            &quot;logic&quot;: &quot;&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;stateFinalizerLogicMap&quot;: {&#xd;
-                                                                            &quot;entry&quot;: []&#xd;
-                                                                        },&#xd;
-                                                                        &quot;defaultTask&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;taskReferences&quot;: {&#xd;
-                                                                            &quot;entry&quot;: [&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: {&#xd;
-                                                                                        &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
-                                                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                    },&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CreateSubscription&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
-                                                                                        &quot;output&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;CreateSubscription&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;IssueCreateSubscriptionRequestOutput&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                }&#xd;
-                                                                            ]&#xd;
-                                                                        }&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;DeleteSubscription&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;stateKey&quot;: {&#xd;
-                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                            &quot;localName&quot;: &quot;DeleteSubscription&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;trigger&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;stateOutputs&quot;: {&#xd;
-                                                                            &quot;entry&quot;: [&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: &quot;IssueDeleteSubscriptionRequestOutput&quot;,&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;DeleteSubscription&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;IssueDeleteSubscriptionRequestOutput&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outgoingEvent&quot;: {&#xd;
-                                                                                            &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
-                                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;nextState&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;NULL&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.0&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;NULL&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                }&#xd;
-                                                                            ]&#xd;
-                                                                        },&#xd;
-                                                                        &quot;contextAlbumReference&quot;: [&#xd;
-                                                                            {&#xd;
-                                                                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                            }&#xd;
-                                                                        ],&#xd;
-                                                                        &quot;taskSelectionLogic&quot;: {&#xd;
-                                                                            &quot;key&quot;: &quot;NULL&quot;,&#xd;
-                                                                            &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
-                                                                            &quot;logic&quot;: &quot;&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;stateFinalizerLogicMap&quot;: {&#xd;
-                                                                            &quot;entry&quot;: []&#xd;
-                                                                        },&#xd;
-                                                                        &quot;defaultTask&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;taskReferences&quot;: {&#xd;
-                                                                            &quot;entry&quot;: [&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: {&#xd;
-                                                                                        &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
-                                                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                    },&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;DeleteSubscription&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
-                                                                                        &quot;output&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;DeleteSubscription&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;IssueDeleteSubscriptionRequestOutput&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                }&#xd;
-                                                                            ]&#xd;
-                                                                        }&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;stateKey&quot;: {&#xd;
-                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                            &quot;localName&quot;: &quot;ReceiveSubscriptionState&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;trigger&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;stateOutputs&quot;: {&#xd;
-                                                                            &quot;entry&quot;: [&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: &quot;ReceivePMSubscriptionOutput&quot;,&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;ReceivePMSubscriptionOutput&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outgoingEvent&quot;: {&#xd;
-                                                                                            &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
-                                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;nextState&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;CreateOrDeleteState&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                }&#xd;
-                                                                            ]&#xd;
-                                                                        },&#xd;
-                                                                        &quot;contextAlbumReference&quot;: [&#xd;
-                                                                            {&#xd;
-                                                                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                            }&#xd;
-                                                                        ],&#xd;
-                                                                        &quot;taskSelectionLogic&quot;: {&#xd;
-                                                                            &quot;key&quot;: &quot;NULL&quot;,&#xd;
-                                                                            &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
-                                                                            &quot;logic&quot;: &quot;&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;stateFinalizerLogicMap&quot;: {&#xd;
-                                                                            &quot;entry&quot;: []&#xd;
-                                                                        },&#xd;
-                                                                        &quot;defaultTask&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;taskReferences&quot;: {&#xd;
-                                                                            &quot;entry&quot;: [&#xd;
-                                                                                {&#xd;
-                                                                                    &quot;key&quot;: {&#xd;
-                                                                                        &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
-                                                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                                    },&#xd;
-                                                                                    &quot;value&quot;: {&#xd;
-                                                                                        &quot;key&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
-                                                                                        },&#xd;
-                                                                                        &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
-                                                                                        &quot;output&quot;: {&#xd;
-                                                                                            &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
-                                                                                            &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
-                                                                                            &quot;parentLocalName&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
-                                                                                            &quot;localName&quot;: &quot;ReceivePMSubscriptionOutput&quot;&#xd;
-                                                                                        }&#xd;
-                                                                                    }&#xd;
-                                                                                }&#xd;
-                                                                            ]&#xd;
-                                                                        }&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;firstState&quot;: &quot;ReceiveSubscriptionState&quot;&#xd;
-                                                    }&#xd;
-                                                }&#xd;
-                                            ]&#xd;
-                                        }&#xd;
-                                    },&#xd;
-                                    &quot;tasks&quot;: {&#xd;
-                                        &quot;key&quot;: {&#xd;
-                                            &quot;name&quot;: &quot;APEXgRPCPolicy_Tasks&quot;,&#xd;
-                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                        },&#xd;
-                                        &quot;taskMap&quot;: {&#xd;
-                                            &quot;entry&quot;: [&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;inputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;status&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;status&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;outputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;status&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;status&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;taskParameters&quot;: {&#xd;
-                                                            &quot;entry&quot;: []&#xd;
-                                                        },&#xd;
-                                                        &quot;contextAlbumReference&quot;: [&#xd;
-                                                            {&#xd;
-                                                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                            }&#xd;
-                                                        ],&#xd;
-                                                        &quot;taskLogic&quot;: {&#xd;
-                                                            &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
-                                                            &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
-                                                            &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\n\nvar uuidType = java.util.UUID;\n\nvar albumID = uuidType.fromString(\&quot;d0050623-18e5-46c9-9298-9a567990cd7c\&quot;);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(albumID.toString());\n\nvar responseStatus = executor.subject.getOutFieldSchemaHelper(\&quot;status\&quot;).createNewInstance();\n\nresponseStatus.put(\&quot;subscriptionName\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;subscriptionName\&quot;))\nresponseStatus.put(\&quot;nfName\&quot;, pmSubscriptionInfo.get(\&quot;nfName\&quot;))\nresponseStatus.put(\&quot;changeType\&quot;, pmSubscriptionInfo.get(\&quot;changeType\&quot;))\n\nvar response = executor.inFields.get(\&quot;payload\&quot;)\n\nif (\&quot;failure\&quot;.equals(response.get(\&quot;create_DasH_subscription_DasH_response\&quot;).get(\&quot;odl_DasH_response\&quot;).get(\&quot;status\&quot;))) {\n    responseStatus.put(\&quot;message\&quot;, \&quot;failed\&quot;)\n} else {\n    responseStatus.put(\&quot;message\&quot;, \&quot;success\&quot;)\n}\n\nexecutor.outFields.put(\&quot;status\&quot;, responseStatus)\n\ntrue;&quot;&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;inputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;outputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;taskParameters&quot;: {&#xd;
-                                                            &quot;entry&quot;: []&#xd;
-                                                        },&#xd;
-                                                        &quot;contextAlbumReference&quot;: [&#xd;
-                                                            {&#xd;
-                                                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                            }&#xd;
-                                                        ],&#xd;
-                                                        &quot;taskLogic&quot;: {&#xd;
-                                                            &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
-                                                            &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
-                                                            &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\n\nvar payloadProperties = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;create_DasH_subscription_DasH_properties_record\&quot;);\n\npayloadProperties.put(\&quot;nfName\&quot;,  pmSubscriptionInfo.get(\&quot;nfName\&quot;))\npayloadProperties.put(\&quot;subscriptionName\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;subscriptionName\&quot;))\npayloadProperties.put(\&quot;administrativeState\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;administrativeState\&quot;))\npayloadProperties.put(\&quot;fileBasedGP\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileBasedGP\&quot;).toString())\npayloadProperties.put(\&quot;fileLocation\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileLocation\&quot;))\npayloadProperties.put(\&quot;measurementGroups\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;measurementGroups\&quot;))\n\nvar payloadEntry = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;CDSRequestPayloadEntry\&quot;);\npayloadEntry.put(\&quot;create_DasH_subscription_DasH_properties\&quot;, payloadProperties)\n\nvar payload = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewInstance();\npayload.put(\&quot;create_DasH_subscription_DasH_request\&quot;, payloadEntry);\n\nexecutor.outFields.put(\&quot;albumID\&quot;, executor.inFields.get(\&quot;albumID\&quot;))\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending Create Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;inputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;outputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;taskParameters&quot;: {&#xd;
-                                                            &quot;entry&quot;: []&#xd;
-                                                        },&#xd;
-                                                        &quot;contextAlbumReference&quot;: [&#xd;
-                                                            {&#xd;
-                                                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                            }&#xd;
-                                                        ],&#xd;
-                                                        &quot;taskLogic&quot;: {&#xd;
-                                                            &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
-                                                            &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
-                                                            &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\nvar payload = executor.inFields.get(\&quot;payload\&quot;)\nvar actionName = \&quot;create-subscription\&quot;\n\nvar commonHeader = executor.subject.getOutFieldSchemaHelper(\&quot;commonHeader\&quot;).createNewInstance();\ncommonHeader.put(\&quot;originatorId\&quot;, \&quot;sdnc\&quot;);\ncommonHeader.put(\&quot;requestId\&quot;, \&quot;123456-1000\&quot;);\ncommonHeader.put(\&quot;subRequestId\&quot;, \&quot;sub-123456-1000\&quot;);\n\nvar actionIdentifiers = executor.subject.getOutFieldSchemaHelper(\&quot;actionIdentifiers\&quot;).createNewInstance();\nactionIdentifiers.put(\&quot;actionName\&quot;, actionName);\nactionIdentifiers.put(\&quot;blueprintName\&quot;, \&quot;pm_control\&quot;);\nactionIdentifiers.put(\&quot;blueprintVersion\&quot;, \&quot;1.0.0\&quot;);\nactionIdentifiers.put(\&quot;mode\&quot;, \&quot;sync\&quot;);\n\nexecutor.outFields.put(\&quot;commonHeader\&quot;, commonHeader);\nexecutor.outFields.put(\&quot;actionIdentifiers\&quot;, actionIdentifiers);\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending Activate Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;inputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;outputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;taskParameters&quot;: {&#xd;
-                                                            &quot;entry&quot;: []&#xd;
-                                                        },&#xd;
-                                                        &quot;contextAlbumReference&quot;: [&#xd;
-                                                            {&#xd;
-                                                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                            }&#xd;
-                                                        ],&#xd;
-                                                        &quot;taskLogic&quot;: {&#xd;
-                                                            &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
-                                                            &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
-                                                            &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\n\nvar payloadProperties = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;delete_DasH_subscription_DasH_properties_record\&quot;);\n\npayloadProperties.put(\&quot;nfName\&quot;,  pmSubscriptionInfo.get(\&quot;nfName\&quot;))\npayloadProperties.put(\&quot;subscriptionName\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;subscriptionName\&quot;))\npayloadProperties.put(\&quot;administrativeState\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;administrativeState\&quot;))\npayloadProperties.put(\&quot;fileBasedGP\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileBasedGP\&quot;).toString())\npayloadProperties.put(\&quot;fileLocation\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileLocation\&quot;))\npayloadProperties.put(\&quot;measurementGroups\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;measurementGroups\&quot;))\n\nvar payloadEntry = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;CDSRequestPayloadEntry\&quot;);\npayloadEntry.put(\&quot;delete_DasH_subscription_DasH_properties\&quot;, payloadProperties)\n\nvar payload = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewInstance();\npayload.put(\&quot;delete_DasH_subscription_DasH_request\&quot;, payloadEntry);\n\nexecutor.outFields.put(\&quot;albumID\&quot;, executor.inFields.get(\&quot;albumID\&quot;))\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending delete Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;inputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;outputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;taskParameters&quot;: {&#xd;
-                                                            &quot;entry&quot;: []&#xd;
-                                                        },&#xd;
-                                                        &quot;contextAlbumReference&quot;: [&#xd;
-                                                            {&#xd;
-                                                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                            }&#xd;
-                                                        ],&#xd;
-                                                        &quot;taskLogic&quot;: {&#xd;
-                                                            &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
-                                                            &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
-                                                            &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\nvar payload = executor.inFields.get(\&quot;payload\&quot;)\nvar actionName = \&quot;delete-subscription\&quot;\n\nvar commonHeader = executor.subject.getOutFieldSchemaHelper(\&quot;commonHeader\&quot;).createNewInstance();\ncommonHeader.put(\&quot;originatorId\&quot;, \&quot;sdnc\&quot;);\ncommonHeader.put(\&quot;requestId\&quot;, \&quot;123456-1000\&quot;);\ncommonHeader.put(\&quot;subRequestId\&quot;, \&quot;sub-123456-1000\&quot;);\n\nvar actionIdentifiers = executor.subject.getOutFieldSchemaHelper(\&quot;actionIdentifiers\&quot;).createNewInstance();\nactionIdentifiers.put(\&quot;actionName\&quot;, actionName);\nactionIdentifiers.put(\&quot;blueprintName\&quot;, \&quot;pm_control\&quot;);\nactionIdentifiers.put(\&quot;blueprintVersion\&quot;, \&quot;1.0.0\&quot;);\nactionIdentifiers.put(\&quot;mode\&quot;, \&quot;sync\&quot;);\n\nexecutor.outFields.put(\&quot;commonHeader\&quot;, commonHeader);\nexecutor.outFields.put(\&quot;actionIdentifiers\&quot;, actionIdentifiers);\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending Deactivate Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;inputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;changeType&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;changeType&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;nfName&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;nfName&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;policyName&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;policyName&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;subscription&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;subscription&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;outputFields&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        },&#xd;
-                                                        &quot;taskParameters&quot;: {&#xd;
-                                                            &quot;entry&quot;: []&#xd;
-                                                        },&#xd;
-                                                        &quot;contextAlbumReference&quot;: [&#xd;
-                                                            {&#xd;
-                                                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                            }&#xd;
-                                                        ],&#xd;
-                                                        &quot;taskLogic&quot;: {&#xd;
-                                                            &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
-                                                            &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
-                                                            &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\nvar uuidType = java.util.UUID;\n\n\n//albumID will be used to fetch info from our album later\nvar albumID = uuidType.fromString(\&quot;d0050623-18e5-46c9-9298-9a567990cd7c\&quot;);\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).getSchemaHelper().createNewInstance();\nvar returnValue = true;;\n\nif(executor.inFields.get(\&quot;policyName\&quot;) != null) {\n    var changeType = executor.inFields.get(\&quot;changeType\&quot;)\n    var nfName = executor.inFields.get(\&quot;nfName\&quot;)\n    var policyName = executor.inFields.get(\&quot;policyName\&quot;)\n    var closedLoopControlName = executor.inFields.get(\&quot;closedLoopControlName\&quot;)\n    var subscription = executor.inFields.get(\&quot;subscription\&quot;)\n\n    pmSubscriptionInfo.put(\&quot;nfName\&quot;, executor.inFields.get(\&quot;nfName\&quot;));\n    pmSubscriptionInfo.put(\&quot;changeType\&quot;, executor.inFields.get(\&quot;changeType\&quot;))\n    pmSubscriptionInfo.put(\&quot;policyName\&quot;, executor.inFields.get(\&quot;policyName\&quot;))\n    pmSubscriptionInfo.put(\&quot;closedLoopControlName\&quot;, executor.inFields.get(\&quot;closedLoopControlName\&quot;))\n    pmSubscriptionInfo.put(\&quot;subscription\&quot;, subscription)\n\n    executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).put(albumID.toString(), pmSubscriptionInfo);\n\n    executor.outFields.put(\&quot;albumID\&quot;, albumID)\n} else {\n    executor.message = \&quot;Received invalid event\&quot;\n    returnValue = false;\n}\nreturnValue;&quot;&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                }&#xd;
-                                            ]&#xd;
-                                        }&#xd;
-                                    },&#xd;
-                                    &quot;events&quot;: {&#xd;
-                                        &quot;key&quot;: {&#xd;
-                                            &quot;name&quot;: &quot;APEXgRPCPolicy_Events&quot;,&#xd;
-                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                        },&#xd;
-                                        &quot;eventMap&quot;: {&#xd;
-                                            &quot;entry&quot;: [&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
-                                                        &quot;source&quot;: &quot;CDS&quot;,&#xd;
-                                                        &quot;target&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;parameter&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;status&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;status&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
-                                                        &quot;source&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;target&quot;: &quot;DCAE&quot;,&#xd;
-                                                        &quot;parameter&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;status&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;status&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
-                                                        &quot;source&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;target&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;parameter&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
-                                                        &quot;source&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;target&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;parameter&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
-                                                        &quot;source&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;target&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;parameter&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
-                                                        &quot;source&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;target&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;parameter&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;payload&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
-                                                        &quot;source&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;target&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;parameter&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;albumID&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
-                                                        &quot;source&quot;: &quot;DCAE&quot;,&#xd;
-                                                        &quot;target&quot;: &quot;APEX&quot;,&#xd;
-                                                        &quot;parameter&quot;: {&#xd;
-                                                            &quot;entry&quot;: [&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;changeType&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;changeType&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;nfName&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;nfName&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;policyName&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;policyName&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                },&#xd;
-                                                                {&#xd;
-                                                                    &quot;key&quot;: &quot;subscription&quot;,&#xd;
-                                                                    &quot;value&quot;: {&#xd;
-                                                                        &quot;key&quot;: &quot;subscription&quot;,&#xd;
-                                                                        &quot;fieldSchemaKey&quot;: {&#xd;
-                                                                            &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
-                                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                                        },&#xd;
-                                                                        &quot;optional&quot;: false&#xd;
-                                                                    }&#xd;
-                                                                }&#xd;
-                                                            ]&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                }&#xd;
-                                            ]&#xd;
-                                        }&#xd;
-                                    },&#xd;
-                                    &quot;albums&quot;: {&#xd;
-                                        &quot;key&quot;: {&#xd;
-                                            &quot;name&quot;: &quot;APEXgRPCPolicy_Albums&quot;,&#xd;
-                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                        },&#xd;
-                                        &quot;albums&quot;: {&#xd;
-                                            &quot;entry&quot;: [&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;scope&quot;: &quot;policy&quot;,&#xd;
-                                                        &quot;isWritable&quot;: true,&#xd;
-                                                        &quot;itemSchema&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        }&#xd;
-                                                    }&#xd;
-                                                }&#xd;
-                                            ]&#xd;
-                                        }&#xd;
-                                    },&#xd;
-                                    &quot;schemas&quot;: {&#xd;
-                                        &quot;key&quot;: {&#xd;
-                                            &quot;name&quot;: &quot;APEXgRPCPolicy_Schemas&quot;,&#xd;
-                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                        },&#xd;
-                                        &quot;schemas&quot;: {&#xd;
-                                            &quot;entry&quot;: [&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSActionIdentifiers_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;actionName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;blueprintName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;blueprintVersion\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;mode\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;{\n  \&quot;type\&quot;: \&quot;map\&quot;,\n  \&quot;values\&quot;: {\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSRequestPayloadEntry\&quot;,\n    \&quot;fields\&quot;: [\n      {\n        \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_properties\&quot;,\n        \&quot;type\&quot;: {\n          \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_properties_record\&quot;,\n          \&quot;type\&quot;: \&quot;record\&quot;,\n          \&quot;fields\&quot;: [\n            {\n              \&quot;name\&quot;: \&quot;nfName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n              \&quot;type\&quot;: {\n                \&quot;type\&quot;: \&quot;array\&quot;,\n                \&quot;items\&quot;: {\n                  \&quot;name\&quot;: \&quot;measurementGroups_record\&quot;,\n                  \&quot;type\&quot;: \&quot;record\&quot;,\n                  \&quot;fields\&quot;: [\n                    {\n                      \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                      \&quot;type\&quot;: {\n                        \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;measurementTypes_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          },\n                          {\n                            \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;managedObjectDNsBasic_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;DN\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    ]\n  }\n}&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;{\n  \&quot;type\&quot;: \&quot;map\&quot;,\n  \&quot;values\&quot;: {\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSRequestPayloadEntry\&quot;,\n    \&quot;fields\&quot;: [\n      {\n        \&quot;name\&quot;: \&quot;delete_DasH_subscription_DasH_properties\&quot;,\n        \&quot;type\&quot;: {\n          \&quot;name\&quot;: \&quot;delete_DasH_subscription_DasH_properties_record\&quot;,\n          \&quot;type\&quot;: \&quot;record\&quot;,\n          \&quot;fields\&quot;: [\n            {\n              \&quot;name\&quot;: \&quot;nfName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n              \&quot;type\&quot;: {\n                \&quot;type\&quot;: \&quot;array\&quot;,\n                \&quot;items\&quot;: {\n                  \&quot;name\&quot;: \&quot;measurementGroups_record\&quot;,\n                  \&quot;type\&quot;: \&quot;record\&quot;,\n                  \&quot;fields\&quot;: [\n                    {\n                      \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                      \&quot;type\&quot;: {\n                        \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;measurementTypes_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          },\n                          {\n                            \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;managedObjectDNsBasic_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;DN\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    ]\n  }\n}&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSRequestCommonHeader_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;originatorId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;requestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;subRequestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSResponseCommonHeader_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;originatorId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;requestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;subRequestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;timestamp\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;{\n  \&quot;name\&quot;: \&quot;CDSResponsePayloadEntry\&quot;,\n  \&quot;type\&quot;: \&quot;record\&quot;,\n  \&quot;namespace\&quot;: \&quot;com.acme.avro\&quot;,\n  \&quot;fields\&quot;: [\n    {\n      \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_response\&quot;,\n      \&quot;type\&quot;: {\n        \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_response\&quot;,\n        \&quot;type\&quot;: \&quot;record\&quot;,\n        \&quot;fields\&quot;: [\n          {\n            \&quot;name\&quot;: \&quot;odl_DasH_response\&quot;,\n            \&quot;type\&quot;: {\n              \&quot;name\&quot;: \&quot;odl_DasH_response\&quot;,\n              \&quot;type\&quot;: \&quot;record\&quot;,\n              \&quot;fields\&quot;: [\n                  {\n                    \&quot;name\&quot;: \&quot;status\&quot;,\n                    \&quot;type\&quot;: \&quot;string\&quot;\n                  }\n              ]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSResponseStatus_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;code\&quot;,\n            \&quot;type\&quot;: \&quot;int\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;eventType\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;timestamp\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;message\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;{\n  \&quot;name\&quot;: \&quot;PMSubscription\&quot;,\n  \&quot;type\&quot;: \&quot;record\&quot;,\n  \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.pmcontrol\&quot;,\n  \&quot;fields\&quot;: [\n    {\n      \&quot;name\&quot;: \&quot;nfName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;changeType\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;closedLoopControlName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;policyName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;subscription\&quot;,\n      \&quot;type\&quot;: {\n        \&quot;name\&quot;: \&quot;subscription\&quot;,\n        \&quot;type\&quot;: \&quot;record\&quot;,\n        \&quot;fields\&quot;: [\n          {\n            \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n            \&quot;type\&quot;: \&quot;int\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n            \&quot;type\&quot;: {\n              \&quot;type\&quot;: \&quot;array\&quot;,\n              \&quot;items\&quot;: {\n                \&quot;name\&quot;: \&quot;Measurement_Groups_Type\&quot;,\n                \&quot;type\&quot;: \&quot;record\&quot;,\n                \&quot;fields\&quot;: [\n                  {\n                    \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                    \&quot;type\&quot;: {\n                      \&quot;name\&quot;: \&quot;Measurement_Group_Type\&quot;,\n                      \&quot;type\&quot;: \&quot;record\&quot;,\n                      \&quot;fields\&quot;: [\n                        {\n                          \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                          \&quot;type\&quot;: {\n                            \&quot;type\&quot;: \&quot;array\&quot;,\n                            \&quot;items\&quot;: {\n                              \&quot;name\&quot;: \&quot;Measurement_Types_Type\&quot;,\n                              \&quot;type\&quot;: \&quot;record\&quot;,\n                              \&quot;fields\&quot;: [\n                                {\n                                  \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                                  \&quot;type\&quot;: \&quot;string\&quot;\n                                }\n                              ]\n                            }\n                          }\n                        },\n                        {\n                          \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                          \&quot;type\&quot;: {\n                            \&quot;type\&quot;: \&quot;array\&quot;,\n                            \&quot;items\&quot;: {\n                              \&quot;name\&quot;: \&quot;Managed_Object_Dns_Basic_Type\&quot;,\n                              \&quot;type\&quot;: \&quot;record\&quot;,\n                              \&quot;fields\&quot;: [\n                                {\n                                  \&quot;name\&quot;: \&quot;DN\&quot;,\n                                  \&quot;type\&quot;: \&quot;string\&quot;\n                                }\n                              ]\n                            }\n                          }\n                        }\n                      ]\n                    }\n                  }\n                ]\n              }\n            }\n          }\n        ]\n      }\n    }\n  ]\n}&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Java&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;java.lang.Integer&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Java&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;java.lang.String&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;ActivateSubscriptionStatus_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;nfName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;changeType\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;message\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;{\n  \&quot;name\&quot;: \&quot;subscription\&quot;,\n  \&quot;type\&quot;: \&quot;record\&quot;,\n  \&quot;fields\&quot;: [\n    {\n      \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n      \&quot;type\&quot;: \&quot;int\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n      \&quot;type\&quot;: {\n        \&quot;type\&quot;: \&quot;array\&quot;,\n        \&quot;items\&quot;: {\n          \&quot;name\&quot;: \&quot;Measurement_Groups_Type\&quot;,\n          \&quot;type\&quot;: \&quot;record\&quot;,\n          \&quot;fields\&quot;: [\n            {\n              \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n              \&quot;type\&quot;: {\n                \&quot;name\&quot;: \&quot;Measurement_Group_Type\&quot;,\n                \&quot;type\&quot;: \&quot;record\&quot;,\n                \&quot;fields\&quot;: [\n                  {\n                    \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                    \&quot;type\&quot;: {\n                      \&quot;type\&quot;: \&quot;array\&quot;,\n                      \&quot;items\&quot;: {\n                        \&quot;name\&quot;: \&quot;Measurement_Types_Type\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                            \&quot;type\&quot;: \&quot;string\&quot;\n                          }\n                        ]\n                      }\n                    }\n                  },\n                  {\n                    \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                    \&quot;type\&quot;: {\n                      \&quot;type\&quot;: \&quot;array\&quot;,\n                      \&quot;items\&quot;: {\n                        \&quot;name\&quot;: \&quot;Managed_Object_Dns_Basic_Type\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;DN\&quot;,\n                            \&quot;type\&quot;: \&quot;string\&quot;\n                          }\n                        ]\n                      }\n                    }\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    }\n  ]\n}&quot;&#xd;
-                                                    }&#xd;
-                                                },&#xd;
-                                                {&#xd;
-                                                    &quot;key&quot;: {&#xd;
-                                                        &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                    },&#xd;
-                                                    &quot;value&quot;: {&#xd;
-                                                        &quot;key&quot;: {&#xd;
-                                                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
-                                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
-                                                        },&#xd;
-                                                        &quot;schemaFlavour&quot;: &quot;Java&quot;,&#xd;
-                                                        &quot;schemaDefinition&quot;: &quot;java.util.UUID&quot;&#xd;
-                                                    }&#xd;
-                                                }&#xd;
-                                            ]&#xd;
-                                        }&#xd;
-                                    }&#xd;
-                                }&#xd;
-                            }&#xd;
-                        },&#xd;
-                        &quot;eventOutputParameters&quot;: {&#xd;
-                            &quot;logOutputter&quot;: {&#xd;
-                                &quot;carrierTechnologyParameters&quot;: {&#xd;
-                                    &quot;carrierTechnology&quot;: &quot;FILE&quot;,&#xd;
-                                    &quot;parameters&quot;: {&#xd;
-                                        &quot;fileName&quot;: &quot;outputevents.log&quot;&#xd;
-                                    }&#xd;
-                                },&#xd;
-                                &quot;eventProtocolParameters&quot;: {&#xd;
-                                    &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
-                                }&#xd;
-                            },&#xd;
-                            &quot;CDSRequestProducer&quot;: {&#xd;
-                                &quot;carrierTechnologyParameters&quot;: {&#xd;
-                                    &quot;carrierTechnology&quot;: &quot;GRPC&quot;,&#xd;
-                                    &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.grpc.GrpcCarrierTechnologyParameters&quot;,&#xd;
-                                    &quot;parameters&quot;: {&#xd;
-                                        &quot;host&quot;: &quot;10.2.0.97&quot;,&#xd;
-                                        &quot;port&quot;: 30386,&#xd;
-                                        &quot;username&quot;: &quot;ccsdkapps&quot;,&#xd;
-                                        &quot;password&quot;: &quot;ccsdkapps&quot;,&#xd;
-                                        &quot;timeout&quot;: 60&#xd;
-                                    }&#xd;
-                                },&#xd;
-                                &quot;eventProtocolParameters&quot;: {&#xd;
-                                    &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
-                                },&#xd;
-                                &quot;eventNameFilter&quot;: &quot;(Create|Delete)SubscriptionRequestEvent&quot;,&#xd;
-                                &quot;requestorMode&quot;: true,&#xd;
-                                &quot;requestorPeer&quot;: &quot;CDSRequestConsumer&quot;,&#xd;
-                                &quot;requestorTimeout&quot;: 500&#xd;
-                            },&#xd;
-                            &quot;CDSReplyProducer&quot;: {&#xd;
-                                &quot;carrierTechnologyParameters&quot;: {&#xd;
-                                    &quot;carrierTechnology&quot;: &quot;RESTCLIENT&quot;,&#xd;
-                                    &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters&quot;,&#xd;
-                                    &quot;parameters&quot;: {&#xd;
-                                        &quot;url&quot;: &quot;https://message-router:3905/events/POLICY-PDP-PAP&quot;&#xd;
-                                    }&#xd;
-                                },&#xd;
-                                &quot;eventProtocolParameters&quot;: {&#xd;
-                                    &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
-                                },&#xd;
-                                &quot;eventNameFilter&quot;: &quot;CDSResponseStatusEvent&quot;&#xd;
-                            }&#xd;
-                        },&#xd;
-                        &quot;eventInputParameters&quot;: {&#xd;
-                            &quot;DCAEConsumer&quot;: {&#xd;
-                                &quot;carrierTechnologyParameters&quot;: {&#xd;
-                                    &quot;carrierTechnology&quot;: &quot;RESTCLIENT&quot;,&#xd;
-                                    &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters&quot;,&#xd;
-                                    &quot;parameters&quot;: {&#xd;
-                                        &quot;url&quot;: &quot;https://message-router:3905/events/unauthenticated.DCAE_CL_OUTPUT/cg1/c1?timeout=30000&quot;&#xd;
-                                    }&#xd;
-                                },&#xd;
-                                &quot;eventProtocolParameters&quot;: {&#xd;
-                                    &quot;eventProtocol&quot;: &quot;JSON&quot;,&#xd;
-                                    &quot;parameters&quot;: {&#xd;
-                                        &quot;nameAlias&quot;: &quot;testPolicyB&quot;&#xd;
-                                    }&#xd;
-                                },&#xd;
-                                &quot;eventName&quot;: &quot;testPolicyB&quot;,&#xd;
-                                &quot;eventNameFilter&quot;: &quot;testPolicyB&quot;&#xd;
-                            },&#xd;
-                            &quot;CDSRequestConsumer&quot;: {&#xd;
-                                &quot;carrierTechnologyParameters&quot;: {&#xd;
-                                    &quot;carrierTechnology&quot;: &quot;GRPC&quot;,&#xd;
-                                    &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.grpc.GrpcCarrierTechnologyParameters&quot;&#xd;
-                                },&#xd;
-                                &quot;eventProtocolParameters&quot;: {&#xd;
-                                    &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
-                                },&#xd;
-                                &quot;eventName&quot;: &quot;CDSResponseEvent&quot;,&#xd;
-                                &quot;eventNameFilter&quot;: &quot;CDSResponseEvent&quot;,&#xd;
-                                &quot;requestorMode&quot;: true,&#xd;
-                                &quot;requestorPeer&quot;: &quot;CDSRequestProducer&quot;,&#xd;
-                                &quot;requestorTimeout&quot;: 500&#xd;
-                            }&#xd;
-                        }&#xd;
-                    },&#xd;
-                    &quot;name&quot;: &quot;operational.apex.stabilityTestDefaultDomain&quot;,&#xd;
-                    &quot;version&quot;: &quot;1.0.0&quot;,&#xd;
-                    &quot;metadata&quot;: {&#xd;
-                        &quot;policy-id&quot;: &quot;operational.apex.stabilityTestDefaultDomain&quot;,&#xd;
-                        &quot;policy-version&quot;: &quot;1.0.0&quot;&#xd;
+  &quot;tosca_definitions_version&quot;: &quot;tosca_simple_yaml_1_1_0&quot;,&#xd;
+  &quot;topology_template&quot;: {&#xd;
+    &quot;policies&quot;: [&#xd;
+      {&#xd;
+        &quot;operational.apex.stabilityTestDefaultDomain&quot;: {&#xd;
+          &quot;type&quot;: &quot;onap.policies.native.Apex&quot;,&#xd;
+          &quot;type_version&quot;: &quot;1.0.0&quot;,&#xd;
+          &quot;properties&quot;: {&#xd;
+            &quot;engineServiceParameters&quot;: {&#xd;
+              &quot;name&quot;: &quot;MyApexEngine&quot;,&#xd;
+              &quot;version&quot;: &quot;0.0.1&quot;,&#xd;
+              &quot;id&quot;: 45,&#xd;
+              &quot;instanceCount&quot;: 4,&#xd;
+              &quot;deploymentPort&quot;: 12561,&#xd;
+              &quot;engineParameters&quot;: {&#xd;
+                &quot;executorParameters&quot;: {&#xd;
+                  &quot;JAVASCRIPT&quot;: {&#xd;
+                    &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters&quot;&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;contextParameters&quot;: {&#xd;
+                  &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.context.parameters.ContextParameters&quot;,&#xd;
+                  &quot;schemaParameters&quot;: {&#xd;
+                    &quot;Avro&quot;: {&#xd;
+                      &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters&quot;&#xd;
                     }&#xd;
+                  }&#xd;
                 }&#xd;
+              },&#xd;
+              &quot;policy_type_impl&quot;: {&#xd;
+                &quot;apexPolicyModel&quot;: {&#xd;
+                  &quot;key&quot;: {&#xd;
+                    &quot;name&quot;: &quot;APEXgRPCPolicy&quot;,&#xd;
+                    &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                  },&#xd;
+                  &quot;keyInformation&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_KeyInfo&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;keyInfoMap&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;b8424cdb-29fb-3566-b77a-f4f847d81cc9&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_Albums&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_Albums&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;9922906c-ccaa-34f7-95e2-bcc36e77821b&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Albums:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_Events&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_Events&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;5bf28afd-787c-3138-a3e1-b33ad94a038a&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Events:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_KeyInfo&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_KeyInfo&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;68abaa6f-8d03-3a53-9590-007115817d5c&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_KeyInfo:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_Policies&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_Policies&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;819d06c3-33c2-3031-aa78-96281aa4270a&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Policies:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_Schemas&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_Schemas&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;8e67d466-f990-3a39-9fd7-4490cac342dc&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Schemas:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_Tasks&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_Tasks&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;4668db3d-6fe2-3885-8e47-f30cd0102f0a&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Tasks:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;6e5fa19b-14df-37e3-a4ae-8c537e861a82&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSActionIdentifiersType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;8350ac5e-c157-38b9-9614-a0f93a830e60&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSCreateSubscriptionPayloadType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;12658406-9147-3c9d-a38c-5ad5e30b092b&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSDeleteSubscriptionPayloadType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;35590ac0-062c-39f1-8786-b4ff716e30b1&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSRequestCommonHeaderType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;dd7e1805-885a-350b-aaf9-ed541321ae3c&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseCommonHeaderType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;15161037-9ac8-3223-820f-4e743562a345&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;97dc5f58-25bb-3c20-8d53-fdb70d7ca256&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponsePayloadType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;c28b05a8-7436-3ac0-82ca-6d5fc18c9584&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponsePolicy:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;7986e21b-32f7-302e-9554-31f21b673493&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseStatusEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;92b8a2cf-344e-3ce1-8cc0-2b7d3cb695fa&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseStatusType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;d22c78a5-272c-391d-8083-28588280caf9&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;92162397-1a8e-3a3f-a469-d2af7700af4a&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionPayloadEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;bc0c69f0-52ed-38ea-b468-ae4a6fd1730d&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionPayloadTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;7cfcf843-337e-3f41-b755-5043cb0a08fc&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionRequestEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;89cb75e9-f06c-30d3-b4ff-698d45f63869&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionRequestTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;994fa441-04ab-33bb-832d-1cd12ab5d074&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionPayloadEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;0f519117-5fea-3e4b-941f-8f778100465f&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionPayloadTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;15d618d8-1689-3a05-89a5-05efa9388f65&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionRequestEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;acb772fe-d442-39e3-98f9-b1080caf4150&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionRequestTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;c2bd6f0d-6854-317a-9be2-97c08338428c&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;PMSubscriptionAlbum:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;992b7819-9f69-3aa0-bb0f-6e45ea15ce05&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;PMSubscriptionOutputEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;73c1c397-4fc3-357f-93b6-a8ad707fbaae&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;PMSubscriptionType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;568b7345-9de1-36d3-b6a3-9b857e6809a1&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;ReceiveEventPolicy:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;6c1c6c45-26e0-3591-94bf-679d20e283f4&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;ReceivePMSubscriptionTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;153791fd-ae0a-36a7-88a5-309a7936415d&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SimpleIntType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;8a4957cf-9493-3a76-8c22-a208e23259af&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SimpleStringType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;597643b1-9db1-31ce-85d0-e1c63c43b30b&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SubscriptionStatusType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;184547bb-7d64-3cb2-a273-d7185102c5ce&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SubscriptionType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;6a8cc68e-dfc8-3403-9c6d-071c886b319c&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;UUIDType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;ead590a3-ba2e-3a01-b6e9-9329f5c8fee1&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;testPolicyB:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  },&#xd;
+                  &quot;policies&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_Policies&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;policyMap&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;policyKey&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;template&quot;: &quot;Freestyle&quot;,&#xd;
+                            &quot;state&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;CDSResponseState&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;stateKey&quot;: {&#xd;
+                                      &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                                      &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                      &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;localName&quot;: &quot;CDSResponseState&quot;&#xd;
+                                    },&#xd;
+                                    &quot;trigger&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateOutputs&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;ResponseOutput&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CDSResponseState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ResponseOutput&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.0&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;NULL&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    },&#xd;
+                                    &quot;contextAlbumReference&quot;: [],&#xd;
+                                    &quot;taskSelectionLogic&quot;: {&#xd;
+                                      &quot;key&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
+                                      &quot;logic&quot;: &quot;&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateFinalizerLogicMap&quot;: {&#xd;
+                                      &quot;entry&quot;: []&#xd;
+                                    },&#xd;
+                                    &quot;defaultTask&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;taskReferences&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CDSResponseState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;CDSResponsePolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CDSResponseState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ResponseOutput&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    }&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;firstState&quot;: &quot;CDSResponseState&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;policyKey&quot;: {&#xd;
+                              &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;template&quot;: &quot;Freestyle&quot;,&#xd;
+                            &quot;state&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;stateKey&quot;: {&#xd;
+                                      &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                      &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                      &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;localName&quot;: &quot;CreateOrDeleteState&quot;&#xd;
+                                    },&#xd;
+                                    &quot;trigger&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateOutputs&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;CreateSubscriptionPayload&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;CreateSubscriptionPayload&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;CreateSubscription&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        },&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;DeleteSubscriptionPayload&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;DeleteSubscriptionPayload&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;DeleteSubscription&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    },&#xd;
+                                    &quot;contextAlbumReference&quot;: [&#xd;
+                                      {&#xd;
+                                        &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                      }&#xd;
+                                    ],&#xd;
+                                    &quot;taskSelectionLogic&quot;: {&#xd;
+                                      &quot;key&quot;: &quot;TaskSelectionLogic&quot;,&#xd;
+                                      &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                                      &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\nvar changeType = pmSubscriptionInfo.get(\&quot;changeType\&quot;).toString()\n\nif (\&quot;CREATE\&quot;.equals(changeType)) {\n    executor.subject.getTaskKey(\&quot;CreateSubscriptionPayloadTask\&quot;).copyTo(executor.selectedTask);\n}\nelse if (\&quot;DELETE\&quot;.equals(changeType)) {\n    executor.subject.getTaskKey(\&quot;DeleteSubscriptionPayloadTask\&quot;).copyTo(executor.selectedTask);\n}\n\ntrue;&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateFinalizerLogicMap&quot;: {&#xd;
+                                      &quot;entry&quot;: []&#xd;
+                                    },&#xd;
+                                    &quot;defaultTask&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;taskReferences&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;CreateSubscriptionPayload&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        },&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;DeleteSubscriptionPayload&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    }&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;CreateSubscription&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;stateKey&quot;: {&#xd;
+                                      &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                      &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                      &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;localName&quot;: &quot;CreateSubscription&quot;&#xd;
+                                    },&#xd;
+                                    &quot;trigger&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateOutputs&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;IssueCreateSubscriptionRequestOutput&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;IssueCreateSubscriptionRequestOutput&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.0&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;NULL&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    },&#xd;
+                                    &quot;contextAlbumReference&quot;: [&#xd;
+                                      {&#xd;
+                                        &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                      }&#xd;
+                                    ],&#xd;
+                                    &quot;taskSelectionLogic&quot;: {&#xd;
+                                      &quot;key&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
+                                      &quot;logic&quot;: &quot;&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateFinalizerLogicMap&quot;: {&#xd;
+                                      &quot;entry&quot;: []&#xd;
+                                    },&#xd;
+                                    &quot;defaultTask&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;taskReferences&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;IssueCreateSubscriptionRequestOutput&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    }&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;DeleteSubscription&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;stateKey&quot;: {&#xd;
+                                      &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                      &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                      &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;localName&quot;: &quot;DeleteSubscription&quot;&#xd;
+                                    },&#xd;
+                                    &quot;trigger&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateOutputs&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;IssueDeleteSubscriptionRequestOutput&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;DeleteSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;IssueDeleteSubscriptionRequestOutput&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.0&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;NULL&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    },&#xd;
+                                    &quot;contextAlbumReference&quot;: [&#xd;
+                                      {&#xd;
+                                        &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                      }&#xd;
+                                    ],&#xd;
+                                    &quot;taskSelectionLogic&quot;: {&#xd;
+                                      &quot;key&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
+                                      &quot;logic&quot;: &quot;&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateFinalizerLogicMap&quot;: {&#xd;
+                                      &quot;entry&quot;: []&#xd;
+                                    },&#xd;
+                                    &quot;defaultTask&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;taskReferences&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;DeleteSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;DeleteSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;IssueDeleteSubscriptionRequestOutput&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    }&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;stateKey&quot;: {&#xd;
+                                      &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                      &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                      &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;localName&quot;: &quot;ReceiveSubscriptionState&quot;&#xd;
+                                    },&#xd;
+                                    &quot;trigger&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateOutputs&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;ReceivePMSubscriptionOutput&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceivePMSubscriptionOutput&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;CreateOrDeleteState&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    },&#xd;
+                                    &quot;contextAlbumReference&quot;: [&#xd;
+                                      {&#xd;
+                                        &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                      }&#xd;
+                                    ],&#xd;
+                                    &quot;taskSelectionLogic&quot;: {&#xd;
+                                      &quot;key&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
+                                      &quot;logic&quot;: &quot;&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateFinalizerLogicMap&quot;: {&#xd;
+                                      &quot;entry&quot;: []&#xd;
+                                    },&#xd;
+                                    &quot;defaultTask&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;taskReferences&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceivePMSubscriptionOutput&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    }&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;firstState&quot;: &quot;ReceiveSubscriptionState&quot;&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  },&#xd;
+                  &quot;tasks&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_Tasks&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;taskMap&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;status&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;status&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;status&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;status&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\n\nvar uuidType = java.util.UUID;\n\nvar albumID = uuidType.fromString(\&quot;d0050623-18e5-46c9-9298-9a567990cd7c\&quot;);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(albumID.toString());\n\nvar responseStatus = executor.subject.getOutFieldSchemaHelper(\&quot;status\&quot;).createNewInstance();\n\nresponseStatus.put(\&quot;subscriptionName\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;subscriptionName\&quot;))\nresponseStatus.put(\&quot;nfName\&quot;, pmSubscriptionInfo.get(\&quot;nfName\&quot;))\nresponseStatus.put(\&quot;changeType\&quot;, pmSubscriptionInfo.get(\&quot;changeType\&quot;))\n\nvar response = executor.inFields.get(\&quot;payload\&quot;)\n\nif (\&quot;failure\&quot;.equals(response.get(\&quot;create_DasH_subscription_DasH_response\&quot;).get(\&quot;odl_DasH_response\&quot;).get(\&quot;status\&quot;))) {\n    responseStatus.put(\&quot;message\&quot;, \&quot;failed\&quot;)\n} else {\n    responseStatus.put(\&quot;message\&quot;, \&quot;success\&quot;)\n}\n\nexecutor.outFields.put(\&quot;status\&quot;, responseStatus)\n\ntrue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\n\nvar payloadProperties = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;create_DasH_subscription_DasH_properties_record\&quot;);\n\npayloadProperties.put(\&quot;nfName\&quot;,  pmSubscriptionInfo.get(\&quot;nfName\&quot;))\npayloadProperties.put(\&quot;subscriptionName\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;subscriptionName\&quot;))\npayloadProperties.put(\&quot;administrativeState\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;administrativeState\&quot;))\npayloadProperties.put(\&quot;fileBasedGP\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileBasedGP\&quot;).toString())\npayloadProperties.put(\&quot;fileLocation\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileLocation\&quot;))\npayloadProperties.put(\&quot;measurementGroups\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;measurementGroups\&quot;))\n\nvar payloadEntry = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;CDSRequestPayloadEntry\&quot;);\npayloadEntry.put(\&quot;create_DasH_subscription_DasH_properties\&quot;, payloadProperties)\n\nvar payload = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewInstance();\npayload.put(\&quot;create_DasH_subscription_DasH_request\&quot;, payloadEntry);\n\nexecutor.outFields.put(\&quot;albumID\&quot;, executor.inFields.get(\&quot;albumID\&quot;))\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending Create Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\nvar payload = executor.inFields.get(\&quot;payload\&quot;)\nvar actionName = \&quot;create-subscription\&quot;\n\nvar commonHeader = executor.subject.getOutFieldSchemaHelper(\&quot;commonHeader\&quot;).createNewInstance();\ncommonHeader.put(\&quot;originatorId\&quot;, \&quot;sdnc\&quot;);\ncommonHeader.put(\&quot;requestId\&quot;, \&quot;123456-1000\&quot;);\ncommonHeader.put(\&quot;subRequestId\&quot;, \&quot;sub-123456-1000\&quot;);\n\nvar actionIdentifiers = executor.subject.getOutFieldSchemaHelper(\&quot;actionIdentifiers\&quot;).createNewInstance();\nactionIdentifiers.put(\&quot;actionName\&quot;, actionName);\nactionIdentifiers.put(\&quot;blueprintName\&quot;, \&quot;pm_control\&quot;);\nactionIdentifiers.put(\&quot;blueprintVersion\&quot;, \&quot;1.0.0\&quot;);\nactionIdentifiers.put(\&quot;mode\&quot;, \&quot;sync\&quot;);\n\nexecutor.outFields.put(\&quot;commonHeader\&quot;, commonHeader);\nexecutor.outFields.put(\&quot;actionIdentifiers\&quot;, actionIdentifiers);\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending Activate Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\n\nvar payloadProperties = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;delete_DasH_subscription_DasH_properties_record\&quot;);\n\npayloadProperties.put(\&quot;nfName\&quot;,  pmSubscriptionInfo.get(\&quot;nfName\&quot;))\npayloadProperties.put(\&quot;subscriptionName\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;subscriptionName\&quot;))\npayloadProperties.put(\&quot;administrativeState\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;administrativeState\&quot;))\npayloadProperties.put(\&quot;fileBasedGP\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileBasedGP\&quot;).toString())\npayloadProperties.put(\&quot;fileLocation\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileLocation\&quot;))\npayloadProperties.put(\&quot;measurementGroups\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;measurementGroups\&quot;))\n\nvar payloadEntry = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;CDSRequestPayloadEntry\&quot;);\npayloadEntry.put(\&quot;delete_DasH_subscription_DasH_properties\&quot;, payloadProperties)\n\nvar payload = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewInstance();\npayload.put(\&quot;delete_DasH_subscription_DasH_request\&quot;, payloadEntry);\n\nexecutor.outFields.put(\&quot;albumID\&quot;, executor.inFields.get(\&quot;albumID\&quot;))\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending delete Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\nvar payload = executor.inFields.get(\&quot;payload\&quot;)\nvar actionName = \&quot;delete-subscription\&quot;\n\nvar commonHeader = executor.subject.getOutFieldSchemaHelper(\&quot;commonHeader\&quot;).createNewInstance();\ncommonHeader.put(\&quot;originatorId\&quot;, \&quot;sdnc\&quot;);\ncommonHeader.put(\&quot;requestId\&quot;, \&quot;123456-1000\&quot;);\ncommonHeader.put(\&quot;subRequestId\&quot;, \&quot;sub-123456-1000\&quot;);\n\nvar actionIdentifiers = executor.subject.getOutFieldSchemaHelper(\&quot;actionIdentifiers\&quot;).createNewInstance();\nactionIdentifiers.put(\&quot;actionName\&quot;, actionName);\nactionIdentifiers.put(\&quot;blueprintName\&quot;, \&quot;pm_control\&quot;);\nactionIdentifiers.put(\&quot;blueprintVersion\&quot;, \&quot;1.0.0\&quot;);\nactionIdentifiers.put(\&quot;mode\&quot;, \&quot;sync\&quot;);\n\nexecutor.outFields.put(\&quot;commonHeader\&quot;, commonHeader);\nexecutor.outFields.put(\&quot;actionIdentifiers\&quot;, actionIdentifiers);\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending Deactivate Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;changeType&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;changeType&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;nfName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;nfName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;policyName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;policyName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;subscription&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;subscription&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\nvar uuidType = java.util.UUID;\n\n\n//albumID will be used to fetch info from our album later\nvar albumID = uuidType.fromString(\&quot;d0050623-18e5-46c9-9298-9a567990cd7c\&quot;);\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).getSchemaHelper().createNewInstance();\nvar returnValue = true;;\n\nif(executor.inFields.get(\&quot;policyName\&quot;) != null) {\n    var changeType = executor.inFields.get(\&quot;changeType\&quot;)\n    var nfName = executor.inFields.get(\&quot;nfName\&quot;)\n    var policyName = executor.inFields.get(\&quot;policyName\&quot;)\n    var closedLoopControlName = executor.inFields.get(\&quot;closedLoopControlName\&quot;)\n    var subscription = executor.inFields.get(\&quot;subscription\&quot;)\n\n    pmSubscriptionInfo.put(\&quot;nfName\&quot;, executor.inFields.get(\&quot;nfName\&quot;));\n    pmSubscriptionInfo.put(\&quot;changeType\&quot;, executor.inFields.get(\&quot;changeType\&quot;))\n    pmSubscriptionInfo.put(\&quot;policyName\&quot;, executor.inFields.get(\&quot;policyName\&quot;))\n    pmSubscriptionInfo.put(\&quot;closedLoopControlName\&quot;, executor.inFields.get(\&quot;closedLoopControlName\&quot;))\n    pmSubscriptionInfo.put(\&quot;subscription\&quot;, subscription)\n\n    executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).put(albumID.toString(), pmSubscriptionInfo);\n\n    executor.outFields.put(\&quot;albumID\&quot;, albumID)\n} else {\n    executor.message = \&quot;Received invalid event\&quot;\n    returnValue = false;\n}\nreturnValue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  },&#xd;
+                  &quot;events&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_Events&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;eventMap&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;CDS&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;status&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;status&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;DCAE&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;status&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;status&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;DCAE&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;changeType&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;changeType&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;nfName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;nfName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;policyName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;policyName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;subscription&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;subscription&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  },&#xd;
+                  &quot;albums&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_Albums&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;albums&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;scope&quot;: &quot;policy&quot;,&#xd;
+                            &quot;isWritable&quot;: true,&#xd;
+                            &quot;itemSchema&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  },&#xd;
+                  &quot;schemas&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_Schemas&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;schemas&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSActionIdentifiers_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;actionName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;blueprintName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;blueprintVersion\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;mode\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n  \&quot;type\&quot;: \&quot;map\&quot;,\n  \&quot;values\&quot;: {\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSRequestPayloadEntry\&quot;,\n    \&quot;fields\&quot;: [\n      {\n        \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_properties\&quot;,\n        \&quot;type\&quot;: {\n          \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_properties_record\&quot;,\n          \&quot;type\&quot;: \&quot;record\&quot;,\n          \&quot;fields\&quot;: [\n            {\n              \&quot;name\&quot;: \&quot;nfName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n              \&quot;type\&quot;: {\n                \&quot;type\&quot;: \&quot;array\&quot;,\n                \&quot;items\&quot;: {\n                  \&quot;name\&quot;: \&quot;measurementGroups_record\&quot;,\n                  \&quot;type\&quot;: \&quot;record\&quot;,\n                  \&quot;fields\&quot;: [\n                    {\n                      \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                      \&quot;type\&quot;: {\n                        \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;measurementTypes_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          },\n                          {\n                            \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;managedObjectDNsBasic_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;DN\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    ]\n  }\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n  \&quot;type\&quot;: \&quot;map\&quot;,\n  \&quot;values\&quot;: {\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSRequestPayloadEntry\&quot;,\n    \&quot;fields\&quot;: [\n      {\n        \&quot;name\&quot;: \&quot;delete_DasH_subscription_DasH_properties\&quot;,\n        \&quot;type\&quot;: {\n          \&quot;name\&quot;: \&quot;delete_DasH_subscription_DasH_properties_record\&quot;,\n          \&quot;type\&quot;: \&quot;record\&quot;,\n          \&quot;fields\&quot;: [\n            {\n              \&quot;name\&quot;: \&quot;nfName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n              \&quot;type\&quot;: {\n                \&quot;type\&quot;: \&quot;array\&quot;,\n                \&quot;items\&quot;: {\n                  \&quot;name\&quot;: \&quot;measurementGroups_record\&quot;,\n                  \&quot;type\&quot;: \&quot;record\&quot;,\n                  \&quot;fields\&quot;: [\n                    {\n                      \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                      \&quot;type\&quot;: {\n                        \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;measurementTypes_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          },\n                          {\n                            \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;managedObjectDNsBasic_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;DN\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    ]\n  }\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSRequestCommonHeader_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;originatorId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;requestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;subRequestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSResponseCommonHeader_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;originatorId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;requestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;subRequestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;timestamp\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n  \&quot;name\&quot;: \&quot;CDSResponsePayloadEntry\&quot;,\n  \&quot;type\&quot;: \&quot;record\&quot;,\n  \&quot;namespace\&quot;: \&quot;com.acme.avro\&quot;,\n  \&quot;fields\&quot;: [\n    {\n      \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_response\&quot;,\n      \&quot;type\&quot;: {\n        \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_response\&quot;,\n        \&quot;type\&quot;: \&quot;record\&quot;,\n        \&quot;fields\&quot;: [\n          {\n            \&quot;name\&quot;: \&quot;odl_DasH_response\&quot;,\n            \&quot;type\&quot;: {\n              \&quot;name\&quot;: \&quot;odl_DasH_response\&quot;,\n              \&quot;type\&quot;: \&quot;record\&quot;,\n              \&quot;fields\&quot;: [\n                  {\n                    \&quot;name\&quot;: \&quot;status\&quot;,\n                    \&quot;type\&quot;: \&quot;string\&quot;\n                  }\n              ]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSResponseStatus_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;code\&quot;,\n            \&quot;type\&quot;: \&quot;int\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;eventType\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;timestamp\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;message\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n  \&quot;name\&quot;: \&quot;PMSubscription\&quot;,\n  \&quot;type\&quot;: \&quot;record\&quot;,\n  \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.pmcontrol\&quot;,\n  \&quot;fields\&quot;: [\n    {\n      \&quot;name\&quot;: \&quot;nfName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;changeType\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;closedLoopControlName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;policyName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;subscription\&quot;,\n      \&quot;type\&quot;: {\n        \&quot;name\&quot;: \&quot;subscription\&quot;,\n        \&quot;type\&quot;: \&quot;record\&quot;,\n        \&quot;fields\&quot;: [\n          {\n            \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n            \&quot;type\&quot;: \&quot;int\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n            \&quot;type\&quot;: {\n              \&quot;type\&quot;: \&quot;array\&quot;,\n              \&quot;items\&quot;: {\n                \&quot;name\&quot;: \&quot;Measurement_Groups_Type\&quot;,\n                \&quot;type\&quot;: \&quot;record\&quot;,\n                \&quot;fields\&quot;: [\n                  {\n                    \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                    \&quot;type\&quot;: {\n                      \&quot;name\&quot;: \&quot;Measurement_Group_Type\&quot;,\n                      \&quot;type\&quot;: \&quot;record\&quot;,\n                      \&quot;fields\&quot;: [\n                        {\n                          \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                          \&quot;type\&quot;: {\n                            \&quot;type\&quot;: \&quot;array\&quot;,\n                            \&quot;items\&quot;: {\n                              \&quot;name\&quot;: \&quot;Measurement_Types_Type\&quot;,\n                              \&quot;type\&quot;: \&quot;record\&quot;,\n                              \&quot;fields\&quot;: [\n                                {\n                                  \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                                  \&quot;type\&quot;: \&quot;string\&quot;\n                                }\n                              ]\n                            }\n                          }\n                        },\n                        {\n                          \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                          \&quot;type\&quot;: {\n                            \&quot;type\&quot;: \&quot;array\&quot;,\n                            \&quot;items\&quot;: {\n                              \&quot;name\&quot;: \&quot;Managed_Object_Dns_Basic_Type\&quot;,\n                              \&quot;type\&quot;: \&quot;record\&quot;,\n                              \&quot;fields\&quot;: [\n                                {\n                                  \&quot;name\&quot;: \&quot;DN\&quot;,\n                                  \&quot;type\&quot;: \&quot;string\&quot;\n                                }\n                              ]\n                            }\n                          }\n                        }\n                      ]\n                    }\n                  }\n                ]\n              }\n            }\n          }\n        ]\n      }\n    }\n  ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Java&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;java.lang.Integer&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Java&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;java.lang.String&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;ActivateSubscriptionStatus_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;nfName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;changeType\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;message\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n  \&quot;name\&quot;: \&quot;subscription\&quot;,\n  \&quot;type\&quot;: \&quot;record\&quot;,\n  \&quot;fields\&quot;: [\n    {\n      \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n      \&quot;type\&quot;: \&quot;int\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n      \&quot;type\&quot;: {\n        \&quot;type\&quot;: \&quot;array\&quot;,\n        \&quot;items\&quot;: {\n          \&quot;name\&quot;: \&quot;Measurement_Groups_Type\&quot;,\n          \&quot;type\&quot;: \&quot;record\&quot;,\n          \&quot;fields\&quot;: [\n            {\n              \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n              \&quot;type\&quot;: {\n                \&quot;name\&quot;: \&quot;Measurement_Group_Type\&quot;,\n                \&quot;type\&quot;: \&quot;record\&quot;,\n                \&quot;fields\&quot;: [\n                  {\n                    \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                    \&quot;type\&quot;: {\n                      \&quot;type\&quot;: \&quot;array\&quot;,\n                      \&quot;items\&quot;: {\n                        \&quot;name\&quot;: \&quot;Measurement_Types_Type\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                            \&quot;type\&quot;: \&quot;string\&quot;\n                          }\n                        ]\n                      }\n                    }\n                  },\n                  {\n                    \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                    \&quot;type\&quot;: {\n                      \&quot;type\&quot;: \&quot;array\&quot;,\n                      \&quot;items\&quot;: {\n                        \&quot;name\&quot;: \&quot;Managed_Object_Dns_Basic_Type\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;DN\&quot;,\n                            \&quot;type\&quot;: \&quot;string\&quot;\n                          }\n                        ]\n                      }\n                    }\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    }\n  ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Java&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;java.util.UUID&quot;&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  }&#xd;
+                }&#xd;
+              }&#xd;
+            },&#xd;
+            &quot;eventOutputParameters&quot;: {&#xd;
+              &quot;logOutputter&quot;: {&#xd;
+                &quot;carrierTechnologyParameters&quot;: {&#xd;
+                  &quot;carrierTechnology&quot;: &quot;FILE&quot;,&#xd;
+                  &quot;parameters&quot;: {&#xd;
+                    &quot;fileName&quot;: &quot;outputevents.log&quot;&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;eventProtocolParameters&quot;: {&#xd;
+                  &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
+                }&#xd;
+              },&#xd;
+              &quot;CDSRequestProducer&quot;: {&#xd;
+                &quot;carrierTechnologyParameters&quot;: {&#xd;
+                  &quot;carrierTechnology&quot;: &quot;GRPC&quot;,&#xd;
+                  &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.grpc.GrpcCarrierTechnologyParameters&quot;,&#xd;
+                  &quot;parameters&quot;: {&#xd;
+                    &quot;host&quot;: &quot;10.2.0.122&quot;,&#xd;
+                    &quot;port&quot;: 54322,&#xd;
+                    &quot;username&quot;: &quot;ccsdkapps&quot;,&#xd;
+                    &quot;password&quot;: &quot;ccsdkapps&quot;,&#xd;
+                    &quot;timeout&quot;: 60&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;eventProtocolParameters&quot;: {&#xd;
+                  &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
+                },&#xd;
+                &quot;eventNameFilter&quot;: &quot;(Create|Delete)SubscriptionRequestEvent&quot;,&#xd;
+                &quot;requestorMode&quot;: true,&#xd;
+                &quot;requestorPeer&quot;: &quot;CDSRequestConsumer&quot;,&#xd;
+                &quot;requestorTimeout&quot;: 500&#xd;
+              },&#xd;
+              &quot;CDSReplyProducer&quot;: {&#xd;
+                &quot;carrierTechnologyParameters&quot;: {&#xd;
+                  &quot;carrierTechnology&quot;: &quot;RESTCLIENT&quot;,&#xd;
+                  &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters&quot;,&#xd;
+                  &quot;parameters&quot;: {&#xd;
+                    &quot;url&quot;: &quot;http://message-router:3904/events/POLICY-CL-MGT&quot;&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;eventProtocolParameters&quot;: {&#xd;
+                  &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
+                },&#xd;
+                &quot;eventNameFilter&quot;: &quot;CDSResponseStatusEvent&quot;&#xd;
+              }&#xd;
+            },&#xd;
+            &quot;eventInputParameters&quot;: {&#xd;
+              &quot;DCAEConsumer&quot;: {&#xd;
+                &quot;carrierTechnologyParameters&quot;: {&#xd;
+                  &quot;carrierTechnology&quot;: &quot;RESTCLIENT&quot;,&#xd;
+                  &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters&quot;,&#xd;
+                  &quot;parameters&quot;: {&#xd;
+                    &quot;url&quot;: &quot;http://message-router:3904/events/unauthenticated.DCAE_CL_OUTPUT/cg1/c1?timeout=30000&quot;&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;eventProtocolParameters&quot;: {&#xd;
+                  &quot;eventProtocol&quot;: &quot;JSON&quot;,&#xd;
+                  &quot;parameters&quot;: {&#xd;
+                    &quot;nameAlias&quot;: &quot;testPolicyB&quot;&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;eventName&quot;: &quot;testPolicyB&quot;,&#xd;
+                &quot;eventNameFilter&quot;: &quot;testPolicyB&quot;&#xd;
+              },&#xd;
+              &quot;CDSRequestConsumer&quot;: {&#xd;
+                &quot;carrierTechnologyParameters&quot;: {&#xd;
+                  &quot;carrierTechnology&quot;: &quot;GRPC&quot;,&#xd;
+                  &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.grpc.GrpcCarrierTechnologyParameters&quot;&#xd;
+                },&#xd;
+                &quot;eventProtocolParameters&quot;: {&#xd;
+                  &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
+                },&#xd;
+                &quot;eventName&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                &quot;eventNameFilter&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                &quot;requestorMode&quot;: true,&#xd;
+                &quot;requestorPeer&quot;: &quot;CDSRequestProducer&quot;,&#xd;
+                &quot;requestorTimeout&quot;: 500&#xd;
+              }&#xd;
             }&#xd;
-        ]&#xd;
-    },&#xd;
-    &quot;name&quot;: &quot;ToscaServiceTemplateSimple&quot;,&#xd;
-    &quot;version&quot;: &quot;1.0.0&quot;,&#xd;
-    &quot;metadata&quot;: {}&#xd;
+          },&#xd;
+          &quot;name&quot;: &quot;operational.apex.stabilityTestDefaultDomain&quot;,&#xd;
+          &quot;version&quot;: &quot;1.0.0&quot;,&#xd;
+          &quot;metadata&quot;: {&#xd;
+            &quot;policy-id&quot;: &quot;operational.apex.stabilityTestDefaultDomain&quot;,&#xd;
+            &quot;policy-version&quot;: &quot;1.0.0&quot;&#xd;
+          }&#xd;
+        }&#xd;
+      }&#xd;
+    ]&#xd;
+  },&#xd;
+  &quot;name&quot;: &quot;ToscaServiceTemplateSimple&quot;,&#xd;
+  &quot;version&quot;: &quot;1.0.0&quot;,&#xd;
+  &quot;metadata&quot;: {}&#xd;
 }</stringProp>
                 <stringProp name="Argument.metadata">=</stringProp>
               </elementProp>
@@ -2589,7 +2580,7 @@
         </hashTree>
         <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test Controller" enabled="true"/>
         <hashTree>
-          <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true">
+          <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="false">
             <stringProp name="groupSize">${threads}</stringProp>
             <stringProp name="timeoutInMs">${threadsTimeOutInMs}</stringProp>
           </SyncTimer>
@@ -2660,7 +2651,7 @@
             </elementProp>
             <stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
             <stringProp name="HTTPSampler.port">${DMAAP_PORT}</stringProp>
-            <stringProp name="HTTPSampler.protocol">https</stringProp>
+            <stringProp name="HTTPSampler.protocol">http</stringProp>
             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
             <stringProp name="HTTPSampler.path">/events/unauthenticated.DCAE_CL_OUTPUT</stringProp>
             <stringProp name="HTTPSampler.method">POST</stringProp>
@@ -2697,9 +2688,9 @@
             </elementProp>
             <stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
             <stringProp name="HTTPSampler.port">${DMAAP_PORT}</stringProp>
-            <stringProp name="HTTPSampler.protocol">https</stringProp>
+            <stringProp name="HTTPSampler.protocol">http</stringProp>
             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
-            <stringProp name="HTTPSampler.path">/events/POLICY-PDP-PAP/cg1/c1?timeout=30000</stringProp>
+            <stringProp name="HTTPSampler.path">/events/POLICY-CL-MGT/cg${__threadNum}/c1?timeout=30000</stringProp>
             <stringProp name="HTTPSampler.method">GET</stringProp>
             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -2723,7 +2714,7 @@
               <stringProp name="TestPlan.comments">Assert response code coming back from apex-pdp</stringProp>
             </ResponseAssertion>
             <hashTree/>
-            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Response Message" enabled="false">
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Response Message" enabled="true">
               <collectionProp name="Asserion.test_strings">
                 <stringProp name="1608759622">org.onap.policy.apex.onap.pmcontrol</stringProp>
                 <stringProp name="1996002556">CREATE</stringProp>
diff --git a/testsuites/performance/performance-benchmark-test/src/main/resources/apexPdpPerformanceTestPlan.jmx b/testsuites/performance/performance-benchmark-test/src/main/resources/apexPdpPerformanceTestPlan.jmx
new file mode 100644
index 0000000..5d6533e
--- /dev/null
+++ b/testsuites/performance/performance-benchmark-test/src/main/resources/apexPdpPerformanceTestPlan.jmx
@@ -0,0 +1,2928 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.4.1">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="APEX PDP STABILITY TEST PLAN" enabled="true">
+      <stringProp name="TestPlan.comments"></stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"></stringProp>
+    </TestPlan>
+    <hashTree>
+      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
+        <collectionProp name="HeaderManager.headers">
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Content-Type</stringProp>
+            <stringProp name="Header.value">application/json</stringProp>
+          </elementProp>
+          <elementProp name="" elementType="Header">
+            <stringProp name="Header.name">Accept</stringProp>
+            <stringProp name="Header.value">application/json</stringProp>
+          </elementProp>
+        </collectionProp>
+      </HeaderManager>
+      <hashTree/>
+      <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="false">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain"></stringProp>
+        <stringProp name="HTTPSampler.port">23324</stringProp>
+        <stringProp name="HTTPSampler.protocol">http</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+        <stringProp name="HTTPSampler.path"></stringProp>
+        <stringProp name="HTTPSampler.concurrentPool">6</stringProp>
+        <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+        <stringProp name="HTTPSampler.response_timeout"></stringProp>
+      </ConfigTestElement>
+      <hashTree/>
+      <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="threads" elementType="Argument">
+            <stringProp name="Argument.name">threads</stringProp>
+            <stringProp name="Argument.value">${__P(threads,20)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="threadsTimeOutInMs" elementType="Argument">
+            <stringProp name="Argument.name">threadsTimeOutInMs</stringProp>
+            <stringProp name="Argument.value">${__P(threadsTimeOutInMs,5000)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="wait" elementType="Argument">
+            <stringProp name="Argument.name">wait</stringProp>
+            <stringProp name="Argument.value">${__P(wait,10000)}</stringProp>
+            <stringProp name="Argument.desc">Wait time between requests to apex-pdp</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="PAP_PORT" elementType="Argument">
+            <stringProp name="Argument.name">PAP_PORT</stringProp>
+            <stringProp name="Argument.value">${__P(PAP_PORT,30211)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="API_PORT" elementType="Argument">
+            <stringProp name="Argument.name">API_PORT</stringProp>
+            <stringProp name="Argument.value">${__P(API_PORT,30785)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="APEX_PORT" elementType="Argument">
+            <stringProp name="Argument.name">APEX_PORT</stringProp>
+            <stringProp name="Argument.value">${__P(APEX_PORT,30687)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="DMAAP_PORT" elementType="Argument">
+            <stringProp name="Argument.name">DMAAP_PORT</stringProp>
+            <stringProp name="Argument.value">${__P(DMAAP_PORT,31345)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="HOSTNAME" elementType="Argument">
+            <stringProp name="Argument.name">HOSTNAME</stringProp>
+            <stringProp name="Argument.value">${__P(HOSTNAME,10.2.0.120)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="LOG_PATH" elementType="Argument">
+            <stringProp name="Argument.name">LOG_PATH</stringProp>
+            <stringProp name="Argument.value">${__P(LOG_PATH,/home/arkadiusza/apex_stability)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
+      </Arguments>
+      <hashTree/>
+      <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
+        <collectionProp name="AuthManager.auth_list">
+          <elementProp name="" elementType="Authorization">
+            <stringProp name="Authorization.url">https://${HOSTNAME}:${API_PORT}</stringProp>
+            <stringProp name="Authorization.username">healthcheck</stringProp>
+            <stringProp name="Authorization.password">zb!XztG34</stringProp>
+            <stringProp name="Authorization.domain"></stringProp>
+            <stringProp name="Authorization.realm"></stringProp>
+          </elementProp>
+          <elementProp name="" elementType="Authorization">
+            <stringProp name="Authorization.url">https://${HOSTNAME}:${PAP_PORT}</stringProp>
+            <stringProp name="Authorization.username">healthcheck</stringProp>
+            <stringProp name="Authorization.password">zb!XztG34</stringProp>
+            <stringProp name="Authorization.domain"></stringProp>
+            <stringProp name="Authorization.realm"></stringProp>
+          </elementProp>
+          <elementProp name="" elementType="Authorization">
+            <stringProp name="Authorization.url">https://${HOSTNAME}:${APEX_PORT}</stringProp>
+            <stringProp name="Authorization.username">healthcheck</stringProp>
+            <stringProp name="Authorization.password">zb!XztG34</stringProp>
+            <stringProp name="Authorization.domain"></stringProp>
+            <stringProp name="Authorization.realm"></stringProp>
+          </elementProp>
+        </collectionProp>
+        <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp>
+      </AuthManager>
+      <hashTree/>
+      <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+      </SetupThreadGroup>
+      <hashTree>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Policy" enabled="true">
+          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+            <collectionProp name="Arguments.arguments">
+              <elementProp name="" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                <stringProp name="Argument.value">{&#xd;
+  &quot;tosca_definitions_version&quot;: &quot;tosca_simple_yaml_1_1_0&quot;,&#xd;
+  &quot;topology_template&quot;: {&#xd;
+    &quot;policies&quot;: [&#xd;
+      {&#xd;
+        &quot;operational.apex.stabilityTestDefaultDomain&quot;: {&#xd;
+          &quot;type&quot;: &quot;onap.policies.native.Apex&quot;,&#xd;
+          &quot;type_version&quot;: &quot;1.0.0&quot;,&#xd;
+          &quot;properties&quot;: {&#xd;
+            &quot;engineServiceParameters&quot;: {&#xd;
+              &quot;name&quot;: &quot;MyApexEngine&quot;,&#xd;
+              &quot;version&quot;: &quot;0.0.1&quot;,&#xd;
+              &quot;id&quot;: 45,&#xd;
+              &quot;instanceCount&quot;: 4,&#xd;
+              &quot;deploymentPort&quot;: 12561,&#xd;
+              &quot;engineParameters&quot;: {&#xd;
+                &quot;executorParameters&quot;: {&#xd;
+                  &quot;JAVASCRIPT&quot;: {&#xd;
+                    &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters&quot;&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;contextParameters&quot;: {&#xd;
+                  &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.context.parameters.ContextParameters&quot;,&#xd;
+                  &quot;schemaParameters&quot;: {&#xd;
+                    &quot;Avro&quot;: {&#xd;
+                      &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters&quot;&#xd;
+                    }&#xd;
+                  }&#xd;
+                }&#xd;
+              },&#xd;
+              &quot;policy_type_impl&quot;: {&#xd;
+                &quot;apexPolicyModel&quot;: {&#xd;
+                  &quot;key&quot;: {&#xd;
+                    &quot;name&quot;: &quot;APEXgRPCPolicy&quot;,&#xd;
+                    &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                  },&#xd;
+                  &quot;keyInformation&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_KeyInfo&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;keyInfoMap&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;b8424cdb-29fb-3566-b77a-f4f847d81cc9&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_Albums&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_Albums&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;9922906c-ccaa-34f7-95e2-bcc36e77821b&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Albums:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_Events&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_Events&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;5bf28afd-787c-3138-a3e1-b33ad94a038a&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Events:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_KeyInfo&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_KeyInfo&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;68abaa6f-8d03-3a53-9590-007115817d5c&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_KeyInfo:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_Policies&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_Policies&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;819d06c3-33c2-3031-aa78-96281aa4270a&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Policies:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_Schemas&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_Schemas&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;8e67d466-f990-3a39-9fd7-4490cac342dc&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Schemas:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;APEXgRPCPolicy_Tasks&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;APEXgRPCPolicy_Tasks&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;4668db3d-6fe2-3885-8e47-f30cd0102f0a&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;APEXgRPCPolicy_Tasks:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;6e5fa19b-14df-37e3-a4ae-8c537e861a82&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSActionIdentifiersType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;8350ac5e-c157-38b9-9614-a0f93a830e60&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSCreateSubscriptionPayloadType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;12658406-9147-3c9d-a38c-5ad5e30b092b&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSDeleteSubscriptionPayloadType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;35590ac0-062c-39f1-8786-b4ff716e30b1&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSRequestCommonHeaderType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;dd7e1805-885a-350b-aaf9-ed541321ae3c&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseCommonHeaderType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;15161037-9ac8-3223-820f-4e743562a345&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;97dc5f58-25bb-3c20-8d53-fdb70d7ca256&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponsePayloadType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;c28b05a8-7436-3ac0-82ca-6d5fc18c9584&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponsePolicy:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;7986e21b-32f7-302e-9554-31f21b673493&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseStatusEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;92b8a2cf-344e-3ce1-8cc0-2b7d3cb695fa&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseStatusType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;d22c78a5-272c-391d-8083-28588280caf9&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CDSResponseTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;92162397-1a8e-3a3f-a469-d2af7700af4a&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionPayloadEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;bc0c69f0-52ed-38ea-b468-ae4a6fd1730d&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionPayloadTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;7cfcf843-337e-3f41-b755-5043cb0a08fc&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionRequestEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;89cb75e9-f06c-30d3-b4ff-698d45f63869&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;CreateSubscriptionRequestTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;994fa441-04ab-33bb-832d-1cd12ab5d074&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionPayloadEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;0f519117-5fea-3e4b-941f-8f778100465f&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionPayloadTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;15d618d8-1689-3a05-89a5-05efa9388f65&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionRequestEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;acb772fe-d442-39e3-98f9-b1080caf4150&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;DeleteSubscriptionRequestTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;c2bd6f0d-6854-317a-9be2-97c08338428c&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;PMSubscriptionAlbum:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;992b7819-9f69-3aa0-bb0f-6e45ea15ce05&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;PMSubscriptionOutputEvent:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;73c1c397-4fc3-357f-93b6-a8ad707fbaae&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;PMSubscriptionType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;568b7345-9de1-36d3-b6a3-9b857e6809a1&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;ReceiveEventPolicy:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;6c1c6c45-26e0-3591-94bf-679d20e283f4&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;ReceivePMSubscriptionTask:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;153791fd-ae0a-36a7-88a5-309a7936415d&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SimpleIntType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;8a4957cf-9493-3a76-8c22-a208e23259af&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SimpleStringType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;597643b1-9db1-31ce-85d0-e1c63c43b30b&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SubscriptionStatusType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;184547bb-7d64-3cb2-a273-d7185102c5ce&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;SubscriptionType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;6a8cc68e-dfc8-3403-9c6d-071c886b319c&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;UUIDType:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;UUID&quot;: &quot;ead590a3-ba2e-3a01-b6e9-9329f5c8fee1&quot;,&#xd;
+                            &quot;description&quot;: &quot;Generated description for concept referred to by key \&quot;testPolicyB:0.0.1\&quot;&quot;&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  },&#xd;
+                  &quot;policies&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_Policies&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;policyMap&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;policyKey&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;template&quot;: &quot;Freestyle&quot;,&#xd;
+                            &quot;state&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;CDSResponseState&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;stateKey&quot;: {&#xd;
+                                      &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                                      &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                      &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;localName&quot;: &quot;CDSResponseState&quot;&#xd;
+                                    },&#xd;
+                                    &quot;trigger&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateOutputs&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;ResponseOutput&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CDSResponseState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ResponseOutput&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.0&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;NULL&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    },&#xd;
+                                    &quot;contextAlbumReference&quot;: [],&#xd;
+                                    &quot;taskSelectionLogic&quot;: {&#xd;
+                                      &quot;key&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
+                                      &quot;logic&quot;: &quot;&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateFinalizerLogicMap&quot;: {&#xd;
+                                      &quot;entry&quot;: []&#xd;
+                                    },&#xd;
+                                    &quot;defaultTask&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;taskReferences&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CDSResponseState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;CDSResponsePolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;CDSResponsePolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CDSResponseState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ResponseOutput&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    }&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;firstState&quot;: &quot;CDSResponseState&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;policyKey&quot;: {&#xd;
+                              &quot;name&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;template&quot;: &quot;Freestyle&quot;,&#xd;
+                            &quot;state&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;stateKey&quot;: {&#xd;
+                                      &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                      &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                      &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;localName&quot;: &quot;CreateOrDeleteState&quot;&#xd;
+                                    },&#xd;
+                                    &quot;trigger&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateOutputs&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;CreateSubscriptionPayload&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;CreateSubscriptionPayload&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;CreateSubscription&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        },&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;DeleteSubscriptionPayload&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;DeleteSubscriptionPayload&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;DeleteSubscription&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    },&#xd;
+                                    &quot;contextAlbumReference&quot;: [&#xd;
+                                      {&#xd;
+                                        &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                      }&#xd;
+                                    ],&#xd;
+                                    &quot;taskSelectionLogic&quot;: {&#xd;
+                                      &quot;key&quot;: &quot;TaskSelectionLogic&quot;,&#xd;
+                                      &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                                      &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix Foundation.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\nvar changeType = pmSubscriptionInfo.get(\&quot;changeType\&quot;).toString()\n\nif (\&quot;CREATE\&quot;.equals(changeType)) {\n    executor.subject.getTaskKey(\&quot;CreateSubscriptionPayloadTask\&quot;).copyTo(executor.selectedTask);\n}\nelse if (\&quot;DELETE\&quot;.equals(changeType)) {\n    executor.subject.getTaskKey(\&quot;DeleteSubscriptionPayloadTask\&quot;).copyTo(executor.selectedTask);\n}\n\ntrue;&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateFinalizerLogicMap&quot;: {&#xd;
+                                      &quot;entry&quot;: []&#xd;
+                                    },&#xd;
+                                    &quot;defaultTask&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;taskReferences&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;CreateSubscriptionPayload&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        },&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateOrDeleteState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;DeleteSubscriptionPayload&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    }&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;CreateSubscription&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;stateKey&quot;: {&#xd;
+                                      &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                      &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                      &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;localName&quot;: &quot;CreateSubscription&quot;&#xd;
+                                    },&#xd;
+                                    &quot;trigger&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateOutputs&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;IssueCreateSubscriptionRequestOutput&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;IssueCreateSubscriptionRequestOutput&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.0&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;NULL&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    },&#xd;
+                                    &quot;contextAlbumReference&quot;: [&#xd;
+                                      {&#xd;
+                                        &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                      }&#xd;
+                                    ],&#xd;
+                                    &quot;taskSelectionLogic&quot;: {&#xd;
+                                      &quot;key&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
+                                      &quot;logic&quot;: &quot;&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateFinalizerLogicMap&quot;: {&#xd;
+                                      &quot;entry&quot;: []&#xd;
+                                    },&#xd;
+                                    &quot;defaultTask&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;taskReferences&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;CreateSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;IssueCreateSubscriptionRequestOutput&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    }&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;DeleteSubscription&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;stateKey&quot;: {&#xd;
+                                      &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                      &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                      &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;localName&quot;: &quot;DeleteSubscription&quot;&#xd;
+                                    },&#xd;
+                                    &quot;trigger&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateOutputs&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;IssueDeleteSubscriptionRequestOutput&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;DeleteSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;IssueDeleteSubscriptionRequestOutput&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.0&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;NULL&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    },&#xd;
+                                    &quot;contextAlbumReference&quot;: [&#xd;
+                                      {&#xd;
+                                        &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                      }&#xd;
+                                    ],&#xd;
+                                    &quot;taskSelectionLogic&quot;: {&#xd;
+                                      &quot;key&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
+                                      &quot;logic&quot;: &quot;&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateFinalizerLogicMap&quot;: {&#xd;
+                                      &quot;entry&quot;: []&#xd;
+                                    },&#xd;
+                                    &quot;defaultTask&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;taskReferences&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;DeleteSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;DeleteSubscription&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;IssueDeleteSubscriptionRequestOutput&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    }&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;stateKey&quot;: {&#xd;
+                                      &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                      &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                      &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;localName&quot;: &quot;ReceiveSubscriptionState&quot;&#xd;
+                                    },&#xd;
+                                    &quot;trigger&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateOutputs&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: &quot;ReceivePMSubscriptionOutput&quot;,&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceivePMSubscriptionOutput&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outgoingEvent&quot;: {&#xd;
+                                              &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                            },&#xd;
+                                            &quot;nextState&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;NULL&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;CreateOrDeleteState&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    },&#xd;
+                                    &quot;contextAlbumReference&quot;: [&#xd;
+                                      {&#xd;
+                                        &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                        &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                      }&#xd;
+                                    ],&#xd;
+                                    &quot;taskSelectionLogic&quot;: {&#xd;
+                                      &quot;key&quot;: &quot;NULL&quot;,&#xd;
+                                      &quot;logicFlavour&quot;: &quot;UNDEFINED&quot;,&#xd;
+                                      &quot;logic&quot;: &quot;&quot;&#xd;
+                                    },&#xd;
+                                    &quot;stateFinalizerLogicMap&quot;: {&#xd;
+                                      &quot;entry&quot;: []&#xd;
+                                    },&#xd;
+                                    &quot;defaultTask&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;taskReferences&quot;: {&#xd;
+                                      &quot;entry&quot;: [&#xd;
+                                        {&#xd;
+                                          &quot;key&quot;: {&#xd;
+                                            &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                          },&#xd;
+                                          &quot;value&quot;: {&#xd;
+                                            &quot;key&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceiveEventPolicy&quot;&#xd;
+                                            },&#xd;
+                                            &quot;outputType&quot;: &quot;DIRECT&quot;,&#xd;
+                                            &quot;output&quot;: {&#xd;
+                                              &quot;parentKeyName&quot;: &quot;ReceiveEventPolicy&quot;,&#xd;
+                                              &quot;parentKeyVersion&quot;: &quot;0.0.1&quot;,&#xd;
+                                              &quot;parentLocalName&quot;: &quot;ReceiveSubscriptionState&quot;,&#xd;
+                                              &quot;localName&quot;: &quot;ReceivePMSubscriptionOutput&quot;&#xd;
+                                            }&#xd;
+                                          }&#xd;
+                                        }&#xd;
+                                      ]&#xd;
+                                    }&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;firstState&quot;: &quot;ReceiveSubscriptionState&quot;&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  },&#xd;
+                  &quot;tasks&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_Tasks&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;taskMap&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;status&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;status&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;status&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;status&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\n\nvar uuidType = java.util.UUID;\n\nvar albumID = uuidType.fromString(\&quot;d0050623-18e5-46c9-9298-9a567990cd7c\&quot;);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(albumID.toString());\n\nvar responseStatus = executor.subject.getOutFieldSchemaHelper(\&quot;status\&quot;).createNewInstance();\n\nresponseStatus.put(\&quot;subscriptionName\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;subscriptionName\&quot;))\nresponseStatus.put(\&quot;nfName\&quot;, pmSubscriptionInfo.get(\&quot;nfName\&quot;))\nresponseStatus.put(\&quot;changeType\&quot;, pmSubscriptionInfo.get(\&quot;changeType\&quot;))\n\nvar response = executor.inFields.get(\&quot;payload\&quot;)\n\nif (\&quot;failure\&quot;.equals(response.get(\&quot;create_DasH_subscription_DasH_response\&quot;).get(\&quot;odl_DasH_response\&quot;).get(\&quot;status\&quot;))) {\n    responseStatus.put(\&quot;message\&quot;, \&quot;failed\&quot;)\n} else {\n    responseStatus.put(\&quot;message\&quot;, \&quot;success\&quot;)\n}\n\nexecutor.outFields.put(\&quot;status\&quot;, responseStatus)\n\ntrue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionPayloadTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\n\nvar payloadProperties = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;create_DasH_subscription_DasH_properties_record\&quot;);\n\npayloadProperties.put(\&quot;nfName\&quot;,  pmSubscriptionInfo.get(\&quot;nfName\&quot;))\npayloadProperties.put(\&quot;subscriptionName\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;subscriptionName\&quot;))\npayloadProperties.put(\&quot;administrativeState\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;administrativeState\&quot;))\npayloadProperties.put(\&quot;fileBasedGP\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileBasedGP\&quot;).toString())\npayloadProperties.put(\&quot;fileLocation\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileLocation\&quot;))\npayloadProperties.put(\&quot;measurementGroups\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;measurementGroups\&quot;))\n\nvar payloadEntry = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;CDSRequestPayloadEntry\&quot;);\npayloadEntry.put(\&quot;create_DasH_subscription_DasH_properties\&quot;, payloadProperties)\n\nvar payload = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewInstance();\npayload.put(\&quot;create_DasH_subscription_DasH_request\&quot;, payloadEntry);\n\nexecutor.outFields.put(\&quot;albumID\&quot;, executor.inFields.get(\&quot;albumID\&quot;))\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending Create Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionRequestTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\nvar payload = executor.inFields.get(\&quot;payload\&quot;)\nvar actionName = \&quot;create-subscription\&quot;\n\nvar commonHeader = executor.subject.getOutFieldSchemaHelper(\&quot;commonHeader\&quot;).createNewInstance();\ncommonHeader.put(\&quot;originatorId\&quot;, \&quot;sdnc\&quot;);\ncommonHeader.put(\&quot;requestId\&quot;, \&quot;123456-1000\&quot;);\ncommonHeader.put(\&quot;subRequestId\&quot;, \&quot;sub-123456-1000\&quot;);\n\nvar actionIdentifiers = executor.subject.getOutFieldSchemaHelper(\&quot;actionIdentifiers\&quot;).createNewInstance();\nactionIdentifiers.put(\&quot;actionName\&quot;, actionName);\nactionIdentifiers.put(\&quot;blueprintName\&quot;, \&quot;pm_control\&quot;);\nactionIdentifiers.put(\&quot;blueprintVersion\&quot;, \&quot;1.0.0\&quot;);\nactionIdentifiers.put(\&quot;mode\&quot;, \&quot;sync\&quot;);\n\nexecutor.outFields.put(\&quot;commonHeader\&quot;, commonHeader);\nexecutor.outFields.put(\&quot;actionIdentifiers\&quot;, actionIdentifiers);\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending Activate Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionPayloadTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\n\nvar payloadProperties = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;delete_DasH_subscription_DasH_properties_record\&quot;);\n\npayloadProperties.put(\&quot;nfName\&quot;,  pmSubscriptionInfo.get(\&quot;nfName\&quot;))\npayloadProperties.put(\&quot;subscriptionName\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;subscriptionName\&quot;))\npayloadProperties.put(\&quot;administrativeState\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;administrativeState\&quot;))\npayloadProperties.put(\&quot;fileBasedGP\&quot;,  pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileBasedGP\&quot;).toString())\npayloadProperties.put(\&quot;fileLocation\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;fileLocation\&quot;))\npayloadProperties.put(\&quot;measurementGroups\&quot;, pmSubscriptionInfo.get(\&quot;subscription\&quot;).get(\&quot;measurementGroups\&quot;))\n\nvar payloadEntry = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewSubInstance(\&quot;CDSRequestPayloadEntry\&quot;);\npayloadEntry.put(\&quot;delete_DasH_subscription_DasH_properties\&quot;, payloadProperties)\n\nvar payload = executor.subject.getOutFieldSchemaHelper(\&quot;payload\&quot;).createNewInstance();\npayload.put(\&quot;delete_DasH_subscription_DasH_request\&quot;, payloadEntry);\n\nexecutor.outFields.put(\&quot;albumID\&quot;, executor.inFields.get(\&quot;albumID\&quot;))\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending delete Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionRequestTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\n\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).get(executor.inFields.get(\&quot;albumID\&quot;).toString())\nvar payload = executor.inFields.get(\&quot;payload\&quot;)\nvar actionName = \&quot;delete-subscription\&quot;\n\nvar commonHeader = executor.subject.getOutFieldSchemaHelper(\&quot;commonHeader\&quot;).createNewInstance();\ncommonHeader.put(\&quot;originatorId\&quot;, \&quot;sdnc\&quot;);\ncommonHeader.put(\&quot;requestId\&quot;, \&quot;123456-1000\&quot;);\ncommonHeader.put(\&quot;subRequestId\&quot;, \&quot;sub-123456-1000\&quot;);\n\nvar actionIdentifiers = executor.subject.getOutFieldSchemaHelper(\&quot;actionIdentifiers\&quot;).createNewInstance();\nactionIdentifiers.put(\&quot;actionName\&quot;, actionName);\nactionIdentifiers.put(\&quot;blueprintName\&quot;, \&quot;pm_control\&quot;);\nactionIdentifiers.put(\&quot;blueprintVersion\&quot;, \&quot;1.0.0\&quot;);\nactionIdentifiers.put(\&quot;mode\&quot;, \&quot;sync\&quot;);\n\nexecutor.outFields.put(\&quot;commonHeader\&quot;, commonHeader);\nexecutor.outFields.put(\&quot;actionIdentifiers\&quot;, actionIdentifiers);\nexecutor.outFields.put(\&quot;payload\&quot;, payload);\n\nexecutor.logger.info(\&quot;Sending Deactivate Subscription Event to CDS\&quot;)\n\ntrue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;ReceivePMSubscriptionTask&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;inputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;changeType&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;changeType&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;nfName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;nfName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;policyName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;policyName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;subscription&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;subscription&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;outputFields&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            },&#xd;
+                            &quot;taskParameters&quot;: {&#xd;
+                              &quot;entry&quot;: []&#xd;
+                            },&#xd;
+                            &quot;contextAlbumReference&quot;: [&#xd;
+                              {&#xd;
+                                &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                                &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                              }&#xd;
+                            ],&#xd;
+                            &quot;taskLogic&quot;: {&#xd;
+                              &quot;key&quot;: &quot;TaskLogic&quot;,&#xd;
+                              &quot;logicFlavour&quot;: &quot;JAVASCRIPT&quot;,&#xd;
+                              &quot;logic&quot;: &quot;/*\n * ============LICENSE_START=======================================================\n *  Copyright (C) 2020 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \&quot;AS IS\&quot; BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\nvar uuidType = java.util.UUID;\n\n\n//albumID will be used to fetch info from our album later\nvar albumID = uuidType.fromString(\&quot;d0050623-18e5-46c9-9298-9a567990cd7c\&quot;);\nvar pmSubscriptionInfo = executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).getSchemaHelper().createNewInstance();\nvar returnValue = true;;\n\nif(executor.inFields.get(\&quot;policyName\&quot;) != null) {\n    var changeType = executor.inFields.get(\&quot;changeType\&quot;)\n    var nfName = executor.inFields.get(\&quot;nfName\&quot;)\n    var policyName = executor.inFields.get(\&quot;policyName\&quot;)\n    var closedLoopControlName = executor.inFields.get(\&quot;closedLoopControlName\&quot;)\n    var subscription = executor.inFields.get(\&quot;subscription\&quot;)\n\n    pmSubscriptionInfo.put(\&quot;nfName\&quot;, executor.inFields.get(\&quot;nfName\&quot;));\n    pmSubscriptionInfo.put(\&quot;changeType\&quot;, executor.inFields.get(\&quot;changeType\&quot;))\n    pmSubscriptionInfo.put(\&quot;policyName\&quot;, executor.inFields.get(\&quot;policyName\&quot;))\n    pmSubscriptionInfo.put(\&quot;closedLoopControlName\&quot;, executor.inFields.get(\&quot;closedLoopControlName\&quot;))\n    pmSubscriptionInfo.put(\&quot;subscription\&quot;, subscription)\n\n    executor.getContextAlbum(\&quot;PMSubscriptionAlbum\&quot;).put(albumID.toString(), pmSubscriptionInfo);\n\n    executor.outFields.put(\&quot;albumID\&quot;, albumID)\n} else {\n    executor.message = \&quot;Received invalid event\&quot;\n    returnValue = false;\n}\nreturnValue;&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  },&#xd;
+                  &quot;events&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_Events&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;eventMap&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;CDS&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;status&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;status&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseStatusEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;DCAE&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;status&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;status&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionPayloadEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CreateSubscriptionRequestEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionPayloadEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;DeleteSubscriptionRequestEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;actionIdentifiers&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;commonHeader&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;payload&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionOutputEvent&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;albumID&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;testPolicyB&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;nameSpace&quot;: &quot;org.onap.policy.apex.onap.pmcontrol&quot;,&#xd;
+                            &quot;source&quot;: &quot;DCAE&quot;,&#xd;
+                            &quot;target&quot;: &quot;APEX&quot;,&#xd;
+                            &quot;parameter&quot;: {&#xd;
+                              &quot;entry&quot;: [&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;changeType&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;changeType&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;closedLoopControlName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;nfName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;nfName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;policyName&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;policyName&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                },&#xd;
+                                {&#xd;
+                                  &quot;key&quot;: &quot;subscription&quot;,&#xd;
+                                  &quot;value&quot;: {&#xd;
+                                    &quot;key&quot;: &quot;subscription&quot;,&#xd;
+                                    &quot;fieldSchemaKey&quot;: {&#xd;
+                                      &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                                    },&#xd;
+                                    &quot;optional&quot;: false&#xd;
+                                  }&#xd;
+                                }&#xd;
+                              ]&#xd;
+                            }&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  },&#xd;
+                  &quot;albums&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_Albums&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;albums&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionAlbum&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;scope&quot;: &quot;policy&quot;,&#xd;
+                            &quot;isWritable&quot;: true,&#xd;
+                            &quot;itemSchema&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            }&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  },&#xd;
+                  &quot;schemas&quot;: {&#xd;
+                    &quot;key&quot;: {&#xd;
+                      &quot;name&quot;: &quot;APEXgRPCPolicy_Schemas&quot;,&#xd;
+                      &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                    },&#xd;
+                    &quot;schemas&quot;: {&#xd;
+                      &quot;entry&quot;: [&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSActionIdentifiersType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSActionIdentifiers_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;actionName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;blueprintName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;blueprintVersion\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;mode\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSCreateSubscriptionPayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n  \&quot;type\&quot;: \&quot;map\&quot;,\n  \&quot;values\&quot;: {\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSRequestPayloadEntry\&quot;,\n    \&quot;fields\&quot;: [\n      {\n        \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_properties\&quot;,\n        \&quot;type\&quot;: {\n          \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_properties_record\&quot;,\n          \&quot;type\&quot;: \&quot;record\&quot;,\n          \&quot;fields\&quot;: [\n            {\n              \&quot;name\&quot;: \&quot;nfName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n              \&quot;type\&quot;: {\n                \&quot;type\&quot;: \&quot;array\&quot;,\n                \&quot;items\&quot;: {\n                  \&quot;name\&quot;: \&quot;measurementGroups_record\&quot;,\n                  \&quot;type\&quot;: \&quot;record\&quot;,\n                  \&quot;fields\&quot;: [\n                    {\n                      \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                      \&quot;type\&quot;: {\n                        \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;measurementTypes_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          },\n                          {\n                            \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;managedObjectDNsBasic_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;DN\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    ]\n  }\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSDeleteSubscriptionPayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n  \&quot;type\&quot;: \&quot;map\&quot;,\n  \&quot;values\&quot;: {\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSRequestPayloadEntry\&quot;,\n    \&quot;fields\&quot;: [\n      {\n        \&quot;name\&quot;: \&quot;delete_DasH_subscription_DasH_properties\&quot;,\n        \&quot;type\&quot;: {\n          \&quot;name\&quot;: \&quot;delete_DasH_subscription_DasH_properties_record\&quot;,\n          \&quot;type\&quot;: \&quot;record\&quot;,\n          \&quot;fields\&quot;: [\n            {\n              \&quot;name\&quot;: \&quot;nfName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n              \&quot;type\&quot;: \&quot;string\&quot;\n            },\n            {\n              \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n              \&quot;type\&quot;: {\n                \&quot;type\&quot;: \&quot;array\&quot;,\n                \&quot;items\&quot;: {\n                  \&quot;name\&quot;: \&quot;measurementGroups_record\&quot;,\n                  \&quot;type\&quot;: \&quot;record\&quot;,\n                  \&quot;fields\&quot;: [\n                    {\n                      \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                      \&quot;type\&quot;: {\n                        \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;measurementTypes_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          },\n                          {\n                            \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                            \&quot;type\&quot;: {\n                              \&quot;type\&quot;: \&quot;array\&quot;,\n                              \&quot;items\&quot;: {\n                                \&quot;name\&quot;: \&quot;managedObjectDNsBasic_record\&quot;,\n                                \&quot;type\&quot;: \&quot;record\&quot;,\n                                \&quot;fields\&quot;: [\n                                  {\n                                    \&quot;name\&quot;: \&quot;DN\&quot;,\n                                    \&quot;type\&quot;: \&quot;string\&quot;\n                                  }\n                                ]\n                              }\n                            }\n                          }\n                        ]\n                      }\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    ]\n  }\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSRequestCommonHeaderType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSRequestCommonHeader_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;originatorId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;requestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;subRequestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseCommonHeaderType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSResponseCommonHeader_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;originatorId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;requestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;subRequestId\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;timestamp\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponsePayloadType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n  \&quot;name\&quot;: \&quot;CDSResponsePayloadEntry\&quot;,\n  \&quot;type\&quot;: \&quot;record\&quot;,\n  \&quot;namespace\&quot;: \&quot;com.acme.avro\&quot;,\n  \&quot;fields\&quot;: [\n    {\n      \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_response\&quot;,\n      \&quot;type\&quot;: {\n        \&quot;name\&quot;: \&quot;create_DasH_subscription_DasH_response\&quot;,\n        \&quot;type\&quot;: \&quot;record\&quot;,\n        \&quot;fields\&quot;: [\n          {\n            \&quot;name\&quot;: \&quot;odl_DasH_response\&quot;,\n            \&quot;type\&quot;: {\n              \&quot;name\&quot;: \&quot;odl_DasH_response\&quot;,\n              \&quot;type\&quot;: \&quot;record\&quot;,\n              \&quot;fields\&quot;: [\n                  {\n                    \&quot;name\&quot;: \&quot;status\&quot;,\n                    \&quot;type\&quot;: \&quot;string\&quot;\n                  }\n              ]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;CDSResponseStatusType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;CDSResponseStatus_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;code\&quot;,\n            \&quot;type\&quot;: \&quot;int\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;eventType\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;timestamp\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;message\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;PMSubscriptionType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n  \&quot;name\&quot;: \&quot;PMSubscription\&quot;,\n  \&quot;type\&quot;: \&quot;record\&quot;,\n  \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.pmcontrol\&quot;,\n  \&quot;fields\&quot;: [\n    {\n      \&quot;name\&quot;: \&quot;nfName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;changeType\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;closedLoopControlName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;policyName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;subscription\&quot;,\n      \&quot;type\&quot;: {\n        \&quot;name\&quot;: \&quot;subscription\&quot;,\n        \&quot;type\&quot;: \&quot;record\&quot;,\n        \&quot;fields\&quot;: [\n          {\n            \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n            \&quot;type\&quot;: \&quot;int\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n          },\n          {\n            \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n            \&quot;type\&quot;: {\n              \&quot;type\&quot;: \&quot;array\&quot;,\n              \&quot;items\&quot;: {\n                \&quot;name\&quot;: \&quot;Measurement_Groups_Type\&quot;,\n                \&quot;type\&quot;: \&quot;record\&quot;,\n                \&quot;fields\&quot;: [\n                  {\n                    \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n                    \&quot;type\&quot;: {\n                      \&quot;name\&quot;: \&quot;Measurement_Group_Type\&quot;,\n                      \&quot;type\&quot;: \&quot;record\&quot;,\n                      \&quot;fields\&quot;: [\n                        {\n                          \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                          \&quot;type\&quot;: {\n                            \&quot;type\&quot;: \&quot;array\&quot;,\n                            \&quot;items\&quot;: {\n                              \&quot;name\&quot;: \&quot;Measurement_Types_Type\&quot;,\n                              \&quot;type\&quot;: \&quot;record\&quot;,\n                              \&quot;fields\&quot;: [\n                                {\n                                  \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                                  \&quot;type\&quot;: \&quot;string\&quot;\n                                }\n                              ]\n                            }\n                          }\n                        },\n                        {\n                          \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                          \&quot;type\&quot;: {\n                            \&quot;type\&quot;: \&quot;array\&quot;,\n                            \&quot;items\&quot;: {\n                              \&quot;name\&quot;: \&quot;Managed_Object_Dns_Basic_Type\&quot;,\n                              \&quot;type\&quot;: \&quot;record\&quot;,\n                              \&quot;fields\&quot;: [\n                                {\n                                  \&quot;name\&quot;: \&quot;DN\&quot;,\n                                  \&quot;type\&quot;: \&quot;string\&quot;\n                                }\n                              ]\n                            }\n                          }\n                        }\n                      ]\n                    }\n                  }\n                ]\n              }\n            }\n          }\n        ]\n      }\n    }\n  ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SimpleIntType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Java&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;java.lang.Integer&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SimpleStringType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Java&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;java.lang.String&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SubscriptionStatusType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n    \&quot;type\&quot;: \&quot;record\&quot;,\n    \&quot;name\&quot;: \&quot;ActivateSubscriptionStatus_Type\&quot;,\n    \&quot;namespace\&quot;: \&quot;org.onap.policy.apex.onap.helloworld\&quot;,\n    \&quot;fields\&quot;: [\n        {\n            \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;nfName\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;changeType\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        },\n        {\n            \&quot;name\&quot;: \&quot;message\&quot;,\n            \&quot;type\&quot;: \&quot;string\&quot;\n        }\n    ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;SubscriptionType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Avro&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;{\n  \&quot;name\&quot;: \&quot;subscription\&quot;,\n  \&quot;type\&quot;: \&quot;record\&quot;,\n  \&quot;fields\&quot;: [\n    {\n      \&quot;name\&quot;: \&quot;subscriptionName\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;administrativeState\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;fileBasedGP\&quot;,\n      \&quot;type\&quot;: \&quot;int\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;fileLocation\&quot;,\n      \&quot;type\&quot;: \&quot;string\&quot;\n    },\n    {\n      \&quot;name\&quot;: \&quot;measurementGroups\&quot;,\n      \&quot;type\&quot;: {\n        \&quot;type\&quot;: \&quot;array\&quot;,\n        \&quot;items\&quot;: {\n          \&quot;name\&quot;: \&quot;Measurement_Groups_Type\&quot;,\n          \&quot;type\&quot;: \&quot;record\&quot;,\n          \&quot;fields\&quot;: [\n            {\n              \&quot;name\&quot;: \&quot;measurementGroup\&quot;,\n              \&quot;type\&quot;: {\n                \&quot;name\&quot;: \&quot;Measurement_Group_Type\&quot;,\n                \&quot;type\&quot;: \&quot;record\&quot;,\n                \&quot;fields\&quot;: [\n                  {\n                    \&quot;name\&quot;: \&quot;measurementTypes\&quot;,\n                    \&quot;type\&quot;: {\n                      \&quot;type\&quot;: \&quot;array\&quot;,\n                      \&quot;items\&quot;: {\n                        \&quot;name\&quot;: \&quot;Measurement_Types_Type\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;measurementType\&quot;,\n                            \&quot;type\&quot;: \&quot;string\&quot;\n                          }\n                        ]\n                      }\n                    }\n                  },\n                  {\n                    \&quot;name\&quot;: \&quot;managedObjectDNsBasic\&quot;,\n                    \&quot;type\&quot;: {\n                      \&quot;type\&quot;: \&quot;array\&quot;,\n                      \&quot;items\&quot;: {\n                        \&quot;name\&quot;: \&quot;Managed_Object_Dns_Basic_Type\&quot;,\n                        \&quot;type\&quot;: \&quot;record\&quot;,\n                        \&quot;fields\&quot;: [\n                          {\n                            \&quot;name\&quot;: \&quot;DN\&quot;,\n                            \&quot;type\&quot;: \&quot;string\&quot;\n                          }\n                        ]\n                      }\n                    }\n                  }\n                ]\n              }\n            }\n          ]\n        }\n      }\n    }\n  ]\n}&quot;&#xd;
+                          }&#xd;
+                        },&#xd;
+                        {&#xd;
+                          &quot;key&quot;: {&#xd;
+                            &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                            &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                          },&#xd;
+                          &quot;value&quot;: {&#xd;
+                            &quot;key&quot;: {&#xd;
+                              &quot;name&quot;: &quot;UUIDType&quot;,&#xd;
+                              &quot;version&quot;: &quot;0.0.1&quot;&#xd;
+                            },&#xd;
+                            &quot;schemaFlavour&quot;: &quot;Java&quot;,&#xd;
+                            &quot;schemaDefinition&quot;: &quot;java.util.UUID&quot;&#xd;
+                          }&#xd;
+                        }&#xd;
+                      ]&#xd;
+                    }&#xd;
+                  }&#xd;
+                }&#xd;
+              }&#xd;
+            },&#xd;
+            &quot;eventOutputParameters&quot;: {&#xd;
+              &quot;logOutputter&quot;: {&#xd;
+                &quot;carrierTechnologyParameters&quot;: {&#xd;
+                  &quot;carrierTechnology&quot;: &quot;FILE&quot;,&#xd;
+                  &quot;parameters&quot;: {&#xd;
+                    &quot;fileName&quot;: &quot;outputevents.log&quot;&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;eventProtocolParameters&quot;: {&#xd;
+                  &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
+                }&#xd;
+              },&#xd;
+              &quot;CDSRequestProducer&quot;: {&#xd;
+                &quot;carrierTechnologyParameters&quot;: {&#xd;
+                  &quot;carrierTechnology&quot;: &quot;GRPC&quot;,&#xd;
+                  &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.grpc.GrpcCarrierTechnologyParameters&quot;,&#xd;
+                  &quot;parameters&quot;: {&#xd;
+                    &quot;host&quot;: &quot;10.2.0.122&quot;,&#xd;
+                    &quot;port&quot;: 54322,&#xd;
+                    &quot;username&quot;: &quot;ccsdkapps&quot;,&#xd;
+                    &quot;password&quot;: &quot;ccsdkapps&quot;,&#xd;
+                    &quot;timeout&quot;: 60&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;eventProtocolParameters&quot;: {&#xd;
+                  &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
+                },&#xd;
+                &quot;eventNameFilter&quot;: &quot;(Create|Delete)SubscriptionRequestEvent&quot;,&#xd;
+                &quot;requestorMode&quot;: true,&#xd;
+                &quot;requestorPeer&quot;: &quot;CDSRequestConsumer&quot;,&#xd;
+                &quot;requestorTimeout&quot;: 500&#xd;
+              },&#xd;
+              &quot;CDSReplyProducer&quot;: {&#xd;
+                &quot;carrierTechnologyParameters&quot;: {&#xd;
+                  &quot;carrierTechnology&quot;: &quot;RESTCLIENT&quot;,&#xd;
+                  &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters&quot;,&#xd;
+                  &quot;parameters&quot;: {&#xd;
+                    &quot;url&quot;: &quot;http://message-router:3904/events/POLICY-CL-MGT&quot;&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;eventProtocolParameters&quot;: {&#xd;
+                  &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
+                },&#xd;
+                &quot;eventNameFilter&quot;: &quot;CDSResponseStatusEvent&quot;&#xd;
+              }&#xd;
+            },&#xd;
+            &quot;eventInputParameters&quot;: {&#xd;
+              &quot;DCAEConsumer&quot;: {&#xd;
+                &quot;carrierTechnologyParameters&quot;: {&#xd;
+                  &quot;carrierTechnology&quot;: &quot;RESTCLIENT&quot;,&#xd;
+                  &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters&quot;,&#xd;
+                  &quot;parameters&quot;: {&#xd;
+                    &quot;url&quot;: &quot;http://message-router:3904/events/unauthenticated.DCAE_CL_OUTPUT/cg1/c1?timeout=30000&quot;&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;eventProtocolParameters&quot;: {&#xd;
+                  &quot;eventProtocol&quot;: &quot;JSON&quot;,&#xd;
+                  &quot;parameters&quot;: {&#xd;
+                    &quot;nameAlias&quot;: &quot;testPolicyB&quot;&#xd;
+                  }&#xd;
+                },&#xd;
+                &quot;eventName&quot;: &quot;testPolicyB&quot;,&#xd;
+                &quot;eventNameFilter&quot;: &quot;testPolicyB&quot;&#xd;
+              },&#xd;
+              &quot;CDSRequestConsumer&quot;: {&#xd;
+                &quot;carrierTechnologyParameters&quot;: {&#xd;
+                  &quot;carrierTechnology&quot;: &quot;GRPC&quot;,&#xd;
+                  &quot;parameterClassName&quot;: &quot;org.onap.policy.apex.plugins.event.carrier.grpc.GrpcCarrierTechnologyParameters&quot;&#xd;
+                },&#xd;
+                &quot;eventProtocolParameters&quot;: {&#xd;
+                  &quot;eventProtocol&quot;: &quot;JSON&quot;&#xd;
+                },&#xd;
+                &quot;eventName&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                &quot;eventNameFilter&quot;: &quot;CDSResponseEvent&quot;,&#xd;
+                &quot;requestorMode&quot;: true,&#xd;
+                &quot;requestorPeer&quot;: &quot;CDSRequestProducer&quot;,&#xd;
+                &quot;requestorTimeout&quot;: 500&#xd;
+              }&#xd;
+            }&#xd;
+          },&#xd;
+          &quot;name&quot;: &quot;operational.apex.stabilityTestDefaultDomain&quot;,&#xd;
+          &quot;version&quot;: &quot;1.0.0&quot;,&#xd;
+          &quot;metadata&quot;: {&#xd;
+            &quot;policy-id&quot;: &quot;operational.apex.stabilityTestDefaultDomain&quot;,&#xd;
+            &quot;policy-version&quot;: &quot;1.0.0&quot;&#xd;
+          }&#xd;
+        }&#xd;
+      }&#xd;
+    ]&#xd;
+  },&#xd;
+  &quot;name&quot;: &quot;ToscaServiceTemplateSimple&quot;,&#xd;
+  &quot;version&quot;: &quot;1.0.0&quot;,&#xd;
+  &quot;metadata&quot;: {}&#xd;
+}</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+              </elementProp>
+            </collectionProp>
+          </elementProp>
+          <stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
+          <stringProp name="HTTPSampler.port">${API_PORT}</stringProp>
+          <stringProp name="HTTPSampler.protocol">https</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+          <stringProp name="HTTPSampler.path">/policy/api/v1/policies</stringProp>
+          <stringProp name="HTTPSampler.method">POST</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+          <stringProp name="HTTPSampler.response_timeout"></stringProp>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings">
+              <stringProp name="49586">200</stringProp>
+            </collectionProp>
+            <stringProp name="Assertion.custom_message"></stringProp>
+            <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">1</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+        </hashTree>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Deploy policy" enabled="true">
+          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+            <collectionProp name="Arguments.arguments">
+              <elementProp name="" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                <stringProp name="Argument.value">{&#xd;
+    &quot;groups&quot;: [&#xd;
+        {&#xd;
+            &quot;name&quot;: &quot;defaultGroup&quot;,&#xd;
+            &quot;deploymentSubgroups&quot;: [&#xd;
+                {&#xd;
+                    &quot;pdpType&quot;: &quot;apex&quot;,&#xd;
+                    &quot;action&quot;: &quot;POST&quot;,&#xd;
+                    &quot;policies&quot;: [&#xd;
+                        {&#xd;
+                            &quot;name&quot;: &quot;operational.apex.stabilityTestDefaultDomain&quot;,&#xd;
+                            &quot;version&quot;: &quot;1.0.0&quot;&#xd;
+                        }&#xd;
+                    ]&#xd;
+                }&#xd;
+            ]&#xd;
+        }&#xd;
+    ]&#xd;
+}</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+              </elementProp>
+            </collectionProp>
+          </elementProp>
+          <stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
+          <stringProp name="HTTPSampler.port">${PAP_PORT}</stringProp>
+          <stringProp name="HTTPSampler.protocol">https</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+          <stringProp name="HTTPSampler.path">/policy/pap/v1/pdps/deployments/batch</stringProp>
+          <stringProp name="HTTPSampler.method">POST</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+          <stringProp name="HTTPSampler.response_timeout"></stringProp>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings">
+              <stringProp name="49588">202</stringProp>
+            </collectionProp>
+            <stringProp name="Assertion.custom_message"></stringProp>
+            <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">1</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <intProp name="LoopController.loops">-1</intProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">${threads}</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <boolProp name="ThreadGroup.scheduler">true</boolProp>
+        <stringProp name="ThreadGroup.duration">5400</stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+      </ThreadGroup>
+      <hashTree>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Health Check" enabled="true">
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
+          <stringProp name="HTTPSampler.port">${APEX_PORT}</stringProp>
+          <stringProp name="HTTPSampler.protocol">https</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+          <stringProp name="HTTPSampler.path">/policy/apex-pdp/v1/healthcheck</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+          <stringProp name="HTTPSampler.response_timeout"></stringProp>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true">
+            <stringProp name="cacheKey">true</stringProp>
+            <stringProp name="filename"></stringProp>
+            <stringProp name="parameters"></stringProp>
+            <stringProp name="script">import groovy.json.JsonSlurper;
+
+def res = [];
+if (prev.getResponseCode() == &apos;200&apos;) {
+    def jsonSlurper = new JsonSlurper();
+    res = jsonSlurper.parseText(prev.getResponseDataAsString());
+
+    assert res instanceof Map;
+    assert res.healthy == true;
+    assert res.message == &apos;alive&apos;;
+}
+</stringProp>
+            <stringProp name="scriptLanguage">groovy</stringProp>
+          </JSR223Assertion>
+          <hashTree/>
+        </hashTree>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Test Controller" enabled="true"/>
+        <hashTree>
+          <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="false">
+            <stringProp name="groupSize">${threads}</stringProp>
+            <stringProp name="timeoutInMs">${threadsTimeOutInMs}</stringProp>
+          </SyncTimer>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Send Input Event" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;changeType&quot;: &quot;CREATE&quot;,&#xd;
+  &quot;closedLoopControlName&quot;: &quot;test&quot;,&#xd;
+  &quot;policyName&quot;: &quot;test&quot;,&#xd;
+  &quot;nfName&quot;: &quot;pnf300&quot;,&#xd;
+  &quot;subscription&quot;: {&#xd;
+    &quot;subscriptionName&quot;: &quot;testPolicyB&quot;,&#xd;
+    &quot;administrativeState&quot;: &quot;UNLOCKED&quot;,&#xd;
+    &quot;fileBasedGP&quot;: 15,&#xd;
+    &quot;fileLocation&quot;: &quot;/pm/pm.xml&quot;,&#xd;
+    &quot;measurementGroups&quot;: [&#xd;
+      {&#xd;
+        &quot;measurementGroup&quot;: {&#xd;
+          &quot;measurementTypes&quot;: [&#xd;
+            {&#xd;
+              &quot;measurementType&quot;: &quot;countera&quot;&#xd;
+            },&#xd;
+            {&#xd;
+              &quot;measurementType&quot;: &quot;counterb&quot;&#xd;
+            }&#xd;
+          ],&#xd;
+          &quot;managedObjectDNsBasic&quot;: [&#xd;
+            {&#xd;
+              &quot;DN&quot;: &quot;dna&quot;&#xd;
+            },&#xd;
+            {&#xd;
+              &quot;DN&quot;: &quot;dnb&quot;&#xd;
+            }&#xd;
+          ]&#xd;
+        }&#xd;
+      },&#xd;
+      {&#xd;
+        &quot;measurementGroup&quot;: {&#xd;
+          &quot;measurementTypes&quot;: [&#xd;
+            {&#xd;
+              &quot;measurementType&quot;: &quot;counterc&quot;&#xd;
+            },&#xd;
+            {&#xd;
+              &quot;measurementType&quot;: &quot;counterd&quot;&#xd;
+            }&#xd;
+          ],&#xd;
+          &quot;managedObjectDNsBasic&quot;: [&#xd;
+            {&#xd;
+              &quot;DN&quot;: &quot;dnc&quot;&#xd;
+            },&#xd;
+            {&#xd;
+              &quot;DN&quot;: &quot;dnd&quot;&#xd;
+            }&#xd;
+          ]&#xd;
+        }&#xd;
+      }&#xd;
+    ]&#xd;
+  }&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
+            <stringProp name="HTTPSampler.port">${DMAAP_PORT}</stringProp>
+            <stringProp name="HTTPSampler.protocol">http</stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+            <stringProp name="HTTPSampler.path">/events/unauthenticated.DCAE_CL_OUTPUT</stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            <stringProp name="TestPlan.comments">Send input event to apex-pdp</stringProp>
+          </HTTPSamplerProxy>
+          <hashTree>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Response Code" enabled="true">
+              <collectionProp name="Asserion.test_strings">
+                <stringProp name="49586">200</stringProp>
+              </collectionProp>
+              <stringProp name="Assertion.custom_message"></stringProp>
+              <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
+              <boolProp name="Assertion.assume_success">false</boolProp>
+              <intProp name="Assertion.test_type">8</intProp>
+              <stringProp name="Scope.variable">Response code</stringProp>
+              <stringProp name="TestPlan.comments">Assert response code coming back from apex-pdp</stringProp>
+            </ResponseAssertion>
+            <hashTree/>
+            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="WAIT" enabled="true">
+              <stringProp name="ConstantTimer.delay">${wait}</stringProp>
+            </ConstantTimer>
+            <hashTree/>
+          </hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get the ouput event response" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
+            <stringProp name="HTTPSampler.port">${DMAAP_PORT}</stringProp>
+            <stringProp name="HTTPSampler.protocol">http</stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+            <stringProp name="HTTPSampler.path">/events/POLICY-CL-MGT/cg${__threadNum}/c1?timeout=30000</stringProp>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            <stringProp name="TestPlan.comments">Check output event </stringProp>
+          </HTTPSamplerProxy>
+          <hashTree>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Response Code" enabled="true">
+              <collectionProp name="Asserion.test_strings">
+                <stringProp name="49586">200</stringProp>
+              </collectionProp>
+              <stringProp name="Assertion.custom_message"></stringProp>
+              <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
+              <boolProp name="Assertion.assume_success">false</boolProp>
+              <intProp name="Assertion.test_type">8</intProp>
+              <stringProp name="Scope.variable">Response code</stringProp>
+              <stringProp name="TestPlan.comments">Assert response code coming back from apex-pdp</stringProp>
+            </ResponseAssertion>
+            <hashTree/>
+            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Response Message" enabled="true">
+              <collectionProp name="Asserion.test_strings">
+                <stringProp name="1608759622">org.onap.policy.apex.onap.pmcontrol</stringProp>
+                <stringProp name="1996002556">CREATE</stringProp>
+              </collectionProp>
+              <stringProp name="Assertion.custom_message"></stringProp>
+              <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+              <boolProp name="Assertion.assume_success">false</boolProp>
+              <intProp name="Assertion.test_type">2</intProp>
+              <stringProp name="Scope.variable">Response code</stringProp>
+              <stringProp name="TestPlan.comments">Assert response message coming back from apex-pdp</stringProp>
+            </ResponseAssertion>
+            <hashTree/>
+            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="WAIT" enabled="false">
+              <stringProp name="ConstantTimer.delay">${wait}</stringProp>
+            </ConstantTimer>
+            <hashTree/>
+          </hashTree>
+        </hashTree>
+      </hashTree>
+      <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+      </PostThreadGroup>
+      <hashTree>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Un deploy policy" enabled="true">
+          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+            <collectionProp name="Arguments.arguments">
+              <elementProp name="" elementType="HTTPArgument">
+                <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                <stringProp name="Argument.value">{&#xd;
+    &quot;groups&quot;: [&#xd;
+        {&#xd;
+            &quot;name&quot;: &quot;defaultGroup&quot;,&#xd;
+            &quot;deploymentSubgroups&quot;: [&#xd;
+                {&#xd;
+                    &quot;pdpType&quot;: &quot;apex&quot;,&#xd;
+                    &quot;action&quot;: &quot;DELETE&quot;,&#xd;
+                    &quot;policies&quot;: [&#xd;
+                        {&#xd;
+                            &quot;name&quot;: &quot;operational.apex.stabilityTestDefaultDomain&quot;,&#xd;
+                            &quot;version&quot;: &quot;1.0.0&quot;&#xd;
+                        }&#xd;
+                    ]&#xd;
+                }&#xd;
+            ]&#xd;
+        }&#xd;
+    ]&#xd;
+}</stringProp>
+                <stringProp name="Argument.metadata">=</stringProp>
+              </elementProp>
+            </collectionProp>
+          </elementProp>
+          <stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
+          <stringProp name="HTTPSampler.port">${PAP_PORT}</stringProp>
+          <stringProp name="HTTPSampler.protocol">https</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+          <stringProp name="HTTPSampler.path">/policy/pap/v1/pdps/deployments/batch</stringProp>
+          <stringProp name="HTTPSampler.method">POST</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+          <stringProp name="HTTPSampler.response_timeout"></stringProp>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings">
+              <stringProp name="49588">202</stringProp>
+            </collectionProp>
+            <stringProp name="Assertion.custom_message"></stringProp>
+            <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">1</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+        </hashTree>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Policy" enabled="true">
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.domain">${HOSTNAME}</stringProp>
+          <stringProp name="HTTPSampler.port">${API_PORT}</stringProp>
+          <stringProp name="HTTPSampler.protocol">https</stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+          <stringProp name="HTTPSampler.path">/policy/api/v1/policytypes/onap.policies.native.Apex/versions/1.0.0/policies/operational.apex.stabilityTestDefaultDomain/versions/1.0.0</stringProp>
+          <stringProp name="HTTPSampler.method">DELETE</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+          <stringProp name="HTTPSampler.response_timeout"></stringProp>
+        </HTTPSamplerProxy>
+        <hashTree>
+          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+            <collectionProp name="Asserion.test_strings">
+              <stringProp name="49586">200</stringProp>
+            </collectionProp>
+            <stringProp name="Assertion.custom_message"></stringProp>
+            <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
+            <boolProp name="Assertion.assume_success">false</boolProp>
+            <intProp name="Assertion.test_type">1</intProp>
+          </ResponseAssertion>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>false</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+            <sentBytes>true</sentBytes>
+            <threadCounts>true</threadCounts>
+            <idleTime>true</idleTime>
+            <connectTime>true</connectTime>
+          </value>
+        </objProp>
+        <stringProp name="filename">/home/adityap/apex_stability/Stability.log</stringProp>
+      </ResultCollector>
+      <hashTree/>
+      <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>false</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+            <sentBytes>true</sentBytes>
+            <threadCounts>true</threadCounts>
+            <idleTime>true</idleTime>
+            <connectTime>true</connectTime>
+          </value>
+        </objProp>
+        <stringProp name="filename">/mnt/c/Users/arek/Desktop/s3p_results/performance/6/testresults_1.jtl</stringProp>
+      </ResultCollector>
+      <hashTree/>
+      <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>false</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+            <sentBytes>true</sentBytes>
+            <threadCounts>true</threadCounts>
+            <idleTime>true</idleTime>
+            <connectTime>true</connectTime>
+          </value>
+        </objProp>
+        <stringProp name="filename">/home/adityap/apex_stability/resultTable.log</stringProp>
+      </ResultCollector>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
