Async request response NCMP -> Client

-Added consumer for DMI events and producer for forwarding to client
-Added schemas for events
-Updated tests
-Added new module for ncmp events
-Used mapstruct for event mapping

Issue-ID: CPS-830
Change-Id: I096d08af9d69092cf8651e11eaa00ce441fc3605
Signed-off-by: sourabh_sourabh <sourabh.sourabh@est.tech>
Signed-off-by: JosephKeenan <joseph.keenan@est.tech>
Signed-off-by: ToineSiebelink <toine.siebelink@est.tech>
Signed-off-by: JosephKeenan <joseph.keenan@est.tech>
diff --git a/cps-ncmp-events/src/main/resources/schemas/ncmp-async-request-response-event-schema-v1.json b/cps-ncmp-events/src/main/resources/schemas/ncmp-async-request-response-event-schema-v1.json
new file mode 100644
index 0000000..3fd15bd
--- /dev/null
+++ b/cps-ncmp-events/src/main/resources/schemas/ncmp-async-request-response-event-schema-v1.json
@@ -0,0 +1,187 @@
+{
+  "$schema": "https://json-schema.org/draft/2019-09/schema",
+  "$id": "urn:cps:org.onap.cps.ncmp.events:ncmp-async-request-response-event-schema:v1",
+  "$ref": "#/definitions/NcmpAsyncRequestResponseEvent",
+  "definitions": {
+    "NcmpAsyncRequestResponseEvent": {
+      "description": "The payload for CPS async request response event.",
+      "type": "object",
+      "properties": {
+        "eventId": {
+          "description": "The unique id identifying the event generated by DMI.",
+          "type": "string"
+        },
+        "eventCorrelationId": {
+          "description": "The request id passed by NCMP.",
+          "type": "string"
+        },
+        "eventTime": {
+          "description": "The time of the event. The expected format is 'yyyy-MM-dd'T'HH:mm:ss.SSSZ'.",
+          "type": "string"
+        },
+        "eventTarget": {
+          "description": "The target of the event.",
+          "type": "string"
+        },
+        "eventType": {
+          "description": "The type of the event.",
+          "type": "string"
+        },
+        "eventSchema": {
+          "description": "The event schema for async request response events.",
+          "type": "string"
+        },
+        "event": {
+        "$ref": "#/definitions/Event"
+        },
+        "forwardedEvent": {
+          "$ref": "#/definitions/Forwarded-Event"
+        }
+      },
+      "required": [
+        "eventId",
+        "eventCorrelationId",
+        "eventTime",
+        "eventTarget",
+        "eventType",
+        "eventSchema"
+      ]
+    },
+    "Forwarded-Event": {
+      "description": "The event content.",
+      "type": "object",
+      "properties": {
+        "eventId": {
+          "description": "The unique id identifying the event generated by DMI.",
+          "type": "string"
+        },
+        "eventCorrelationId": {
+          "description": "The request id passed by NCMP.",
+          "type": "string"
+        },
+        "eventTime": {
+          "description": "The time of the event. The expected format is 'yyyy-MM-dd'T'HH:mm:ss.SSSZ'.",
+          "type": "string"
+        },
+        "eventTarget": {
+          "description": "The target of the event.",
+          "type": "string"
+        },
+        "eventType": {
+          "description": "The type of the event.",
+          "type": "string"
+        },
+        "eventSchema": {
+          "description": "The event schema for async request response events.",
+          "type": "string"
+        },
+        "eventSource": {
+          "description": "The source of the event.",
+          "type": "string"
+        },
+        "response-data-schema": {
+          "description": "The received schema of response data",
+          "type": "string"
+        },
+        "response-status": {
+          "description": "The received status of the response.",
+          "type": "string"
+        },
+        "response-code": {
+          "description": "The received code of the response.",
+          "type": "string"
+        },
+        "forwardedEventData": {
+          "description": "The data payload",
+          "type": "object",
+          "properties": {
+            "forwardedEventPayload": {
+              "type": "object"
+            }
+          }
+        },
+        "required": [
+          "eventId",
+          "eventCorrelationId",
+          "eventTime",
+          "eventTarget",
+          "eventType",
+          "eventSchema",
+          "eventSource",
+          "response-data-schema",
+          "response-status",
+          "response-code",
+          "forwardedEventData"
+        ]
+      }
+    },
+    "Event": {
+      "description": "The event content.",
+      "type": "object",
+      "properties": {
+        "eventId": {
+          "description": "The unique id identifying the event generated by DMI",
+          "type": "string"
+        },
+        "eventCorrelationId": {
+          "description": "The request id passed by NCMP.",
+          "type": "string"
+        },
+        "eventTime": {
+          "description": "The time of the event. The expected format is 'yyyy-MM-dd'T'HH:mm:ss.SSSZ'.",
+          "type": "string"
+        },
+        "eventTarget": {
+          "description": "The target of the event.",
+          "type": "string"
+        },
+        "eventType": {
+          "description": "The type of the event.",
+          "type": "string"
+        },
+        "eventSchema": {
+          "description": "The event schema for async request response events.",
+          "type": "string"
+        },
+        "eventSource": {
+          "description": "The source of the event.",
+          "type": "string"
+        },
+        "response-data-schema": {
+          "description": "The received schema of response data",
+          "type": "string"
+        },
+        "response-status": {
+          "description": "The received status of the response.",
+          "type": "string"
+        },
+        "response-code": {
+          "description": "The received code of the response.",
+          "type": "string"
+        },
+        "response-data": {
+          "description": "The data payload",
+          "type": "object",
+          "properties": {
+            "payload": {
+              "type": "object"
+            }
+          }
+        },
+        "required": [
+          "eventId",
+          "eventCorrelationId",
+          "eventTarget",
+          "eventTime",
+          "eventType",
+          "eventSchema",
+          "eventSource",
+          "response-data-schema",
+          "response-status",
+          "response-code",
+          "event-data"
+        ]
+      }
+    }
+  }
+}
\ No newline at end of file