diff --git a/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/setup.sh b/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/setup.sh
new file mode 100644
index 0000000..9551ce4
--- /dev/null
+++ b/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/setup.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+source ${SCRIPTS}/common_functions.sh
+
+export BBS_SERVICE="bbs"
+# export SSL_BBS_SERVICE="ssl_bbs"
+export DMAAP_SIMULATOR="dmaap_simulator"
+export AAI_SIMULATOR="aai_simulator"
+
+cd ${WORKSPACE}/tests/dcaegen2/bbs-testcases/resources/
+
+pip uninstall -y docker-py
+pip uninstall -y docker
+pip install -U docker==2.7.0
+docker-compose up -d --build
+
+BBS_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${BBS_SERVICE})
+# SSL_BBS_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${SSL_BBS_SERVICE})
+DMAAP_SIMULATOR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${DMAAP_SIMULATOR})
+AAI_SIMULATOR_IP=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${AAI_SIMULATOR})
+
+bypass_ip_adress ${BBS_IP}
+# bypass_ip_adress ${SSL_BBS_IP}
+bypass_ip_adress ${DMAAP_SIMULATOR_IP}
+bypass_ip_adress ${AAI_SIMULATOR_IP}
+
+echo BBS_IP=${BBS_IP}
+# echo SSL_BBS_IP=${SSL_BBS_IP}
+echo DMAAP_SIMULATOR_IP=${DMAAP_SIMULATOR_IP}
+echo AAI_SIMULATOR_IP=${AAI_SIMULATOR_IP}
+
+# Wait for initialization of BBS services
+# Same ports in the testcases docker compose
+wait_for_service_init localhost:32100/heartbeat
+#wait_for_service_init localhost:8200/heartbeat
+
+# #Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v DMAAP_SIMULATOR_SETUP:${DMAAP_SIMULATOR_IP}:2224 -v AAI_SIMULATOR_SETUP:${AAI_SIMULATOR_IP}:3335"
+
diff --git a/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/teardown.sh b/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/teardown.sh
new file mode 100644
index 0000000..6cc85f5
--- /dev/null
+++ b/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/teardown.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+#
+# Copyright 2017 Nokia, Inc. and others.
+#
+# 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.
+#
+
+kill-instance.sh bbs
+# kill-instance.sh ssl_bbs
+kill-instance.sh dmaap_simulator
+kill-instance.sh aai_simulator
diff --git a/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/testplan.txt b/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/testplan.txt
new file mode 100644
index 0000000..9f1794b
--- /dev/null
+++ b/plans/dcaegen2-services-bbs-event-processor/bbs-testsuites/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration/csit.git]/tests/.
+# Place the suites in run order.
+dcaegen2/bbs-testcases
diff --git a/tests/dcaegen2/bbs-testcases/__init__.robot b/tests/dcaegen2/bbs-testcases/__init__.robot
new file mode 100644
index 0000000..d9957dd
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation    Integration - BBS suite
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnf_not_found.json b/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnf_not_found.json
new file mode 100644
index 0000000..23c169f
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnf_not_found.json
@@ -0,0 +1,17 @@
+[
+{
+    "requestError": {
+        "serviceException": {
+            "messageId": "SVC3001",
+            "text": "Resource not found for %1 using id %2 (msg=%3) (ec=%4)",
+            "variables": [
+                "GET",
+                "nodes/pnfs/pnf/Wrong-PNF-Name",
+                "Node Not Found:No Node of type pnf found at: nodes/pnfs/pnf/Wrong-PNF-Name",
+                "ERR.5.4.6114"
+            ]
+        }
+    }
+}
+
+]
diff --git a/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnfs.json b/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnfs.json
new file mode 100644
index 0000000..4ea7827
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnfs.json
@@ -0,0 +1,46 @@
+[
+{
+    "pnf-name": "NVendor-Equip_Model-SN1234",
+    "in-maint": true,
+    "resource-version": "1551889263181",
+    "relationship-list": {
+        "relationship": [
+            {
+                "related-to": "service-instance",
+                "relationship-label": "org.onap.relationships.inventory.ComposedOf",
+                "related-link": "/aai/v14/business/customers/customer/766162a3-53a9-42b8-8fe2-ebaa2213a6dd/service-subscriptions/service-subscription/BBS-CFS11/service-instances/service-instance/1923eaa8-8ab7-49ef-b4c2-e185efbbe832",
+                "relationship-data": [
+                    {
+                        "relationship-key": "customer.global-customer-id",
+                        "relationship-value": "766162a3-53a9-42b8-8fe2-ebaa2213a6dd"
+                    },
+                    {
+                        "relationship-key": "service-subscription.service-type",
+                        "relationship-value": "BBS-CFS11"
+                    },
+                    {
+                        "relationship-key": "service-instance.service-instance-id",
+                        "relationship-value": "1923eaa8-8ab7-49ef-b4c2-e185efbbe832"
+                    }
+                ],
+                "related-to-property": [
+                    {
+                        "property-key": "service-instance.service-instance-name"
+                    }
+                ]
+            },
+            {
+                "related-to": "logical-link",
+                "relationship-label": "org.onap.relationships.inventory.BridgedTo",
+                "related-link": "/aai/v14/network/logical-links/logical-link/olt11-11-11",
+                "relationship-data": [
+                    {
+                        "relationship-key": "logical-link.link-name",
+                        "relationship-value": "olt11-11-11"
+                    }
+                ]
+            }
+        ]
+    }
+}
+]
diff --git a/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_services.json b/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_services.json
new file mode 100644
index 0000000..351cc78
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_services.json
@@ -0,0 +1,46 @@
+[
+{
+    "service-instance-id": "1923eaa8-8ab7-49ef-b4c2-e185efbbe832",
+    "resource-version": "1551889260591",
+    "orchestration-status": "assigned",
+    "relationship-list": {
+        "relationship": [
+            {
+                "related-to": "pnf",
+                "relationship-label": "org.onap.relationships.inventory.ComposedOf",
+                "related-link": "/aai/v14/network/pnfs/pnf/NVendor-Equip_Model-SN1234",
+                "relationship-data": [
+                    {
+                        "relationship-key": "pnf.pnf-name",
+                        "relationship-value": "NVendor-Equip_Model-SN1234"
+                    }
+                ]
+            }
+        ]
+    },
+    "metadata": {
+        "metadatum": [
+            {
+                "metaname": "cvlan",
+                "metaval": "1005",
+                "resource-version": "1551889260599"
+            },
+            {
+                "metaname": "svlan",
+                "metaval": "100",
+                "resource-version": "1551889260608"
+            },
+            {
+                "metaname": "oltName",
+                "metaval": "olt1",
+                "resource-version": "1551889260616"
+            },
+            {
+                "metaname": "rgw-mac-address",
+                "metaval": "01:02:03:04:05:06",
+                "resource-version": "1551889260624"
+            }
+        ]
+    }
+}
+]
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_all_fields.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_all_fields.json
new file mode 100644
index 0000000..3ad1fec
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_all_fields.json
@@ -0,0 +1,30 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "NVendor-Equip_Model-SN1234",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "outOfService",
+            "newState": "inService",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "01:02:03:04:05:06",
+                "swVersion": "1.2.3"
+            }
+        }
+    }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_new_old_state.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_new_old_state.json
new file mode 100644
index 0000000..2c14d46
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_new_old_state.json
@@ -0,0 +1,29 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "NVendor-Equip_Model-SN1234",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "",
+            "newState": "",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "01:02:03:04:05:06"
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_rgmac.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_rgmac.json
new file mode 100644
index 0000000..21d9725
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_rgmac.json
@@ -0,0 +1,30 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "NVendor-Equip_Model-SN1234",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "outOfService",
+            "newState": "inService",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "",
+                "swVersion": "1.2.3"
+            }
+        }
+    }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_sourceName.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_sourceName.json
new file mode 100644
index 0000000..538a56c
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_sourceName.json
@@ -0,0 +1,30 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "outOfService",
+            "newState": "inService",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "01:02:03:04:05:06",
+                "swVersion": "1.2.3"
+            }
+        }
+    }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_wrong_sourceName.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_wrong_sourceName.json
new file mode 100644
index 0000000..39a9e4a
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_wrong_sourceName.json
@@ -0,0 +1,30 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "Wrong-PNF-Name",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "outOfService",
+            "newState": "inService",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "01:02:03:04:05:06",
+                "swVersion": "1.2.3"
+            }
+        }
+    }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_without_swversion.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_without_swversion.json
new file mode 100644
index 0000000..fcacf1c
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_without_swversion.json
@@ -0,0 +1,16 @@
+{
+  "event": {
+    "commonEventHeader": {
+      "sourceName":"NVendor-Equip_Model-SN1234"
+    },
+    "stateChangeFields": {
+      "stateChangeFieldsVersion": 1,
+      "newState": "inService",
+      "oldState": "outOfService",
+      "stateInterface": "",
+      "additionalFields": {
+          "macAddress": "00:11:22:33:44:55"
+      }
+    }
+  }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_not_json_format.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_not_json_format.json
new file mode 100644
index 0000000..7801ad6
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_not_json_format.json
@@ -0,0 +1,30 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "eventName": "StateChange_cpe_authentication",
+            "domain": "stateChange",
+            "eventId": "ab305d54-85b4-a31b-7db2fb6b9e546015",
+            "eventType": "applicationNf",
+            "sourceId": "",
+            "sourceName": "NVendor-Equip_Model-SN1234pnf-11",
+            "reportingEntityId": "",
+            "reportingEntityName": "thirdparty-sdnc-idfromesrrequest",
+            "priority": "Normal",
+            "startEpochMicrosec": 1.413378172e+15,
+            "lastEpochMicrosec": 1.413378172e+15,
+            "sequence": 0,
+           "vesEventListenerVersion": "7.1"
+        },
+        "stateChangeFields": {
+            "stateChangeFieldsVersion": 1,
+            "oldState": "outOfService",
+            "newState": "inService",
+            "stateInterface": "",
+            "additionalFields": {
+                "macAddress": "01:02:03:04:05:06",
+                "swVersion": "1.2.3",
+            }
+        }
+    }
+}
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/auth_policy_with_all_fields.json b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_policy_with_all_fields.json
new file mode 100644
index 0000000..05b15fb
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/auth_policy_with_all_fields.json
@@ -0,0 +1,23 @@
+[
+	{
+		"closedLoopEventClient": "DCAE.BBS_event_processor_mSInstance",
+		"policyVersion": "1.0.0.5",
+		"policyName": "CPE_Authentication",
+		"policyScope": "policyScopeCpeAuth",
+		"target_type": "VM",
+		"AAI":
+			{
+				"cpe.old-authentication-state": "outOfService",
+				"cpe.new-authentication-state": "inService",
+				"cpe.swVersion": "1.2.3",
+				"service-information.hsia-cfs-service-instance-id": "1923eaa8-8ab7-49ef-b4c2-e185efbbe832"
+			},
+		"closedLoopAlarmStart": 1552997462,
+		"closedLoopEventStatus": "ONSET",
+		"closedLoopControlName": "clControlNameCpeAuth",
+		"version": "1.0.2",
+		"target": "vserver.vserver-name",
+		"requestID": "d76541f3-7f55-4c80-b0a0-ec5dee2a56cb",
+		"from": "DCAE"
+	}
+]
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_all_fields.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_all_fields.json
new file mode 100644
index 0000000..6fe2319
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_all_fields.json
@@ -0,0 +1,16 @@
+{
+ "nf-role":"role",
+ "equip-type":"Equipment-Type-1",
+ "equip-vendor":"NVendor",
+ "equip-model":"Equip_Model",
+ "serial-number":"SN1234",
+ "sw-version":"SW-version-1",
+ "correlationId":"NVendor-Equip_Model-SN1234",
+   "additionalFields": {
+     "attachment-point": "olt1-1-1",
+     "cvlan": "1005",
+     "svlan": "100",
+     "remote-id": "some-remote-id"
+   }
+ }
+ 
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_attachment.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_attachment.json
new file mode 100644
index 0000000..43d1b21
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_attachment.json
@@ -0,0 +1,15 @@
+{
+ "nf-role":"role",
+ "equip-type":"Equipment-Type-1",
+ "equip-vendor":"NVendor",
+ "equip-model":"Equip_Model",
+ "serial-number":"SN1234",
+ "sw-version":"SW-version-1",
+ "correlationId":"NVendor-Equip_Model-SN1234",
+   "additionalFields": {
+     "attachment-point": "",
+     "cvlan": "1005",
+     "svlan": "100",
+     "remote-id": "some-remote-id"
+   }
+ }
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_correlation.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_correlation.json
new file mode 100644
index 0000000..a1aaee3
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_correlation.json
@@ -0,0 +1,15 @@
+{
+ "nf-role":"role",
+ "equip-type":"Equipment-Type-1",
+ "equip-vendor":"Vendor",
+ "equip-model":"Equip_Model",
+ "serial-number":"SN1234",
+ "sw-version":"SW-version-1",
+ "correlationId":"",
+   "additionalFields": {
+     "attachment-point": "olt1-1-1",
+     "cvlan": "1005",
+     "svlan": "100",
+     "remote-id": "some-remote-id"
+   }
+ }
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_wrong_correlation.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_wrong_correlation.json
new file mode 100644
index 0000000..f1dca03
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_wrong_correlation.json
@@ -0,0 +1,15 @@
+{
+ "nf-role":"role",
+ "equip-type":"Equipment-Type-1",
+ "equip-vendor":"NVendor",
+ "equip-model":"Equip_Model",
+ "serial-number":"SN1234",
+ "sw-version":"SW-version-1",
+ "correlationId":"Wrong-Correlation-Id",
+   "additionalFields": {
+     "attachment-point": "olt1-1-1",
+     "cvlan": "1005",
+     "svlan": "100",
+     "remote-id": "some-remote-id"
+   }
+ }
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_not_json_format.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_not_json_format.json
new file mode 100644
index 0000000..ab5b214
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/update_not_json_format.json
@@ -0,0 +1,15 @@
+{
+ "nf-role":"role",
+ "equip-type":"Equipment-Type-1",
+ "equip-vendor":"NVendor",
+ "equip-model":"Equip_Model",
+ "serial-number":"SN1234",
+ "sw-version":"SW-version-1",
+ "correlationId":"NVendor-Equip_Model-SN1234",
+   "additionalFields": {
+     "attachment-point": "olt1-1-1",
+     "cvlan": "1005",
+     "svlan": "100",
+     "remote-id": "some-remote-id",
+   }
+ }
diff --git a/tests/dcaegen2/bbs-testcases/assets/json_events/update_policy_with_all_fields.json b/tests/dcaegen2/bbs-testcases/assets/json_events/update_policy_with_all_fields.json
new file mode 100644
index 0000000..4940265
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/assets/json_events/update_policy_with_all_fields.json
@@ -0,0 +1,24 @@
+[
+    {
+    	"closedLoopEventClient": "DCAE.BBS_event_processor_mSInstance",
+    	"policyVersion": "1.0.0.5",
+    	"policyName": "Nomadic_ONT",
+    	"policyScope": "reRegPolicyScope",
+    	"target_type": "VM",
+    	"AAI":{
+    			"attachmentPoint": "olt11-1-1",
+    			"service-information.hsia-cfs-service-instance-id": "1923eaa8-8ab7-49ef-b4c2-e185efbbe832",
+    			"cvlan": "1005",
+    			"svlan": "100",
+    			"remoteId": "some-remote-id"
+    			},
+    	"closedLoopAlarmStart": 1553067455,
+    	"closedLoopEventStatus": "ONSET",
+    	"closedLoopControlName": "reRegControlName",
+    	"version": "1.0.2",
+    	"target": "vserver.vserver-name",
+    	"requestID":
+    	"407a6515-4b10-46ad-a249-efe529a36c69",
+    	"from": "DCAE"
+    }
+]
diff --git a/tests/dcaegen2/bbs-testcases/bbs_tests.robot b/tests/dcaegen2/bbs-testcases/bbs_tests.robot
new file mode 100644
index 0000000..4721e42
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/bbs_tests.robot
@@ -0,0 +1,117 @@
+*** Settings ***
+Documentation     Integration tests for BBS.
+...               BBS receives CPE_AUTHENTICATION event from DMaaP and triggers a Policy that updates the CFS service with the PNF.
+...               BBS receives PNF_UPDATE event from DMaaP and triggers a Policy that updates the CFS service resources associated with the PNF.
+Resource          resources/bbs_library.robot
+Resource          ../../common.robot
+Suite Setup       Run keywords   Create header  AND  Create sessions  AND  Set AAI Records     AND    Ensure Container Is Running    bbs
+Test Teardown     Reset Simulators
+
+
+*** Variables ***
+${DMAAP_SIMULATOR_SETUP_URL}    http://${DMAAP_SIMULATOR_SETUP}
+${AAI_SIMULATOR_SETUP_URL}    http://${AAI_SIMULATOR_SETUP}
+${AUTH_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_all_fields.json
+${AUTH_EVENT_WITH_WRONG_SOURCENAME}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_wrong_sourceName.json
+${AUTH_EVENT_WITHOUT_SWVERSION}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_without_swversion.json
+${AUTH_EVENT_WITH_MISSING_RGMAC}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_rgmac.json
+${AUTH_EVENT_WITH_MISSING_STATE}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_new_old_state.json
+${AUTH_EVENT_WITH_MISSING_SOURCENAME}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_event_with_missing_sourceName.json
+${AUTH_NOT_JSON_FORMAT}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_not_json_format.json
+${AUTH_POLICY}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/auth_policy_with_all_fields.json
+${UPDATE_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_all_fields.json
+${UPDATE_EVENT_WITH_WRONG_CORRELATION}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_wrong_correlation.json
+${UPDATE_EVENT_WITH_MISSING_ATTACHMENT}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_attachment.json
+${UPDATE_EVENT_WITH_MISSING_CORRELATION}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_event_with_missing_correlation.json
+${UPDATE_NOT_JSON_FORMAT}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_not_json_format.json
+${UPDATE_POLICY}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/json_events/update_policy_with_all_fields.json
+${AAI_PNFS}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnfs.json
+${AAI_SERVICES}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_services.json
+${AAI_PNF_NOT_FOUND}    %{WORKSPACE}/tests/dcaegen2/bbs-testcases/assets/aai_records/aai_pnf_not_found.json
+
+*** Test Cases ***
+Valid DMaaP CPE_AUTHENTICATION event can trigger Policy
+    [Documentation]    BBS get valid CPE_AUTHENTICATION event from DMaaP with required fields - BBS triggers Policy
+    [Tags]    BBS    Valid CPE_AUTHENTICATION event
+    [Template]    Valid auth event processing
+    ${AUTH_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
+    ${AUTH_EVENT_WITHOUT_SWVERSION}
+
+Invalid DMaaP CPE_AUTHENTICATION event RG MAC cannot trigger Policy
+    [Documentation]    BBS get invalid RG MAC CPE_AUTHENTICATION event from DMaaP with missing required fields - BBS does not trigger Policy
+    [Tags]    BBS    Invalid RG MAC CPE_AUTHENTICATION event
+    [Template]    Invalid rgmac auth event processing
+    ${AUTH_EVENT_WITH_MISSING_RGMAC}
+
+Invalid DMaaP CPE_AUTHENTICATION event cannot trigger Policy
+    [Documentation]    BBS get invalid CPE_AUTHENTICATION event from DMaaP with missing required fields - BBS does not trigger Policy
+    [Tags]    BBS    Invalid CPE_AUTHENTICATION event
+    [Template]    Invalid auth event processing
+    ${AUTH_EVENT_WITH_MISSING_STATE}
+    ${AUTH_EVENT_WITH_MISSING_SOURCENAME}
+
+Get valid CPE_AUTHENTICATION event from DMaaP and PNF record in AAI does not exist
+    [Documentation]    BBS get valid event from DMaaP with all required fields and in AAI record doesn't exist - BBS does not trigger Policy
+    [Tags]    BBS    Missing AAI record
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${AUTH_EVENT_WITH_WRONG_SOURCENAME}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Error while retrieving PNF: A&AI Request for (/aai/v14/network/pnfs/pnf/Wrong-PNF-Name?depth=all)
+
+CPE_AUTHENTICATION Event in DMaaP is not JSON format
+    [Documentation]    BBS CPE_AUTHENTICATION not JSON format event from DMaaP - BBS does not Trigger Policy
+    [Tags]    BBS
+    ${data}=    Get Data From File    ${AUTH_NOT_JSON_FORMAT}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    DMaaP Consumption Exception: Not a JSON Array:
+
+# Get valid CPE_AUTHENTICATION event from DMaaP and AAI is not responding
+#     [Documentation]    BBS get valid CPE_AUTHENTICATION event from DMaaP with all required fields and AAI is not responding - BBS does not trigger Policy
+#     [Tags]    BBS    AAI    Uses containers
+#     [Timeout]    180s
+#     ${data}=    Get Data From File    ${AUTH_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
+#     Ensure Container Is Exited   aai_simulator
+#     Set event in DMaaP    ${data}
+#     Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Error while retrieving PNF: aai_simulator: Try again
+#     Ensure Container Is Running  aai_simulator
+#     Set AAI Records
+
+Valid DMaaP PNF_UPDATE event can trigger Policy
+    [Documentation]    BBS get valid PNF_UPDATE event from DMaaP with required fields - BBS triggers Policy
+    [Tags]    BBS    Valid PNF_UPDATE event
+    [Template]    Valid update event processing
+    ${UPDATE_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
+
+Invalid DMaaP PNF_UPDATE event cannot trigger Policy
+    [Documentation]    BBS get invalid PNF_UPDATE event from DMaaP with missing required fields - BBS does not trigger Policy
+    [Tags]    BBS    Invalid PNF_UPDATE event
+    [Template]    Invalid update event processing
+    ${UPDATE_EVENT_WITH_MISSING_ATTACHMENT}
+    ${UPDATE_EVENT_WITH_MISSING_CORRELATION}
+
+Get valid PNF_UPDATE event from DMaaP and PNF record in AAI does not exist
+    [Documentation]    BBS get valid PNF_UPDATE event from DMaaP with all required fields and in AAI record doesn't exist - BBS does not trigger Policy
+    [Tags]    BBS    Missing AAI record
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${UPDATE_EVENT_WITH_WRONG_CORRELATION}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Error while retrieving PNF: A&AI Request for (/aai/v14/network/pnfs/pnf/Wrong-Correlation-Id?depth=all)
+
+
+PNF_UPDATE Event in DMaaP is not JSON format
+    [Documentation]    BBS PNF_UPDATE not JSON format event from DMaaP - BBS does not Trigger Policy
+    [Tags]    BBS
+    ${data}=    Get Data From File    ${UPDATE_NOT_JSON_FORMAT}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    DMaaP Consumption Exception: Not a JSON Array:
+
+# Get valid PNF_UPDATE event from DMaaP and AAI is not responding
+#     [Documentation]    BBS get valid PNF_UPDATE event from DMaaP with all required fields and AAI is not responding - BBS does not trigger Policy
+#     [Tags]    BBS    AAI    Uses containers
+#     [Timeout]    180s
+#     ${data}=    Get Data From File    ${UPDATE_EVENT_WITH_ALL_VALID_REQUIRED_FIELDS}
+#     Ensure Container Is Exited   aai_simulator
+#     Set event in DMaaP    ${data}
+#     Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Error while retrieving PNF: aai_simulator: Try again
+#     Ensure Container Is Running  aai_simulator
+#     Set AAI Records
diff --git a/tests/dcaegen2/bbs-testcases/resources/BbsLibrary.py b/tests/dcaegen2/bbs-testcases/resources/BbsLibrary.py
new file mode 100644
index 0000000..8dbdc5a
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/BbsLibrary.py
@@ -0,0 +1,173 @@
+import json
+
+import docker
+import time
+from docker.utils.json_stream import json_stream
+from collections import OrderedDict
+
+
+class BbsLibrary(object):
+
+    def __init__(self):
+        pass
+
+    @staticmethod
+    def check_for_log(search_for):
+        client = docker.from_env()
+        container = client.containers.get('bbs')
+
+        alog = container.logs(stream=False, tail=1000)
+        try:
+            alog = alog.decode()
+        except AttributeError:
+            pass
+
+        found = alog.find(search_for)
+        if found != -1:
+            return True
+        else:
+            return False
+
+    @staticmethod
+    def create_pnf_name_from_auth(json_file):
+        json_to_python = json.loads(json_file)
+        correlation_id = json_to_python.get("event").get("commonEventHeader").get("sourceName")
+        return correlation_id
+
+    @staticmethod
+    def get_invalid_auth_elements(json_file):
+        """
+        Get the correlationId, oldState, newState, stateInterface, macAddress, swVersion elements
+        from the invalid message and place the elements into a JSON object (string) as fields for comparision
+        """
+        json_to_python = json.loads(json_file)
+        correlation_id = json_to_python.get("event").get("commonEventHeader").get("sourceName")
+        oldState = json_to_python.get("event").get("stateChangeFields").get("oldState")
+        newState = json_to_python.get("event").get("stateChangeFields").get("newState")
+        stateInterface = json_to_python.get("event").get("stateChangeFields").get("stateInterface")
+        macAddress = json_to_python.get("event").get("stateChangeFields").get("additionalFields").get("macAddress")
+        swVersion = json_to_python.get("event").get("stateChangeFields").get("additionalFields").get("swVersion")
+        if swVersion is None:
+            swVersion = ""
+        
+        inv_fields = OrderedDict()
+
+        #inv_fields = dict()
+        inv_fields['correlationId'] = correlation_id
+        inv_fields['oldState'] = oldState
+        inv_fields['newState'] = newState
+        inv_fields['stateInterface'] = stateInterface
+        inv_fields['macAddress'] = macAddress
+        inv_fields['swVersion'] = swVersion
+        
+        # Transform the dictionary to JSON string
+        json_str = json.dumps(inv_fields)
+        
+        # Need to remove spaces between elements
+        json_str = json_str.replace(', ', ',')
+        return json_str
+
+    @staticmethod
+    def get_invalid_update_elements(json_file):
+        """
+        Get the correlationId, attachment-point, remote-id, cvlan, svlan, elements
+        from the invalid message and place the elements into a JSON object (string) as fields for comparision
+        """
+        json_to_python = json.loads(json_file)
+        correlation_id = json_to_python.get("correlationId")
+        attachmentPoint = json_to_python.get("additionalFields").get("attachment-point")
+        remoteId = json_to_python.get("additionalFields").get("remote-id")
+        cvlan = json_to_python.get("additionalFields").get("cvlan")
+        svlan = json_to_python.get("additionalFields").get("svlan")
+        
+        inv_fields = OrderedDict()
+        #inv_fields = dict()
+        inv_fields['correlationId'] = correlation_id
+        inv_fields['attachment-point'] = attachmentPoint
+        inv_fields['remote-id'] = remoteId
+        inv_fields['cvlan'] = cvlan
+        inv_fields['svlan'] = svlan
+        
+        # Transform the dictionary to JSON string
+        json_str = json.dumps(inv_fields)
+        
+        # Need to remove spaces between elements
+        json_str = json_str.replace(', ', ',')
+        return json_str
+
+    @staticmethod
+    def compare_policy(dmaap_policy, json_policy):
+        resp = False
+        try:
+            python_policy = json.loads(json_policy).pop()
+        except:
+            python_policy = ""
+        
+        try:
+            python_dmaap_policy = json.loads(dmaap_policy)
+        except:
+            python_dmaap_policy = ""
+
+        try:
+            d_policy = python_dmaap_policy.get("policyName")
+        except:
+            d_policy = ""
+
+        try:
+            j_policy = python_policy.get("policyName")
+        except:
+            return "False"
+        
+        resp = "False"
+        if (d_policy == j_policy):
+            resp = "True"
+        return resp
+
+    @staticmethod
+    def create_pnf_name_from_update(json_file):
+        json_to_python = json.loads(json_file)
+        correlation_id = json_to_python.get("correlationId")
+        return correlation_id
+
+    @staticmethod
+    def ensure_container_is_running(name):
+        
+        client = docker.from_env()
+
+        if not BbsLibrary.is_in_status(client, name, "running"):
+            print ("starting container", name)
+            container = client.containers.get(name)
+            container.start()
+            BbsLibrary.wait_for_status(client, name, "running")
+
+        BbsLibrary.print_status(client)
+
+    @staticmethod
+    def ensure_container_is_exited(name):
+
+        client = docker.from_env()
+
+        if not BbsLibrary.is_in_status(client, name, "exited"):
+            print ("stopping container", name)
+            container = client.containers.get(name)
+            container.stop()
+            BbsLibrary.wait_for_status(client, name, "exited")
+
+        BbsLibrary.print_status(client)
+
+    @staticmethod
+    def print_status(client):
+        print("containers status")
+        for c in client.containers.list(all=True):
+            print(c.name, "   ", c.status)
+
+    @staticmethod
+    def wait_for_status(client, name, status):
+        while not BbsLibrary.is_in_status(client, name, status):
+            print ("waiting for container: ", name, "to be in status: ", status)
+            time.sleep(3)
+
+    @staticmethod
+    def is_in_status(client, name, status):
+        return len(client.containers.list(all=True, filters={"name": "^/"+name+"$", "status": status})) == 1
+
diff --git a/tests/dcaegen2/bbs-testcases/resources/bbs_library.robot b/tests/dcaegen2/bbs-testcases/resources/bbs_library.robot
new file mode 100644
index 0000000..34c94ca
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/bbs_library.robot
@@ -0,0 +1,108 @@
+*** Settings ***
+Library           RequestsLibrary
+Library           Collections
+Library           BbsLibrary.py
+Resource          ../../../common.robot
+
+*** Keywords ***
+Create header
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
+    Set Suite Variable    ${suite_headers}    ${headers}
+
+Create sessions
+    Create Session    dmaap_setup_session    ${DMAAP_SIMULATOR_SETUP_URL}
+    Set Suite Variable    ${dmaap_setup_session}    dmaap_setup_session
+    Create Session    aai_setup_session    ${AAI_SIMULATOR_SETUP_URL}
+    Set Suite Variable    ${aai_setup_session}    aai_setup_session
+
+Reset Simulators
+    Reset AAI simulator
+    Reset DMaaP simulator
+
+Set AAI Records
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${AAI_PNFS}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=text/html
+    ${resp} =    Put Request    ${aai_setup_session}    /set_pnfs    headers=${headers}    data=${data}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${data}=    Get Data From File    ${AAI_SERVICES}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=text/html
+    ${resp} =    Put Request    ${aai_setup_session}    /set_services    headers=${headers}    data=${data}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${data}=    Get Data From File    ${AAI_PNF_NOT_FOUND}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=text/html
+    ${resp} =    Put Request    ${aai_setup_session}    /set_pnf_not_found    headers=${headers}    data=${data}
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Invalid rgmac auth event processing
+    [Arguments]    ${input_invalid_event_in_dmaap}
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${input_invalid_event_in_dmaap}
+    Set event in DMaaP    ${data}
+    ${err_msg}=    Catenate    SEPARATOR= \\n    RGW MAC address taken from event (Optional[]) does not match with A&AI metadata corresponding value
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    ${err_msg}
+
+Invalid auth event processing
+    [Arguments]    ${input_invalid_event_in_dmaap}
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${input_invalid_event_in_dmaap}
+    Set event in DMaaP    ${data}
+    ${json_obj}=    Get invalid auth elements    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Incorrect CPE Authentication JSON event:
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    ${json_obj}
+Valid auth event processing
+    [Arguments]    ${input_valid_event_in_dmaap}
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${input_valid_event_in_dmaap}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check policy    ${AUTH_POLICY}
+
+Check policy
+    [Arguments]    ${json_policy_file}
+    ${resp}=    Get Request    ${dmaap_setup_session}    /events/dcaeClOutput   headers=${suite_headers}
+    ${data}=    Get Data From File    ${json_policy_file}
+    ${result}=    Compare policy    ${resp.text}    ${data}
+    Should Be Equal As Strings    ${result}    True
+
+Invalid update event processing
+    [Arguments]    ${input_invalid_event_in_dmaap}
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${input_invalid_event_in_dmaap}
+    Set event in DMaaP    ${data}
+    ${json_obj}=    Get invalid update elements    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    Incorrect Re-Registration
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    JSON event:
+    Wait Until Keyword Succeeds    20x    2000ms    Check BBS log    ${json_obj}
+
+
+Valid update event processing
+    [Arguments]    ${input_valid_event_in_dmaap}
+    [Timeout]    30s
+    ${data}=    Get Data From File    ${input_valid_event_in_dmaap}
+    Set event in DMaaP    ${data}
+    Wait Until Keyword Succeeds    20x    2000ms    Check policy     ${UPDATE_POLICY}
+
+
+Check BBS log
+    [Arguments]    ${searched_log}
+    ${status}=    Check for log    ${searched_log}
+    Should Be Equal As Strings    ${status}    True
+
+Set PNF name in AAI
+    [Arguments]    ${pnfs_name}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=text/html
+    ${resp} =    Put Request    ${aai_setup_session}    /set_pnfs    headers=${headers}    data=${pnfs_name}
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Set event in DMaaP
+    [Arguments]    ${event_in_dmaap}
+    ${resp} =    Put Request    ${dmaap_setup_session}    /set_get_event    headers=${suite_headers}    data=${event_in_dmaap}
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Reset AAI simulator
+    ${resp} =    Post Request     ${aai_setup_session}    /reset
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Reset DMaaP simulator
+    ${resp}=    Post Request     ${dmaap_setup_session}    /reset
+    Should Be Equal As Strings    ${resp.status_code}    200
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/resources/docker-compose.yml b/tests/dcaegen2/bbs-testcases/resources/docker-compose.yml
new file mode 100644
index 0000000..e42c0d2
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/docker-compose.yml
@@ -0,0 +1,64 @@
+version: '3'
+services:
+  bbs:
+    image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.components.bbs-event-processor:1.0.0-SNAPSHOT
+    command: >
+        --dmaap.dmaapConsumerConfiguration.dmaapHostName=dmaap_simulator
+        --dmaap.dmaapConsumerConfiguration.dmaapPortNumber=2222
+        --dmaap.dmaapProducerConfiguration.dmaapHostName=dmaap_simulator
+        --dmaap.dmaapProducerConfiguration.dmaapPortNumber=2222
+        --aai.aaiClientConfiguration.aaiHostPortNumber=3333
+        --aai.aaiClientConfiguration.aaiHost=aai_simulator
+        --aai.aaiClientConfiguration.aaiProtocol=http
+    ports:
+      - "32100:8100"
+    environment:
+      CONFIGS_DMAAP_CONSUMER_RE-REGISTRATION_DMAAPHOSTNAME: dmaap_simulator
+      CONFIGS_DMAAP_CONSUMER_RE-REGISTRATION_DMAAPPORTNUMBER: 2222
+      CONFIGS_DMAAP_CONSUMER_RE-REGISTRATION_DMAAPTOPICNAME: /events/unauthenticated_PNF_UPDATE
+      CONFIGS_DMAAP_CONSUMER_RE-REGISTRATION_CONSUMERGROUP: 
+      CONFIGS_DMAAP_CONSUMER_RE-REGISTRATION_CONSUMERID: 
+      CONFIGS_DMAAP_CONSUMER_CPE-AUTHENTICATION_DMAAPHOSTNAME: dmaap_simulator
+      CONFIGS_DMAAP_CONSUMER_CPE-AUTHENTICATION_DMAAPPORTNUMBER: 2222
+      CONFIGS_DMAAP_CONSUMER_CPE-AUTHENTICATION_DMAAPTOPICNAME: /events/unauthenticated_CPE_AUTHENTICATION
+      CONFIGS_DMAAP_CONSUMER_CPE-AUTHENTICATION_CONSUMERGROUP:
+      CONFIGS_DMAAP_CONSUMER_CPE-AUTHENTICATION_CONSUMERID:
+      CONFIGS_DMAAP_PRODUCER_DMAAPHOSTNAME: dmaap-bc
+      CONFIGS_DMAAP_PRODUCER_DMAAPPORTNUMBER: 2222
+      CONFIGS_DMAAP_PRODUCER_DMAAPTOPICNAME: /events/unauthenticated_DCAE_CL_OUTPUT
+      CONFIGS_AAI_CLIENT_AAIHOST: aai_simulator
+      CONFIGS_AAI_CLIENT_AAIPORT: 3333
+      CONFIGS_AAI_CLIENT_AAIPROTOCOL: http
+      CONFIGS_APPLICATION_PIPELINESPOLLINGINTERVALSEC: 15
+      CONFIGS_APPLICATION_PIPELINESTIMEOUTSEC: 10
+      CONFIGS_APPLICATION_RE-REGISTRATION_POLICYSCOPE: "re-reg_policy_scope"
+      CONFIGS_APPLICATION_RE-REGISTRATION_CLCONTROLNAME: "re-reg_cl"
+      CONFIGS_APPLICATION_CPE-AUTHENTICATION_POLICYSCOPE: "cpe-auth_policy_scope"
+      CONFIGS_APPLICATION_CPE-AUTHENTICATION_CLCONTROLNAME: "cpe-auth_cl"
+      LOGGING_LEVEL_ORG_ONAP_BBS: TRACE
+    container_name: bbs
+    depends_on:
+     - dmaap-bc
+     - aai
+
+  dmaap-bc:
+    image: dmaap-bc:latest
+    build:
+      context: simulator
+      dockerfile: DMaaP_simulator
+    ports:
+      - "2222:2222"
+      - "2223:2223"
+      - "2224:2224"
+    container_name: dmaap_simulator
+
+  aai:
+     image: aai:latest
+     build:
+       context: simulator
+       dockerfile: AAI_simulator
+     ports:
+      - "3333:3333"
+      - "3334:3334"
+      - "3335:3335"
+     container_name: aai_simulator
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/AAI.py b/tests/dcaegen2/bbs-testcases/resources/simulator/AAI.py
new file mode 100644
index 0000000..ba32582
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/AAI.py
@@ -0,0 +1,108 @@
+import re
+import time
+from http.server import BaseHTTPRequestHandler
+import httpServerLib
+
+import json
+
+pnfs = []
+services = []
+pnf_not_found = '[{}]'
+
+class AAISetup(BaseHTTPRequestHandler):
+
+    def do_PUT(self):
+        global pnfs
+        global services
+        global pnf_not_found
+        if re.search('/set_pnfs', self.path):
+            content_length = int(self.headers['Content-Length'])
+            pnfs = self.rfile.read(content_length)
+            pnfs = pnfs.decode()
+            httpServerLib.header_200_and_json(self)
+        elif re.search('/set_services', self.path):
+            content_length = int(self.headers['Content-Length'])
+            services = self.rfile.read(content_length)
+            services = services.decode()
+            httpServerLib.header_200_and_json(self)
+        elif re.search('/set_pnf_not_found', self.path):
+            content_length = int(self.headers['Content-Length'])
+            pnf_not_found = self.rfile.read(content_length)
+            pnf_not_found = pnf_not_found.decode()
+            httpServerLib.header_200_and_json(self)
+
+        return
+
+    def do_POST(self):
+        if re.search('/reset', self.path):
+            httpServerLib.header_200_and_json(self)
+
+        return
+
+
+class AAIHandler(BaseHTTPRequestHandler):
+
+    def do_GET(self):
+        global pnfs
+        global services
+        global pnf_not_found
+        pnf_path = '/aai/v14/network/pnfs/pnf/'
+        service_path = '/aai/v14/nodes/service-instances/service-instance/'
+        found_resource = None
+        if re.search(pnf_path, self.path):
+            try:
+                python_pnfs = json.loads(pnfs)
+            except AttributeError:
+                python_pnfs = []
+            for pnf_instance in python_pnfs:
+                try:
+                    pnf_name = pnf_path + pnf_instance.get("pnf-name")
+                except AttributeError:
+                    pnf_name = "PNF not found"
+                if re.search(pnf_name, self.path):
+                    found_resource = pnf_instance
+                    break
+        elif re.search(service_path, self.path):
+            try:
+                python_services = json.loads(services)
+            except AttributeError:
+                python_services = []
+            for service_instance in python_services:
+                try:
+                    service_name = service_path + service_instance.get("service-instance-id")
+                except AttributeError:
+                    pnf_name = "Service not found"
+                if re.search(service_name, self.path):
+                    found_resource = service_instance
+                    break
+
+        if found_resource is not None:
+            # Prepare the response for DMaaP (byte encoded JSON Object)
+            found_resource = json.dumps(found_resource)
+            found_resource = found_resource.encode()
+            httpServerLib.header_200_and_json(self)
+            self.wfile.write(found_resource)
+        else:
+            # Send a 404 message for not found
+            pnf_resp = pnf_not_found
+            # We have to replace the request line data
+            err_pnf_template = "nodes/pnfs/pnf/Wrong-PNF-Name"
+            pnf_resp = pnf_resp.replace(err_pnf_template, self.path)
+            pnf_resp = pnf_resp.encode()
+            httpServerLib.header_404_and_json(self)
+            self.wfile.write(pnf_resp)
+
+            
+        return
+
+def _main_(handler_class=AAIHandler, protocol="HTTP/1.0"):
+    handler_class.protocol_version = protocol
+    httpServerLib.start_http_endpoint(3333, AAIHandler)
+    httpServerLib.start_https_endpoint(3334, AAIHandler, keyfile="certs/org.onap.aai.key", certfile="certs/aai_aai.onap.org.cer", ca_certs="certs/ca_local_0.cer")
+    httpServerLib.start_http_endpoint(3335, AAISetup)
+    while 1:
+        time.sleep(10)
+
+
+if __name__ == '__main__':
+    _main_()
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/AAI_simulator b/tests/dcaegen2/bbs-testcases/resources/simulator/AAI_simulator
new file mode 100644
index 0000000..a906bc5
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/AAI_simulator
@@ -0,0 +1,6 @@
+FROM python:3-alpine
+
+ADD AAI.py httpServerLib.py /
+COPY certs/* /certs/
+
+CMD [ "python", "./AAI.py" ]
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP.py b/tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP.py
new file mode 100644
index 0000000..edeec8c
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP.py
@@ -0,0 +1,92 @@
+import re
+import time
+from http.server import BaseHTTPRequestHandler
+import httpServerLib
+
+
+posted_event_from_bbs = b'[]'
+received_event_to_get_method = b'[]'
+
+
+class DmaapSetup(BaseHTTPRequestHandler):
+
+    """
+    This Handler is used by the test harness to prepare the buffers:
+        test harness places VES events using PUT from the harness into the 
+        "received_event buffer"
+        test harness will write policy topics from the BBS us to the posted event buffer
+    """
+    def do_PUT(self):
+        # Read the event from the test harness place it in the received event buffer
+        if re.search('/set_get_event', self.path):
+            content_length = int(self.headers['Content-Length'])
+            global received_event_to_get_method
+            received_event_to_get_method = self.rfile.read(content_length)
+            httpServerLib.header_200_and_json(self)
+
+        return
+
+    def do_GET(self):
+        # The test harness receives the policy triggers from the posted event
+        # by issuing a get and receiving the response.
+        if re.search('/events/dcaeClOutput', self.path):
+            global posted_event_from_bbs
+            httpServerLib.header_200_and_json(self)
+            self.wfile.write(posted_event_from_bbs)
+
+        return
+
+    def do_POST(self):
+        if re.search('/reset', self.path):
+            global posted_event_from_bbs
+            global received_event_to_get_method
+            posted_event_from_bbs = b'[]'
+            received_event_to_get_method = b'[]'
+            httpServerLib.header_200_and_json(self)
+
+        return
+
+
+class DMaaPHandler(BaseHTTPRequestHandler):
+    """
+    This Handler is what the BBS uS connects to - The test library has posted the
+    the VES events in the setup Handler which are then received by the BBS uS via
+    this handler's do_GET function.
+    Likewise the policy trigger posted by the BBS uS is received and placed in the
+     in the posted event buffer which the test harness retrieves using the setup handler.
+    """
+
+    def do_POST(self):
+        # Post of the policy triggers from the BBS uS
+        if re.search('/events/unauthenticated.DCAE_CL_OUTPUT', self.path):
+            global posted_event_from_bbs
+            content_length = int(self.headers['Content-Length'])
+            posted_event_from_bbs = self.rfile.read(content_length)
+            httpServerLib.header_200_and_json(self)
+
+        return
+
+    def do_GET(self):
+        # BBS uS issues a Get to receive VES and PNF UPdate event from DMAAP
+        global received_event_to_get_method
+        if re.search('/events/unauthenticated.PNF_UPDATE', self.path):
+            httpServerLib.header_200_and_json(self)
+            self.wfile.write(received_event_to_get_method)
+        elif re.search('/events/unauthenticated_CPE_AUTHENTICATION/OpenDcae-c12/c12', self.path):
+            httpServerLib.header_200_and_json(self)
+            self.wfile.write(received_event_to_get_method)
+
+        return
+
+
+def _main_(handler_class=DMaaPHandler, protocol="HTTP/1.0"):
+    handler_class.protocol_version = protocol
+    httpServerLib.start_http_endpoint(2222, DMaaPHandler)
+    httpServerLib.start_https_endpoint(2223, DMaaPHandler, keyfile="certs/org.onap.dmaap-bc.key", certfile="certs/dmaap_bc_topic_mgr_dmaap_bc.onap.org.cer", ca_certs="certs/ca_local_0.cer")
+    httpServerLib.start_http_endpoint(2224, DmaapSetup)
+    while 1:
+        time.sleep(10)
+
+
+if __name__ == '__main__':
+    _main_()
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP_simulator b/tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP_simulator
new file mode 100644
index 0000000..8139fc3
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/DMaaP_simulator
@@ -0,0 +1,6 @@
+FROM python:3-alpine
+
+ADD DMaaP.py httpServerLib.py /
+COPY certs/* /certs/
+
+CMD [ "python", "./DMaaP.py" ]
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/aai_aai.onap.org.cer b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/aai_aai.onap.org.cer
new file mode 100644
index 0000000..327f57b
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/aai_aai.onap.org.cer
@@ -0,0 +1,55 @@
+-----BEGIN CERTIFICATE-----
+MIIE5TCCA82gAwIBAgIJAI5fEseaW2LVMA0GCSqGSIb3DQEBCwUAMEcxCzAJBgNV
+BAYTAlVTMQ0wCwYDVQQKDARPTkFQMQ4wDAYDVQQLDAVPU0FBRjEZMBcGA1UEAwwQ
+aW50ZXJtZWRpYXRlQ0FfMjAeFw0xODEwMTgxMDM3MzJaFw0xOTA0MTgxMDM3MzJa
+MGYxDDAKBgNVBAMMA2FhaTEPMA0GCSqGSIb3DQEJARYAMRkwFwYDVQQLDBBhYWlA
+YWFpLm9uYXAub3JnMQ4wDAYDVQQLDAVPU0FBRjENMAsGA1UECgwET05BUDELMAkG
+A1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCCnz1BBkcD
+y1M73ANgkbfwYANSJPdnU/meXpgHKYvXa8xbEI3Lsi5EnB7o9nthZFdU5dPZRFV5
+uJEOl0pjt3ogmPo0XZGYO++GfRNLq+c2YVmYjTLgFvEz6GzUtLueYjrl2JItGRug
+x0wNPXQmaAX3/8wD7nOTAZjlmuSWCeeJu5GBaX4aaiwVOONDGhmZZ7jISTE0xvvU
+936ECnUhSZtt/qRvnA1EJB/Hhs5Se4VPx6lTXYf8PXquI0IgDV49hlLhbPMKadQ8
+lo2yitiaSMJHsLZ1Wt6ob9oNFlBcceq3tfXPMVVylssuAI1pc3HsbmV7kMIwg0P1
+fyVoIALHlXgDAgMBAAGjggGzMIIBrzAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIF
+4DAgBgNVHSUBAf8EFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwVAYDVR0jBE0wS4AU
+BASNACQ4xpx414BXQWdJBoDmckehMKQuMCwxDjAMBgNVBAsMBU9TQUFGMQ0wCwYD
+VQQKDARPTkFQMQswCQYDVQQGEwJVU4IBAjAdBgNVHQ4EFgQUMghLmZ4l0T+MY3uk
+AR6YBJP5gwMwgfoGA1UdEQSB8jCB74IDYWFpgoHnYWFpLmFwaS5zaW1wbGVkZW1v
+Lm9uYXAub3JnIGFhaS5lbGFzdGljc2VhcmNoLnNpbXBsZWRlbW8ub25hcC5vcmcg
+YWFpLmdyZW1saW5zZXJ2ZXIuc2ltcGxlZGVtby5vbmFwLm9yZyBhYWkuaGJhc2Uu
+c2ltcGxlZGVtby5vbmFwLm9yZyBhYWkub25hcCBhYWkuc2VhcmNoc2VydmljZS5z
+aW1wbGVkZW1vLm9uYXAub3JnIGFhaS5zaW1wbGVkZW1vLm9uYXAub3JnIGFhaS51
+aS5zaW1wbGVkZW1vLm9uYXAub3JnMA0GCSqGSIb3DQEBCwUAA4IBAQBJyXk6ZTfA
+f9mYi5ey/ZpchB9egJfwEXXOqSKeYYTjqUr3uXXk+usb8YXsFVoD9Id5do3Hnxv+
+J3ISGmyPTgQfV/9KDmtHPTyclR9mLji+j4GviZnIpAIsI/duPKlEfLcym9smAC7Q
++HYanUQ7s8sjJJ4ORdBLOy1HkfTu9pjNKZ1CcEnJZ8Y5juLOeEj+Xa+QzcywSK2E
+iuPXJwFFtcX9fO+ojiQV9g0L9JgABMqm4Q6si03gXofYEgvAUJSxsirydB8kcqPU
+jCgw8/XIsHj4VRNNWlwkvzskeX9ZlcFMmn6DTfyDD1Rrij1efotO2ie3OrKUEzpH
+N1G5vCuZqOla
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEVDCCAjygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAsMQ4wDAYDVQQLDAVPU0FB
+RjENMAsGA1UECgwET05BUDELMAkGA1UEBhMCVVMwHhcNMTgwOTI0MTE0MjE2WhcN
+MjMwOTI0MTE0MjE2WjBHMQswCQYDVQQGEwJVUzENMAsGA1UECgwET05BUDEOMAwG
+A1UECwwFT1NBQUYxGTAXBgNVBAMMEGludGVybWVkaWF0ZUNBXzIwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjPFeAho7BtWjB4Enww/KXD0tTuoda/Fkc
+o/yv2waNNsx+pOYGdJwNHYvNS7/RLBHc8kCN+TbKnYZ6AE97wD1Pzrc7AZ58qpjq
+Ob7aTp4u3IAMWR5YOkDyjiibA5X7z9N/wveG/Ei2SgN2pY7O2lK5ucm6igarfxll
+rZC1MA9zAXrfmd5bLJQQqACT6q15KQaCIwhqwoXp8w+s0rXcZ2/L303lFIUXoHUp
+kzMsIPhJ/ZoEvAEkXIPgT2uFgOwIyWmr8Rg5jYzZhV7vey3bQUBlue9aiMIXih3d
+b4AVD6J6eF/NmJygtUfHFrWeTAYLppA0d69BWUQZ+XQgCwjOMLaNAgMBAAGjZjBk
+MB0GA1UdDgQWBBQEBI0AJDjGnHjXgFdBZ0kGgOZyRzAfBgNVHSMEGDAWgBTtc8Wb
+I4DL8Bm6CVi8//GsTyq8NTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE
+AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAt4VCLb2UHiZpDfSQbe62vlFzsGlODYKF
+k7BhW9Q5jfIXpPhhtBLFwJFEKAWFLVWubz+YIa7I5wtniS6zEPC/5t3JOiEXMJQY
+PfaPDSsovZ+eShu0QtrjjldFwL2MiqNsd2IWLSIRQUP63RZGBRTTxSsxB0VAfRyT
+cu/8znpmZsHna3DspGZQputm7qsxgUhAcPCdo9RQtG6Ox6L1wTXUJmTPHdKQtZjr
+qqSQ7kn8u3i5KQYYapmc3UO+CBbzoLPD5Rrlq+ROBbiNd9R/j5vVgRO7vsU9SHnm
+AaKFEjDPTSjDtMOxu1BsTNmftaE2jcYa9/ZW67H8URCuo92NE0cZRxBqHkPUjH3/
+/S43/TBAfjfarF5WW7iMAEZfEGhrQu26JWXBMcZshStuHUEPl2b+RC5LZcBMYKgi
+SqSOXzpiJeRNASpXKCQQZG8n03c/jBf1U20HaK/4Z2ikOql5B21suxhUbixG1EQN
+DOrFGOFUqG4Eyw+xjUR5rTfDnpKgQfJo0/aohZs9p5x+UwitkrQkJQ1ZmEzeVDjm
+7xsmOcAJS2T9DLle6fDWvyh76InymAPxzk1/2AWOp8uw8iwNfFxE+p+M7h0psZxp
+SnvlgASASdWlZLcMQtNiiKzMK75FW9SMctQfA/RfohNEwivpp6tNpgJozoKmhoPK
+zs5HS/mx8GI=
+-----END CERTIFICATE-----
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/ca_local_0.cer b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/ca_local_0.cer
new file mode 100644
index 0000000..ff37eaf
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/ca_local_0.cer
@@ -0,0 +1,31 @@
+-----BEGIN CERTIFICATE-----
+MIIFPjCCAyagAwIBAgIJAMhpcvbx/8/AMA0GCSqGSIb3DQEBCwUAMCwxDjAMBgNV
+BAsMBU9TQUFGMQ0wCwYDVQQKDARPTkFQMQswCQYDVQQGEwJVUzAeFw0xODA4MDMx
+MzI2NTBaFw0zODA3MjkxMzI2NTBaMCwxDjAMBgNVBAsMBU9TQUFGMQ0wCwYDVQQK
+DARPTkFQMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
+ggIBAO4j7nmAY9KX/ceFCITuWAMCHAmSoeHCTs+lgkYX7DpXPidsF5t0ijPaElUC
+rwwMnXz5h1o8FzXD64FMbqMVEseLUDZGelRZ7Rkz+hy0Y5i8QKsBTfeo7sP7ZEaC
+vpqom9imPLFUn4oDeYspCKjMF93Z69Cv8pxFYCFpZwY3eR9V4xOB613k8guBJtHR
+ccY9/NbdfbkrtUz5kNuQqwLj5ttvesqxPq0L4m3bPjkubQCb+QiJxx10Xcx6fcfu
+wIu7NR63qDlWFYstsDnH/VIT1pSCBHEw+muSEQ44sgPFy+AxB8O8HKd8wRfmkV2d
+YNPyotTLD+aLzDlCWtC0pGnTTJimdu9+hZRIZz5YT4m8BdLQ/jTBd6Gx2tVLvWso
+9IJSjfkhj6EtVxyZ81jM+rLAnKy3qPXDCN6CIKL07hNuSzIIhCrK2L4f82JWS7dP
+mg2acuhCH56qrhEr42Kjeak181KM/QKiRPgNyOSygJ7uRaLbqOQRh46c68NcmW4F
+13OwJQAsrjgaQY1ZWnFsvRYK9NnUqK+2XuCQFS7EYm02M2UwO2GCD88In8PCzzv8
+Q0Zj8Hb4h79fVRjG8/3MnQCJ164+9PfXyu9dj5l6XkkSvdj1IsewaSMy9NccGx7Q
+rE7yRPMB6FlAnGPj0KbJXHXJyiujPHSCF0D+Hbl9rxU7FRAbAgMBAAGjYzBhMB0G
+A1UdDgQWBBTtc8WbI4DL8Bm6CVi8//GsTyq8NTAfBgNVHSMEGDAWgBTtc8WbI4DL
+8Bm6CVi8//GsTyq8NTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAN
+BgkqhkiG9w0BAQsFAAOCAgEAW4IYy1PUrV/wHblIGFTBo5z7EB33rpHfAJzbDkop
+2n5wOlmh78pkeRNb1TOKcSHJPw0MdkwVBPI1wm/SOpHUPmKTW1muO6RUnFjZ68y9
+DiVa6zCW/RBFeG3f8kywxgqPLml1TbikRuMBU0ucOa/bXZ98P2hMLkjWTgeARGSj
+QCb7QyqeFzG0mPmAuX6zMj5xwpdyPB0zCoRGXa/BIWEvYjgkaRM+E+9oRWt/6BHQ
+4uw11R7gAV4/TSu7qYNfTMllBaLJ0o/1q0QF16e4mV1E4erDfWKlrvUlgCaHCx8Q
+3PL7ovM4jjrTNAjnX0q5xtWbF0mlJhJk/NbPDb7hArBv4vp9XoITyRW1vcbe94jv
+GzqLKlvBQUxGue4kLYDmUFdog7gaCkEH3N4mH3ad4HZUsOMeanvVgbVZr10VOlNq
+TEWqDPATayJdo+VhJCGc6hVa+IJsDTAa/z2MLybqcoOfNT/rxYIdvlX4OjSqAqOj
+bSivsCe9c4km56pP2ufA/woPzh+Z46Ukt+krGyFQwKdQQLh5Pp7Yuhvdld/5kd8M
+S2fqcBFpzzBSj+huVayw6jFi5qLlISouhCVsc0rBqvnfuQTQwmfFIlfaHBTSjniv
+5DdibZEtMqYYXl1VB4XUHTt5dOGHLEX2w/d5887DQVLUbaUKm1mfScb/vPjGgk6/
+re4=
+-----END CERTIFICATE-----
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/dmaap_bc_topic_mgr_dmaap_bc.onap.org.cer b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/dmaap_bc_topic_mgr_dmaap_bc.onap.org.cer
new file mode 100644
index 0000000..756dd3a
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/dmaap_bc_topic_mgr_dmaap_bc.onap.org.cer
@@ -0,0 +1,51 @@
+-----BEGIN CERTIFICATE-----
+MIIELDCCAxSgAwIBAgIJAI5fEseaW2LbMA0GCSqGSIb3DQEBCwUAMEcxCzAJBgNV
+BAYTAlVTMQ0wCwYDVQQKDARPTkFQMQ4wDAYDVQQLDAVPU0FBRjEZMBcGA1UEAwwQ
+aW50ZXJtZWRpYXRlQ0FfMjAeFw0xODEwMjIxMjM4MTZaFw0xOTA0MjIxMjM4MTZa
+MH8xETAPBgNVBAMMCGRtYWFwLWJjMQ8wDQYJKoZIhvcNAQkBFgAxLTArBgNVBAsM
+JGRtYWFwLWJjLXRvcGljLW1nckBkbWFhcC1iYy5vbmFwLm9yZzEOMAwGA1UECwwF
+T1NBQUYxDTALBgNVBAoMBE9OQVAxCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAs2mQSeSshK4ZrAwc8/QNHZiUVILlQwYyoviPfL27
+8mV1OXSYoTW+PzFU1Tv6HwKEFL3q9i9/y1m0DjhP4frHpNVVTo5KIeCv6fIsAYnp
+/p50P3EOh3AJehtZm4AtxN6DeMlaBv11GYUUm6E60Q36Y6Wgklq8u1KDngYJy1/Q
+Bl8aAiJbj2vpL64WSI3cyNz/qeI4/PxHsqBHUFI96GcLtLPLDSlIQWoWoZhkiQTH
+rU4Sx5/nVdWihfc0R0+jG5IH+mDb8WUNmyHnaHinrt5Er1sypU/NxD+NlRPFO1K4
+Dx40sxfAlu2LFCllDgSS/Xcfse0ny/TrL2RWELoIOz9NjQIDAQABo4HiMIHfMAkG
+A1UdEwQCMAAwDgYDVR0PAQH/BAQDAgXgMCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMB
+BggrBgEFBQcDAjBUBgNVHSMETTBLgBQEBI0AJDjGnHjXgFdBZ0kGgOZyR6EwpC4w
+LDEOMAwGA1UECwwFT1NBQUYxDTALBgNVBAoMBE9OQVAxCzAJBgNVBAYTAlVTggEC
+MB0GA1UdDgQWBBTvkTjHV87v4IBJ8N/PqkjjWGKICjArBgNVHREEJDAigghkbWFh
+cC1iY4IWZG1hYXAtYmMgZG1hYXAtYmMub25hcDANBgkqhkiG9w0BAQsFAAOCAQEA
+EJFyoeQtkjDf/yUyWReewxiOfDdmmrDOO4gbxt6hd3ilOflmC7QolR1NAzmCML3b
+vmLS7a8zhwBsUU11wjasN8PI3qG7H36U7hP/NVwvql0YNGIcxvukPJJvDqW6V3MI
+fOaCFs4uJexSYeaXRWdk0Rq8GY9gB2j1TUsl+we9zJeErKr2vY2LAJI0iYJ+v6YY
+Ug14aPYu4m4ABUDhqfM+4z580h8GA+5ZkWNr5z9xfeJB520jAc6zx86obx9hep74
+OByfVqleMV0QfZeH9oLGYh2FnSSEG60GyWFIf9k76kh2LREVCbU+nOhFfVy9YD5Q
++2TXjh/wMcv3RxAHqSeW9A==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEVDCCAjygAwIBAgIBAjANBgkqhkiG9w0BAQsFADAsMQ4wDAYDVQQLDAVPU0FB
+RjENMAsGA1UECgwET05BUDELMAkGA1UEBhMCVVMwHhcNMTgwOTI0MTE0MjE2WhcN
+MjMwOTI0MTE0MjE2WjBHMQswCQYDVQQGEwJVUzENMAsGA1UECgwET05BUDEOMAwG
+A1UECwwFT1NBQUYxGTAXBgNVBAMMEGludGVybWVkaWF0ZUNBXzIwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjPFeAho7BtWjB4Enww/KXD0tTuoda/Fkc
+o/yv2waNNsx+pOYGdJwNHYvNS7/RLBHc8kCN+TbKnYZ6AE97wD1Pzrc7AZ58qpjq
+Ob7aTp4u3IAMWR5YOkDyjiibA5X7z9N/wveG/Ei2SgN2pY7O2lK5ucm6igarfxll
+rZC1MA9zAXrfmd5bLJQQqACT6q15KQaCIwhqwoXp8w+s0rXcZ2/L303lFIUXoHUp
+kzMsIPhJ/ZoEvAEkXIPgT2uFgOwIyWmr8Rg5jYzZhV7vey3bQUBlue9aiMIXih3d
+b4AVD6J6eF/NmJygtUfHFrWeTAYLppA0d69BWUQZ+XQgCwjOMLaNAgMBAAGjZjBk
+MB0GA1UdDgQWBBQEBI0AJDjGnHjXgFdBZ0kGgOZyRzAfBgNVHSMEGDAWgBTtc8Wb
+I4DL8Bm6CVi8//GsTyq8NTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE
+AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAt4VCLb2UHiZpDfSQbe62vlFzsGlODYKF
+k7BhW9Q5jfIXpPhhtBLFwJFEKAWFLVWubz+YIa7I5wtniS6zEPC/5t3JOiEXMJQY
+PfaPDSsovZ+eShu0QtrjjldFwL2MiqNsd2IWLSIRQUP63RZGBRTTxSsxB0VAfRyT
+cu/8znpmZsHna3DspGZQputm7qsxgUhAcPCdo9RQtG6Ox6L1wTXUJmTPHdKQtZjr
+qqSQ7kn8u3i5KQYYapmc3UO+CBbzoLPD5Rrlq+ROBbiNd9R/j5vVgRO7vsU9SHnm
+AaKFEjDPTSjDtMOxu1BsTNmftaE2jcYa9/ZW67H8URCuo92NE0cZRxBqHkPUjH3/
+/S43/TBAfjfarF5WW7iMAEZfEGhrQu26JWXBMcZshStuHUEPl2b+RC5LZcBMYKgi
+SqSOXzpiJeRNASpXKCQQZG8n03c/jBf1U20HaK/4Z2ikOql5B21suxhUbixG1EQN
+DOrFGOFUqG4Eyw+xjUR5rTfDnpKgQfJo0/aohZs9p5x+UwitkrQkJQ1ZmEzeVDjm
+7xsmOcAJS2T9DLle6fDWvyh76InymAPxzk1/2AWOp8uw8iwNfFxE+p+M7h0psZxp
+SnvlgASASdWlZLcMQtNiiKzMK75FW9SMctQfA/RfohNEwivpp6tNpgJozoKmhoPK
+zs5HS/mx8GI=
+-----END CERTIFICATE-----
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/keystore.password b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/keystore.password
new file mode 100644
index 0000000..3982387
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/keystore.password
@@ -0,0 +1 @@
+mYHC98!qX}7h?W}jRv}MIXTJ
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.aai.key b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.aai.key
new file mode 100644
index 0000000..b9a22cf
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.aai.key
@@ -0,0 +1,29 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCCnz1BBkcDy1M7
+3ANgkbfwYANSJPdnU/meXpgHKYvXa8xbEI3Lsi5EnB7o9nthZFdU5dPZRFV5uJEO
+l0pjt3ogmPo0XZGYO++GfRNLq+c2YVmYjTLgFvEz6GzUtLueYjrl2JItGRugx0wN
+PXQmaAX3/8wD7nOTAZjlmuSWCeeJu5GBaX4aaiwVOONDGhmZZ7jISTE0xvvU936E
+CnUhSZtt/qRvnA1EJB/Hhs5Se4VPx6lTXYf8PXquI0IgDV49hlLhbPMKadQ8lo2y
+itiaSMJHsLZ1Wt6ob9oNFlBcceq3tfXPMVVylssuAI1pc3HsbmV7kMIwg0P1fyVo
+IALHlXgDAgMBAAECggEATFkLEpC6vWsAsYI9rxo9KxDToBXfTdP1mS2tKrKL/FQT
+1D5uwtrY1F10a7J2F0zxBrx3AQ1B8K2Ci8a+Ql6h0Z/YzvbJ/PM7Y56Dwr0tncl0
+9wfA7t46CZ8WzZT9/OtphaL6fcWpMmaK+0oqM7ClnHk1JC8h+pD6b2oDpfcQEJ5r
+hxFxdOotKgMzANMqTydteecfefy9l0hzgFiymxLZAo7ktW3HFpXO5HOgh1vkm5Pu
+FedGRwiI/RBqad2T59J/XcRH0f5Ky7sgpyCShwqIp23xpdum10N0/MTzY5iu/gvR
+pXGaPeYUrSPoLwuoMGAUm9wFbDqskI/mQzw6/rnfsQKBgQDU2O7ogZ/BjDVtjpfL
+NntXhLOq02U+dB16ZXSalMbsG//FILVLL/Ths2wutKk/9IIiC1qI4NhDc0smDkgJ
+l+oTZTnhVxZhWvOYovz7T3L3mp9VBIA0lW62dTDLK9gT6IRoQGN1fzzXF7ZfgOME
+irDQqBSfMqt5YCeQOKNe29eo5QKBgQCdGrLaGHBeWBdhvG8XcybJDk2Q9XnojO69
+2UtfJ64+hzTc2MFvyBlWymZt3/Qq3llP/K9WUYW/ohL9l8rTXHEfBGpQVPzU2roQ
+iicbx/zc2qfO79YaE10D/paekX2vrpoJlhtp0yMU/HMEYxrucbYQJEdKx9frcTXo
+fQ9l5V+WxwKBgQDKEkYGsQGFk+IpZ+XOhKPmu9KDDH0jJMPTrrxcAYE1KYPSl7Hm
+dtoK6Pd9BAFm+XAOeC70olpO9wdSUt6rVPFihojD2ZUiymFX+O0qfgwM7Fv2L/az
+dWcNjAbN7IsQo4AJJZAHPcv5/MYkt01Pw4gIIHqrhURsUBBfiJX5ecetzQKBgC9I
+NcPFzyvVv1O+7oBUO7wO/fE+r+35XHDu0OxWeO6Aqrw80BrgUh/40lMHL+km+iJE
+nlCQQHyoPqbr5DMwgysenRCIQ3+cRJttuM93pPajKBXzwLAgW8I0AQjAKN+S4PE5
+qA51aP2L7OHJIfXZaz34bSxocOd/LwZFfTjhi59JAoGAVc3HAzQOkrCs1GPXvuOx
+YwJUyuwLtCzcb05q+ys/5b/02RxTl4QPfOPqj47y8SDUUC7Cbr6ktqAkfsBOyPPj
+tSniVhPKa4XdP0Brsil934sd3shvwrpEb9Xs6ialTid+PKaU/rFn1DYWZUP8lNMK
+tq0nYLX/Z6N7LHiz32G9Kjs=
+-----END PRIVATE KEY-----
+
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.jks b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.jks
new file mode 100644
index 0000000..e74ce64
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.jks
Binary files differ
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.trust.jks b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.trust.jks
new file mode 100644
index 0000000..10103cf
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dcae.trust.jks
Binary files differ
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dmaap-bc.key b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dmaap-bc.key
new file mode 100644
index 0000000..880a33b
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/org.onap.dmaap-bc.key
@@ -0,0 +1,29 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCzaZBJ5KyErhms
+DBzz9A0dmJRUguVDBjKi+I98vbvyZXU5dJihNb4/MVTVO/ofAoQUver2L3/LWbQO
+OE/h+sek1VVOjkoh4K/p8iwBien+nnQ/cQ6HcAl6G1mbgC3E3oN4yVoG/XUZhRSb
+oTrRDfpjpaCSWry7UoOeBgnLX9AGXxoCIluPa+kvrhZIjdzI3P+p4jj8/EeyoEdQ
+Uj3oZwu0s8sNKUhBahahmGSJBMetThLHn+dV1aKF9zRHT6Mbkgf6YNvxZQ2bIedo
+eKeu3kSvWzKlT83EP42VE8U7UrgPHjSzF8CW7YsUKWUOBJL9dx+x7SfL9OsvZFYQ
+ugg7P02NAgMBAAECggEAfPetwlqe9DgUt6skS6SVsiTCRO9746iggrXhtECwdlHH
+SkL1wWye3INvFKwXN5xYBd6Xl+1T9X/BFBqTQdOdViompnYkGt7XiXvevR+kNm+G
+h14ngZ0/bKc6Tj8FIljfeLW/mJjZBPKWfSTbxBwZaWlHpEnBpjT+aobIMbnGO3i8
+iuPEIlSTmI/MmIvwyXkJ8r41phIZpdhtyKACx5LSvSArwPTYzVLyaGBJ63T4Qcat
+GY/Oa1nAJkbFT46sP06O+sm1UIVUGbjewzPaDnfdFyJWmae0nGn1xU8VZUPI7rfu
+YCf7le2grgtKy16jQo0o69RGYc4ebP27DKGd8YJHHQKBgQDts/7x6sG3fqPvbv9D
+M5LDraslrj+noHGVcvCfigcgngvnMGcB/R8IT6YPmNRfATHV/UTLuW++PuqXsR21
+/WwJVbxudZ3alX7sz6CTGvcCQvnvPQm2e/iVW/JFrQu/poPxL1k3talDdKFWTRql
+ZvQE05YjdTutlN2hGvqjSTZ1AwKBgQDBOO7GmG4FRQ4jXvUULXKMRUw+UzUy9NAV
+io1b3CiwWynsdW2OPp6Jy6GB6+e7Di2M0i35hkpQd5NoeDnVqkm9ERYLnHr9FAs0
+5cKT7DDRC9ddJesJrqdhqGfhZCHMoqEiDRf3kNMBfFMV1TCefdQ0kIFYUuhHgboJ
+aK+GqmtGLwKBgEEqmpdaA7e5mVn39TVIO1E4GHahGcRr4RfWxg8G+UNA8QR1qZfK
+/Cn8JAucm4RcQHxpDeZINVFT0F676OhOzMKWZa1mw1r8pypnFZ+ewd81221yL2p+
+/Dx+U6I0eccV8JA7qdrzC695lw2g39A+tGFqXHvmFPFWoZgcXGBNnwdfAoGBAJ8y
+9mEAhF2pKN3xxgGq9F8oVYpgakuis7Ob5Z5TBd9QLXmawvpZE6y670YphVN0egk1
+vxWBFMe5zeVccWJfHMQ/SKemdRsBob4itC/Gge4rUHV54W6nzVdENtrY8pQ1RofU
+u/OJCqGFursZXSaoy+fHTBrmrGUGOK655y0QSrSXAoGBANbSu8DfjJwDHcWTstcn
+XJ/bHB6aZmKe4ibOSFBMsOuy0AP1vRxQTgvQhgeRWm5ngv7YhPes2UHqRktadfGz
+VUzx9/ILpL5skhIFEzgEP32cO1tQNE1vxODs3zg+U/Wy9gxJt0dLCB/sPQJcGLri
+mkzev7AyLLr137K+ssxhczqg
+-----END PRIVATE KEY-----
+
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/certs/truststore.password b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/truststore.password
new file mode 100644
index 0000000..168e64b
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/certs/truststore.password
@@ -0,0 +1 @@
+*TQH?Lnszprs4LmlAj38yds(
\ No newline at end of file
diff --git a/tests/dcaegen2/bbs-testcases/resources/simulator/httpServerLib.py b/tests/dcaegen2/bbs-testcases/resources/simulator/httpServerLib.py
new file mode 100644
index 0000000..d963169
--- /dev/null
+++ b/tests/dcaegen2/bbs-testcases/resources/simulator/httpServerLib.py
@@ -0,0 +1,37 @@
+import _thread
+import ssl
+from http.server import HTTPServer
+
+
+def header_200_and_json(self):
+    self.send_response(200)
+    self.send_header('Content-Type', 'application/json')
+    self.end_headers()
+    
+def header_404_and_json(self):
+    self.send_response(404)
+    self.send_header('Content-Type', 'application/json')
+    self.end_headers()
+
+def start_http_endpoint(port, handler_class):
+    _thread.start_new_thread(init_http_endpoints, (port, handler_class))
+
+
+def start_https_endpoint(port, handler_class, keyfile, certfile, ca_certs):
+    _thread.start_new_thread(init_https_endpoints, (port, handler_class, keyfile, certfile, ca_certs))
+
+
+def init_http_endpoints(port, handler_class, server_class=HTTPServer):
+    server = server_class(('', port), handler_class)
+    sa = server.socket.getsockname()
+    print("Serving HTTP on", sa[0], "port", sa[1], "for", handler_class, "...")
+    server.serve_forever()
+
+
+def init_https_endpoints(port, handler_class, keyfile, certfile, ca_certs, server_class=HTTPServer):
+    server = server_class(('', port), handler_class)
+    server.socket = ssl.wrap_socket(server.socket, keyfile=keyfile, certfile=certfile,
+                                    ca_certs=ca_certs, server_side=True)
+    sa = server.socket.getsockname()
+    print("Serving HTTPS on", sa[0], "port", sa[1], "for", handler_class, "...")
+    server.serve_forever()
