diff --git a/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/src/test/groovy/org/onap/cps/ncmp/rest/stub/providers/ResourceProviderSpec.groovy b/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/src/test/groovy/org/onap/cps/ncmp/rest/stub/providers/ResourceProviderSpec.groovy
index 7bfe5c3..948d8a1 100644
--- a/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/src/test/groovy/org/onap/cps/ncmp/rest/stub/providers/ResourceProviderSpec.groovy
+++ b/cps-ncmp-rest-stub/cps-ncmp-rest-stub-service/src/test/groovy/org/onap/cps/ncmp/rest/stub/providers/ResourceProviderSpec.groovy
@@ -21,7 +21,6 @@
 package org.onap.cps.ncmp.rest.stub.providers
 
 import java.nio.file.Files
-import java.nio.file.Path
 import org.springframework.util.FileSystemUtils
 import spock.lang.Shared
 import spock.lang.Specification
@@ -46,7 +45,7 @@
 
     def 'Resource Provider with existing file on #scenario'() {
 
-        given: 'a resource provider with base stub folder defined on #scenario' 
+        given: 'a resource provider with base stub folder defined on #scenario'
             def resourceProvider = new ResourceProviderImpl(dir)
         when: 'attempting to access that file #filename'
             def optional= resourceProvider.getResourceInputStream(filename)
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandler.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandler.java
index 101be45..d7aeab6 100644
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandler.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreRequestHandler.java
@@ -167,12 +167,10 @@
         dataOperationRequest.getDataOperationDefinitions().forEach(dataOperationDetail -> {
             if (OperationType.fromOperationName(dataOperationDetail.getOperation()) != READ) {
                 throw new OperationNotSupportedException(
-                        dataOperationDetail.getOperation() + " operation not yet supported for target ids :"
-                                + dataOperationDetail.getCmHandleIds());
+                        dataOperationDetail.getOperation() + " operation not yet supported");
             } else if (DatastoreType.fromDatastoreName(dataOperationDetail.getDatastore()) == OPERATIONAL) {
                 throw new InvalidDatastoreException(dataOperationDetail.getDatastore()
-                        + " datastore is not supported for target ids : "
-                        + dataOperationDetail.getCmHandleIds());
+                        + " datastore is not supported");
             }
         });
     }
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NcmpEventResponseCode.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NcmpEventResponseCode.java
index 42d8135..d250c36 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NcmpEventResponseCode.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NcmpEventResponseCode.java
@@ -25,6 +25,7 @@
 @Getter
 public enum NcmpEventResponseCode {
 
+    SUCCESS("0", "Successfully applied changes"),
     CM_HANDLES_NOT_FOUND("100", "cm handle id(s) not found"),
     CM_HANDLES_NOT_READY("101", "cm handle(s) not ready"),
     DMI_SERVICE_NOT_RESPONDING("102", "dmi plugin service is not responding"),
diff --git a/csit/plans/cps/test.properties b/csit/plans/cps/test.properties
index 14d6f77..474a718 100644
--- a/csit/plans/cps/test.properties
+++ b/csit/plans/cps/test.properties
@@ -29,3 +29,6 @@
 CMHANDLE_DATA_SYNC_SLEEP_TIME_MS=2000
 
 CPS_HOME=$CPS_HOME
+
+DMI_DEMO_STUB_PORT=8784
+DMI_DEMO_STUB_VERSION=latest
diff --git a/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-app/pom.xml b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-app/pom.xml
new file mode 100644
index 0000000..71dcec8
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-app/pom.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============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=========================================================
+-->
+
+<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onap.cps</groupId>
+        <artifactId>dmi-plugin-demo-and-csit-stub</artifactId>
+        <version>3.3.4-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>dmi-plugin-demo-and-csit-stub-app</artifactId>
+
+    <properties>
+        <app>org.onap.cps.ncmp.dmi.rest.stub.DmiDemoApplication</app>
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+        <base.image>${docker.pull.registry}/onap/integration-java11:8.0.0</base.image>
+        <image.tag>${project.version}-${maven.build.timestamp}</image.tag>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>com.google.cloud.tools</groupId>
+                    <artifactId>jib-maven-plugin</artifactId>
+                    <configuration>
+                        <container>
+                            <mainClass>${app}</mainClass>
+                            <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
+                        </container>
+                        <from>
+                            <image>${base.image}</image>
+                        </from>
+                        <to>
+                            <tags>
+                                <tag>latest</tag>
+                            </tags>
+                            <image>${docker.push.registry}/onap/${image.name}:${image.tag}</image>
+                        </to>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <phase>package</phase>
+                            <id>build</id>
+                            <goals>
+                                <goal>dockerBuild</goal>
+                            </goals>
+                        </execution>
+                        <execution>
+                            <phase>deploy</phase>
+                            <id>buildAndPush</id>
+                            <goals>
+                                <goal>build</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>docker</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <image.name>dmi-plugin-demo-and-csit-stub</image.name>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.google.cloud.tools</groupId>
+                        <artifactId>jib-maven-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+    <dependencies>
+        <dependency>
+            <groupId>org.onap.cps</groupId>
+            <artifactId>dmi-plugin-demo-and-csit-stub-service</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-app/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/DmiDemoApplication.java b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-app/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/DmiDemoApplication.java
new file mode 100644
index 0000000..2d4a2d8
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-app/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/DmiDemoApplication.java
@@ -0,0 +1,32 @@
+/*
+ * ============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.dmi.rest.stub;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class DmiDemoApplication {
+
+    public static void main(final String[] args) {
+        SpringApplication.run(DmiDemoApplication.class, args);
+    }
+}
diff --git a/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/pom.xml b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/pom.xml
new file mode 100644
index 0000000..a9e3827
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/pom.xml
@@ -0,0 +1,51 @@
+<!--
+  ============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=========================================================
+-->
+
+<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onap.cps</groupId>
+        <artifactId>dmi-plugin-demo-and-csit-stub</artifactId>
+        <version>3.3.4-SNAPSHOT</version>
+    </parent>
+    <artifactId>dmi-plugin-demo-and-csit-stub-service</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-tomcat</artifactId>
+                </exclusion>
+            </exclusions>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.googlecode.json-simple</groupId>
+            <artifactId>json-simple</artifactId>
+            <version>1.1.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.onap.cps</groupId>
+            <artifactId>cps-ncmp-rest</artifactId>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java
new file mode 100644
index 0000000..b7e67d7
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java
@@ -0,0 +1,180 @@
+/*
+ * ============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.dmi.rest.stub.controller;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.cloudevents.CloudEvent;
+import io.cloudevents.core.builder.CloudEventBuilder;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Collectors;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+import org.onap.cps.ncmp.api.NcmpEventResponseCode;
+import org.onap.cps.ncmp.api.impl.utils.EventDateTimeFormatter;
+import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.CmHandle;
+import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.DataOperationRequest;
+import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.ResourceDataOperationRequests;
+import org.onap.cps.ncmp.dmi.rest.stub.utils.ResourceFileReaderUtil;
+import org.onap.cps.ncmp.events.async1_0_0.Data;
+import org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent;
+import org.onap.cps.ncmp.events.async1_0_0.Response;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.ApplicationContext;
+import org.springframework.core.io.ResourceLoader;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.kafka.core.KafkaTemplate;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("${rest.api.dmi-stub-base-path}")
+@RequiredArgsConstructor
+@Slf4j
+public class DmiRestStubController {
+
+    private final KafkaTemplate<String, CloudEvent> cloudEventKafkaTemplate;
+    private final ObjectMapper objectMapper;
+    private final ApplicationContext applicationContext;
+
+    @Value("${app.ncmp.async-m2m.topic}")
+    private String ncmpAsyncM2mTopic;
+
+    private String dataOperationEventType = "org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent";
+
+    /**
+     * Get all modules for given cm handle.
+     *
+     * @param cmHandle                The identifier for a network function, network element, subnetwork,
+     *                                or any other cm object by managed Network CM Proxy
+     * @param moduleReferencesRequest module references request body
+     * @return ResponseEntity response entity having module response as json string.
+     */
+    @PostMapping("/v1/ch/{cmHandle}/modules")
+    public ResponseEntity<String> getModuleReferences(@PathVariable final String cmHandle,
+                                                      @RequestBody final Object moduleReferencesRequest) {
+        final String moduleResponseContent = ResourceFileReaderUtil
+                .getResourceFileContent(applicationContext.getResource(
+                        ResourceLoader.CLASSPATH_URL_PREFIX + "module/moduleResponse.json"));
+        return ResponseEntity.ok(moduleResponseContent);
+    }
+
+    /**
+     * Get all module resources for given cm handle.
+     *
+     * @param cmHandle                   The identifier for a network function, network element, subnetwork,
+     *                                   or any other cm object by managed Network CM Proxy
+     * @param moduleResourcesReadRequest module resources read request body
+     * @return ResponseEntity response entity having module resources response as json string.
+     */
+    @PostMapping("/v1/ch/{cmHandle}/moduleResources")
+    public ResponseEntity<String> retrieveModuleResources(
+            @PathVariable final String cmHandle,
+            @RequestBody final Object moduleResourcesReadRequest) {
+        final String moduleResourcesResponseContent = ResourceFileReaderUtil
+                .getResourceFileContent(applicationContext.getResource(
+                        ResourceLoader.CLASSPATH_URL_PREFIX + "module/moduleResourcesResponse.json"));
+        return ResponseEntity.ok(moduleResourcesResponseContent);
+    }
+
+    /**
+     * This method is not implemented for ONAP DMI plugin.
+     *
+     * @param topic                         client given topic name
+     * @param requestId                     requestId generated by NCMP as an ack for client
+     * @param resourceDataOperationRequests list of operation details
+     * @return (@ code ResponseEntity) response entity
+     */
+    @PostMapping("/v1/data")
+    public ResponseEntity<Void> getResourceDataForCmHandleDataOperation(@RequestParam(value = "topic")
+                                                                            final String topic,
+                                                                        @RequestParam(value = "requestId")
+                                                                        final String requestId,
+                                                                        @RequestBody final ResourceDataOperationRequests
+                                                                                resourceDataOperationRequests) {
+        log.info("Request received from the NCMP to DMI Plugin");
+        resourceDataOperationRequests.forEach(resourceDataOperationRequest -> {
+            final DataOperationEvent dataOperationEvent = getDataOperationEvent(resourceDataOperationRequest);
+            resourceDataOperationRequest.getCmHandles().forEach(cmHandle -> {
+                dataOperationEvent.getData().getResponses().get(0).setIds(List.of(cmHandle.getId()));
+                final CloudEvent cloudEvent = buildAndGetCloudEvent(topic, requestId, dataOperationEvent);
+                cloudEventKafkaTemplate.send(ncmpAsyncM2mTopic, UUID.randomUUID().toString(), cloudEvent);
+            });
+        });
+        return new ResponseEntity<>(HttpStatus.ACCEPTED);
+    }
+
+    private CloudEvent buildAndGetCloudEvent(final String topic, final String requestId,
+                                             final DataOperationEvent dataOperationEvent) {
+        CloudEvent cloudEvent = null;
+        try {
+            cloudEvent = CloudEventBuilder.v1()
+                    .withId(UUID.randomUUID().toString())
+                    .withSource(URI.create("DMI"))
+                    .withType(dataOperationEventType)
+                    .withDataSchema(URI.create("urn:cps:" + dataOperationEventType + ":1.0.0"))
+                    .withTime(EventDateTimeFormatter.toIsoOffsetDateTime(
+                            EventDateTimeFormatter.getCurrentIsoFormattedDateTime()))
+                    .withData(objectMapper.writeValueAsBytes(dataOperationEvent))
+                    .withExtension("destination", topic)
+                    .withExtension("correlationid", requestId)
+                    .build();
+        } catch (final JsonProcessingException jsonProcessingException) {
+            log.error("Unable to parse event into bytes. cause : {}", jsonProcessingException.getMessage());
+        }
+        return cloudEvent;
+    }
+
+    private DataOperationEvent getDataOperationEvent(final DataOperationRequest dataOperationRequest) {
+        final Response response = new Response();
+        response.setOperationId(dataOperationRequest.getOperationId());
+        response.setStatusCode(NcmpEventResponseCode.SUCCESS.getStatusCode());
+        response.setStatusMessage(NcmpEventResponseCode.SUCCESS.getStatusMessage());
+        response.setIds(dataOperationRequest.getCmHandles().stream().map(CmHandle::getId).collect(Collectors.toList()));
+        final String ietfNetworkTopologySample = ResourceFileReaderUtil
+                .getResourceFileContent(applicationContext.getResource(
+                        ResourceLoader.CLASSPATH_URL_PREFIX
+                                + "data/operational/ietf-network-topology-sample-rfc8345.json"));
+        final JSONParser jsonParser = new JSONParser();
+        try {
+            response.setResult(jsonParser.parse(ietfNetworkTopologySample));
+        } catch (final ParseException parseException) {
+            log.error("Unable to parse event result as json object. cause : {}", parseException.getMessage());
+        }
+        final List<Response> responseList = new ArrayList<>();
+        responseList.add(response);
+        final Data data = new Data();
+        data.setResponses(responseList);
+        final DataOperationEvent dataOperationEvent = new DataOperationEvent();
+        dataOperationEvent.setData(data);
+        return dataOperationEvent;
+    }
+}
diff --git a/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/CmHandle.java b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/CmHandle.java
new file mode 100644
index 0000000..93a90c9
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/CmHandle.java
@@ -0,0 +1,33 @@
+/*
+ * ============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.dmi.rest.stub.model.data.operational;
+
+import java.util.HashMap;
+import java.util.Map;
+import lombok.Getter;
+import lombok.Setter;
+
+@Setter
+@Getter
+public class CmHandle {
+    private String id;
+    private Map<String, String> cmHandleProperties = new HashMap<>();
+}
diff --git a/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/DataOperationRequest.java b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/DataOperationRequest.java
new file mode 100644
index 0000000..2c0cb91
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/DataOperationRequest.java
@@ -0,0 +1,37 @@
+/*
+ * ============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.dmi.rest.stub.model.data.operational;
+
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+@Setter
+@Getter
+public class DataOperationRequest {
+    private String operation;
+    private String operationId;
+    private String datastore;
+    private String options;
+    private String resourceIdentifier;
+    private List<CmHandle> cmHandles = new ArrayList<>();
+}
diff --git a/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/ResourceDataOperationRequests.java b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/ResourceDataOperationRequests.java
new file mode 100644
index 0000000..68a222a
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/model/data/operational/ResourceDataOperationRequests.java
@@ -0,0 +1,27 @@
+/*
+ * ============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.dmi.rest.stub.model.data.operational;
+
+import java.util.ArrayList;
+
+public class ResourceDataOperationRequests extends ArrayList<DataOperationRequest> {
+    private static final long serialVersionUID = 3553323170854399881L;
+}
diff --git a/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/utils/ResourceFileReaderUtil.java b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/utils/ResourceFileReaderUtil.java
new file mode 100644
index 0000000..0d2adee
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/utils/ResourceFileReaderUtil.java
@@ -0,0 +1,51 @@
+/*
+ * ============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.dmi.rest.stub.utils;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.io.Resource;
+import org.springframework.util.StreamUtils;
+
+/**
+ * Common convenience methods for reading resource file content.
+ */
+@Slf4j
+public class ResourceFileReaderUtil {
+
+    /**
+     * Converts a resource file content into string.
+     *
+     * @param fileClasspath to name of the file in test/resources
+     * @return the content of the file as a String
+     * @throws IOException when there is an IO issue
+     */
+    public static String getResourceFileContent(final Resource fileClasspath) {
+        String fileContent = null;
+        try {
+            fileContent = StreamUtils.copyToString(fileClasspath.getInputStream(), StandardCharsets.UTF_8);
+        } catch (final IOException ioException) {
+            log.debug("unable to read resource file content. cause : {}", ioException.getMessage());
+        }
+        return fileContent;
+    }
+}
diff --git a/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/application.yml b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/application.yml
new file mode 100644
index 0000000..8e39a4e
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/application.yml
@@ -0,0 +1,42 @@
+#  ============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=========================================================
+server:
+    port: 8092
+
+rest:
+    api:
+        dmi-stub-base-path: /dmi
+
+spring:
+    main:
+        banner-mode: "off"
+    application:
+        name: "dmi-plugin-demo-and-csit-stub"
+
+    kafka:
+        bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVER:localhost:19092}
+        security:
+            protocol: PLAINTEXT
+        producer:
+            value-serializer: io.cloudevents.kafka.CloudEventSerializer
+            client-id: cps-core
+
+app:
+    ncmp:
+        async-m2m:
+            topic: ${NCMP_ASYNC_M2M_TOPIC:ncmp-async-m2m}
diff --git a/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/data/operational/ietf-network-topology-sample-rfc8345.json b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/data/operational/ietf-network-topology-sample-rfc8345.json
new file mode 100644
index 0000000..8f9dbc2
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/data/operational/ietf-network-topology-sample-rfc8345.json
@@ -0,0 +1,76 @@
+{
+     "ietf-network:networks": {
+       "network": [
+         {
+           "network-types": {
+           },
+           "network-id": "otn-hc",
+           "node": [
+             {
+               "node-id": "D1",
+               "termination-point": [
+                 {
+                   "tp-id": "1-0-1"
+                 },
+                 {
+                   "tp-id": "1-2-1"
+                 },
+                 {
+                   "tp-id": "1-3-1"
+                 }
+               ]
+             },
+             {
+               "node-id": "D2",
+               "termination-point": [
+                 {
+                   "tp-id": "2-0-1"
+                 },
+                 {
+                   "tp-id": "2-1-1"
+                 },
+                 {
+                   "tp-id": "2-3-1"
+                 }
+               ]
+             },
+             {
+               "node-id": "D3",
+               "termination-point": [
+                 {
+                   "tp-id": "3-1-1"
+                 },
+                 {
+                   "tp-id": "3-2-1"
+                 }
+               ]
+             }
+           ],
+           "ietf-network-topology:link": [
+             {
+               "link-id": "D1,1-2-1,D2,2-1-1",
+               "source": {
+                 "source-node": "D1",
+                 "source-tp": "1-2-1"
+               },
+               "destination": {
+                 "dest-node": "D2",
+                 "dest-tp": "2-1-1"
+               }
+             },
+             {
+               "link-id": "D2,2-1-1,D1,1-2-1",
+               "source": {
+                 "source-node": "D2",
+                 "source-tp": "2-1-1"
+               },
+               "destination": {
+                 "dest-node": "D1",
+                 "dest-tp": "1-2-1"
+               }
+             }
+           ]
+         }
+       ]
+     }
+   }
diff --git a/dmi-plugin-stub/files/moduleResourcesResponse.json b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/module/moduleResourcesResponse.json
similarity index 100%
rename from dmi-plugin-stub/files/moduleResourcesResponse.json
rename to dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/module/moduleResourcesResponse.json
diff --git a/dmi-plugin-stub/files/moduleResponse.json b/dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/module/moduleResponse.json
similarity index 100%
rename from dmi-plugin-stub/files/moduleResponse.json
rename to dmi-plugin-demo-and-csit-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/module/moduleResponse.json
diff --git a/dmi-plugin-demo-and-csit-stub/pom.xml b/dmi-plugin-demo-and-csit-stub/pom.xml
new file mode 100644
index 0000000..e8dd4c0
--- /dev/null
+++ b/dmi-plugin-demo-and-csit-stub/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============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=========================================================
+-->
+
+<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onap.cps</groupId>
+        <artifactId>cps-parent</artifactId>
+        <version>3.3.4-SNAPSHOT</version>
+        <relativePath>../cps-parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>dmi-plugin-demo-and-csit-stub</artifactId>
+    <packaging>pom</packaging>
+
+    <properties>
+        <parent.directory>${project.parent.basedir}/..</parent.directory>
+        <sonar.skip>true</sonar.skip>
+        <jacoco.skip>true</jacoco.skip>
+    </properties>
+
+    <modules>
+        <module>dmi-plugin-demo-and-csit-stub-service</module>
+        <module>dmi-plugin-demo-and-csit-stub-app</module>
+    </modules>
+</project>
\ No newline at end of file
diff --git a/dmi-plugin-stub/mappings/dataOperationRequest.json b/dmi-plugin-stub/mappings/dataOperationRequest.json
deleted file mode 100644
index 1df7363..0000000
--- a/dmi-plugin-stub/mappings/dataOperationRequest.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "request": {
-    "method": "POST",
-    "urlPattern": "/dmi/v1/data?.*"
-  },
-  "response": {
-    "status": 501
-  }
-}
diff --git a/dmi-plugin-stub/mappings/module.json b/dmi-plugin-stub/mappings/module.json
deleted file mode 100644
index a1b35ba..0000000
--- a/dmi-plugin-stub/mappings/module.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-    "request": {
-        "method": "POST",
-        "urlPattern": "/dmi/v1/ch/.*/modules"
-    },
-    "response": {
-        "status": 200,
-        "bodyFileName": "moduleResponse.json",
-        "headers": {
-            "Content-Type": "application/json"
-        }
-    }
-}
diff --git a/dmi-plugin-stub/mappings/moduleResources.json b/dmi-plugin-stub/mappings/moduleResources.json
deleted file mode 100644
index 4efb9b0..0000000
--- a/dmi-plugin-stub/mappings/moduleResources.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-    "request": {
-        "method": "POST",
-        "urlPattern": "/dmi/v1/ch/.*/moduleResources"
-    },
-    "response": {
-        "status": 200,
-        "bodyFileName": "moduleResourcesResponse.json",
-        "headers": {
-            "Content-Type": "application/json"
-        }
-    }
-}
diff --git a/dmi-plugin-stub/start.sh b/dmi-plugin-stub/start.sh
deleted file mode 100755
index ffa8ce8..0000000
--- a/dmi-plugin-stub/start.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-docker run -it --rm -p 8783:8080 -v "$(pwd)"/mappings:/home/wiremock/mappings -v "$(pwd)"/files:/home/wiremock/__files --name wiremock wiremock/wiremock:2.33.2 --verbose
-
diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml
index 3dc54bb..23f34b4 100644
--- a/docker-compose/docker-compose.yml
+++ b/docker-compose/docker-compose.yml
@@ -106,17 +106,19 @@
     profiles:
       - dmi-service
 
-  ncmp-dmi-plugin-stub:
-    container_name: ncmp-dmi-plugin-stub
-    image: wiremock/wiremock:2.33.2
+  ncmp-dmi-plugin-demo-and-csit-stub:
+    container_name: ncmp-dmi-plugin-demo-and-csit-stub
+    image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/dmi-plugin-demo-and-csit-stub:${DMI_DEMO_STUB_VERSION:-latest}
     ports:
-      - ${DMI_PORT:-8783}:8080
-    volumes:
-      - ../dmi-plugin-stub/mappings:/home/wiremock/mappings
-      - ../dmi-plugin-stub/files:/home/wiremock/__files
+      - ${DMI_DEMO_STUB_PORT:-8784}:8092
+    environment:
+      KAFKA_BOOTSTRAP_SERVER: kafka:9092
+      NCMP_CONSUMER_GROUP_ID: ncmp-group
+      NCMP_ASYNC_M2M_TOPIC: ncmp-async-m2m
     restart: unless-stopped
     profiles:
       - dmi-stub
+      - dmi-service
 
   prometheus:
     container_name: prometheus-container
diff --git a/pom.xml b/pom.xml
index 7270bc4..910afa2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,7 @@
         <module>cps-ncmp-rest-stub</module>
         <module>cps-path-parser</module>
         <module>cps-ri</module>
+        <module>dmi-plugin-demo-and-csit-stub</module>
         <module>integration-test</module>
         <module>checkstyle</module>
         <module>spotbugs</module>
