--- /dev/null
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2024 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.cps.ncmp.api.impl.config.embeddedcache;
+
+import com.hazelcast.config.MapConfig;
+import com.hazelcast.map.IMap;
+import java.util.Map;
+import org.onap.cps.cache.HazelcastCacheConfig;
+import org.onap.cps.ncmp.api.impl.events.cmsubscription.model.CmSubscriptionCacheObject;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class CmSubscriptionEventCacheConfig extends HazelcastCacheConfig {
+
+    private static final MapConfig cmSubscriptionEventCacheMapConfig =
+            createMapConfig("cmSubscriptionEventCacheMapConfig");
+
+    /**
+     * Distributed instance of cm subscription information
+     * cache that contains subscription id as key
+     * and incoming event data processed per dmi plugin.
+     *
+     * @return configured map of subscription events.
+     */
+    @Bean
+    public IMap<String, Map<String, CmSubscriptionCacheObject>> cmSubscriptionEventCache() {
+        return createHazelcastInstance("hazelCastInstanceCmSubscriptionEvents",
+                cmSubscriptionEventCacheMapConfig).getMap("cmSubscriptionEventCache");
+    }
+}
 
--- /dev/null
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2024 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.cps.ncmp.api.impl.events.cmsubscription.model;
+
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class CmSubscriptionCacheObject {
+
+    private List<CmSubscriptionPredicate> cmSubscriptionPredicates;
+    private CmSubscriptionStatus cmSubscriptionStatus;
+}
 
--- /dev/null
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2024 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.cps.ncmp.api.impl.events.cmsubscription.model;
+
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class CmSubscriptionPredicate {
+
+    private List<String> targetFilter;
+    private ScopeFilter scopeFilter;
+
+}
 
--- /dev/null
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2024 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.cps.ncmp.api.impl.events.cmsubscription.model;
+
+public enum CmSubscriptionStatus {
+
+    ACCEPTED("ACCEPTED"), REJECTED("REJECTED"), PENDING("PENDING");
+
+    private final String cmSubscriptionStatusValue;
+
+    CmSubscriptionStatus(final String cmSubscriptionStatusValue) {
+        this.cmSubscriptionStatusValue = cmSubscriptionStatusValue;
+    }
+}
 
--- /dev/null
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2024 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.cps.ncmp.api.impl.events.cmsubscription.model;
+
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+import org.onap.cps.ncmp.api.impl.operations.DatastoreType;
+
+@Getter
+@Setter
+public class ScopeFilter {
+
+    private DatastoreType datastoreType;
+    private List<String> xpathFilters;
+}
 
--- /dev/null
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2023 Nordix Foundation
+ *  ================================================================================
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.ncmp.api.impl.config.embeddedcache
+
+import com.hazelcast.core.Hazelcast
+import com.hazelcast.map.IMap
+import org.onap.cps.ncmp.api.impl.events.cmsubscription.model.CmSubscriptionCacheObject
+import org.onap.cps.ncmp.api.impl.events.cmsubscription.model.CmSubscriptionPredicate
+import org.onap.cps.ncmp.api.impl.events.cmsubscription.model.CmSubscriptionStatus
+import org.onap.cps.ncmp.api.impl.events.cmsubscription.model.ScopeFilter
+import org.onap.cps.ncmp.api.impl.operations.DatastoreType
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import spock.lang.Specification
+
+@SpringBootTest(classes = [CmSubscriptionEventCacheConfig])
+class CmSubscriptionEventCacheConfigSpec extends Specification {
+
+    @Autowired
+    IMap<String, Map<String, CmSubscriptionCacheObject>> cmSubscriptionEventCache;
+
+    def 'Embedded (hazelcast) cache for Cm Subscription Event Cache.'() {
+        expect: 'system is able to create an instance of the Forwarded Subscription Event Cache'
+            assert null != cmSubscriptionEventCache
+        and: 'there is at least 1 instance'
+            assert Hazelcast.allHazelcastInstances.size() > 0
+        and: 'Forwarded Subscription Event Cache is present'
+            assert Hazelcast.allHazelcastInstances.name.contains('hazelCastInstanceCmSubscriptionEvents')
+    }
+
+    def 'Provided CM Subscription data'() {
+        given: 'a cm subscription properties'
+            def subscriptionId = 'sub123'
+            def dmiPluginName = 'dummydmi'
+            def cmSubscriptionPredicate = new CmSubscriptionPredicate(targetFilter: ['cmhandle1', 'cmhandle2'], scopeFilter: new ScopeFilter(datastoreType: DatastoreType.PASSTHROUGH_RUNNING, xpathFilters: ['/a/b/c']))
+            def cmSubscriptionCacheObject = new CmSubscriptionCacheObject(cmSubscriptionPredicates: [cmSubscriptionPredicate] , cmSubscriptionStatus: CmSubscriptionStatus.PENDING)
+        when: 'the cache is populated'
+            cmSubscriptionEventCache.put(subscriptionId, [(dmiPluginName): cmSubscriptionCacheObject])
+        then: 'the values are present in memory'
+            assert cmSubscriptionEventCache.get(subscriptionId) != null
+        and: 'properties match'
+            assert dmiPluginName == cmSubscriptionEventCache.get(subscriptionId).keySet()[0]
+            assert cmSubscriptionCacheObject.cmSubscriptionStatus == cmSubscriptionEventCache.get(subscriptionId).values().cmSubscriptionStatus[0]
+            assert cmSubscriptionCacheObject.cmSubscriptionPredicates[0].targetFilter == cmSubscriptionEventCache.get(subscriptionId).values().cmSubscriptionPredicates[0].targetFilter[0]
+    }
+}
 
 +--------------+---------------------------------+----------------------------------------------------------+
 | cps-ncmp     | moduleSetTagCacheMapConfig      | Stores the Module Set Tags for cmHandles.                |
 +--------------+---------------------------------+----------------------------------------------------------+
+| cps-ncmp     | cmSubscriptionEventCache        | Stores and tracks CmSubscription requests.               |
++--------------+---------------------------------+----------------------------------------------------------+
 
-Total number of caches : 8
+Total number of caches : 9