diff --git a/test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot b/test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot
new file mode 100644
index 0000000..9098b1a
--- /dev/null
+++ b/test/csit/tests/usecases/5G-bulkpm/BulkpmE2E.robot
@@ -0,0 +1,69 @@
+*** Settings ***
+Documentation	  Testing E2E VES,Dmaap,DFC,DR with File Ready event feed from xNF
+Library           RequestsLibrary
+Library           OperatingSystem
+Library           Collections
+Library           Process
+Resource          resources/bulkpm_keywords.robot
+
+
+*** Variables ***
+${VESC_URL}                              http://%{VESC_IP}:8080
+${GLOBAL_APPLICATION_ID}                 robot-ves
+${VES_ANY_EVENT_PATH}                    /eventListener/v7
+${HEADER_STRING}                         content-type=application/json
+${EVENT_DATA_FILE}                       %{WORKSPACE}/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotificationUpdated.json
+
+${TARGETURL_TOPICS}                      http://${DMAAP_MR_IP}:3904/topics
+${TARGETURL_SUBSCR}                      http://${DMAAP_MR_IP}:3904/events/unauthenticated.VES_NOTIFICATION_OUTPUT/OpenDcae-c12/C12?timeout=1000
+${CLI_EXEC_CLI}                          curl -k https://${DR_PROV_IP}:8443/internal/prov
+${CLI_EXEC_CLI_DFC}                      docker exec dfc /bin/sh -c "ls /target | grep .gz"
+
+*** Test Cases ***
+
+Send VES File Ready Event to VES Collector
+    [Tags]    Bulk_PM_E2E_01
+    [Documentation]   Send VES File Ready Event
+    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}
+    ${headers}=   Create Header From String    ${HEADER_STRING}
+    ${resp}=  Publish Event To VES Collector    ${VESC_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}
+    Sleep     2s
+    ${resp}=  Publish Event To VES Collector    ${VESC_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}
+    Sleep     2s
+    ${resp}=  Publish Event To VES Collector    ${VESC_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}
+    Sleep     2s
+    ${resp}=  Publish Event To VES Collector    ${VESC_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}
+    Log    Receive HTTP Status code ${resp.status_code}
+    Should Be Equal As Strings 	${resp.status_code} 	202
+
+Check VES Notification Topic is existing in Message Router
+    [Tags]                          Bulk_PM_E2E_02
+    [Documentation]                 Get the VES Notification topic on message router
+    [Timeout]                       1 minute
+    Sleep                           10s
+    ${resp}=                        GetCall                         ${TARGETURL_TOPICS}
+    log                             ${TARGETURL_TOPICS}
+    log                             'JSON Response Code :'${resp}
+    ${topics}=                      Evaluate                        $resp.json().get('topics')
+    log                             ${topics}
+    ${ListLength}=                  Get Length                      ${topics}
+    log                             ${ListLength}
+    List Should Contain Value       ${topics}                       unauthenticated.VES_NOTIFICATION_OUTPUT
+
+Verify Downloaded PM file from xNF exist on Data File Collector
+    [Tags]              Bulk_PM_E2E_03
+    [Documentation]     Check the PM XML file exists on the File Consumer Simulator
+    ${cli_cmd_output}=    Run Process   ${CLI_EXEC_CLI_DFC}    shell=yes
+    Log    ${cli_cmd_output.stdout}
+    Should Be Equal As Strings    ${cli_cmd_output.rc}    0
+    Should Contain    ${cli_cmd_output.stdout}    xNF.pm.xml.gz
+
+
+Verify Default Feed And File Consumer Subscription On Datarouter
+    [Tags]              Bulk_PM_E2E_04
+    [Documentation]     Verify Default Feed And File Consumer Subscription On Datarouter
+    ${cli_cmd_output}=    Run Process   ${CLI_EXEC_CLI}    shell=yes
+    Log    ${cli_cmd_output.stdout}
+    Should Be Equal As Strings    ${cli_cmd_output.rc}    0
+    Should Contain    ${cli_cmd_output.stdout}    https://dmaap-dr-prov/publish/1
+    Should Contain    ${cli_cmd_output.stdout}    http://${DR_SUBSCIBER_IP}:7070
\ No newline at end of file
diff --git a/test/csit/tests/usecases/5G-bulkpm/__init__.robot b/test/csit/tests/usecases/5G-bulkpm/__init__.robot
new file mode 100644
index 0000000..7114fd4
--- /dev/null
+++ b/test/csit/tests/usecases/5G-bulkpm/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation    5G Bulk PM E2E Testcases
diff --git a/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json b/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json
new file mode 100644
index 0000000..4064ea3
--- /dev/null
+++ b/test/csit/tests/usecases/5G-bulkpm/assets/json_events/FileExistNotification.json
@@ -0,0 +1,33 @@
+{
+    "event": {
+        "commonEventHeader": {
+            "version": "4.0.1",
+            "vesEventListenerVersion": "7.0.1",
+            "domain": "notification",
+            "eventName": "Noti_RnNode-Ericsson_FileReady",
+            "eventId": "FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1",
+            "lastEpochMicrosec": 8745745764578,
+            "priority": "Normal",
+            "reportingEntityName": "otenb5309",
+            "sequence": 0,
+            "sourceName": "oteNB5309",
+            "startEpochMicrosec": 8745745764578,
+            "timeZoneOffset": "UTC+05.30"
+        },
+        "notificationFields": {
+            "changeIdentifier": "PM_MEAS_FILES",
+            "changeType": "FileReady",
+            "notificationFieldsVersion": "2.0",
+            "arrayOfNamedHashMap": [
+                { "name": "xNF.pm.xml.gz",
+                  "hashMap":{
+                            "location": "sftp://admin:admin@sftpserver:22/xNF.pm.xml.gz",
+                            "compression": "gzip",
+                            "fileFormatType": "org.3GPP.32.435#measCollec",
+                            "fileFormatVersion": "V10"
+                            }
+                }
+        ]
+    }
+}
+}
\ No newline at end of file
diff --git a/test/csit/tests/usecases/5G-bulkpm/resources/bulkpm_keywords.robot b/test/csit/tests/usecases/5G-bulkpm/resources/bulkpm_keywords.robot
new file mode 100644
index 0000000..6859ea0
--- /dev/null
+++ b/test/csit/tests/usecases/5G-bulkpm/resources/bulkpm_keywords.robot
@@ -0,0 +1,38 @@
+ *** Settings ***
+Documentation     The main interface for interacting with VES. It handles low level stuff like managing the http request library and VES required fields
+Library 	      RequestsLibrary
+Library	          ../resources/xNFLibrary.py
+Library           OperatingSystem
+Library           Collections
+Library           requests
+Library           Collections
+Library           String
+
+*** Variables ***
+
+*** Keywords ***
+
+Get Event Data From File
+    [Arguments]    ${jsonfile}
+    ${data}=    OperatingSystem.Get File    ${jsonfile}
+    #Should Not Be_Equal    ${data}    None
+    [return]    ${data}
+
+Publish Event To VES Collector
+    [Documentation]    Send an event to VES Collector
+    [Arguments]     ${url}  ${evtpath}   ${httpheaders}    ${evtdata}
+    Log    Creating session ${url}
+    ${session}=    Create Session 	dcaegen2-d1 	${url}
+    ${resp}= 	Post Request 	dcaegen2-d1 	${evtpath}     data=${evtdata}   headers=${httpheaders}
+    #Log    Received response from dcae ${resp.json()}
+    [return] 	${resp}
+PostCall
+    [Arguments]    ${url}    		${data}
+    ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
+    ${resp}=       Evaluate    requests.post('${url}',data='${data}', headers=${headers},verify=False)    requests
+    [Return]       ${resp}
+
+GetCall
+    [Arguments]     ${url}
+    ${resp}=    	Evaluate    requests.get('${url}')    requests
+    [Return]    	${resp}
diff --git a/test/csit/tests/usecases/5G-bulkpm/resources/xNFLibrary.py b/test/csit/tests/usecases/5G-bulkpm/resources/xNFLibrary.py
new file mode 100644
index 0000000..01574f7
--- /dev/null
+++ b/test/csit/tests/usecases/5G-bulkpm/resources/xNFLibrary.py
@@ -0,0 +1,25 @@
+'''
+Created on Aug 18, 2017
+
+@author: sw6830
+'''
+from robot.api import logger
+from Queue import Queue
+import uuid, time, json, threading,os, platform, subprocess,paramiko
+
+class xNFLibrary(object):
+
+    def __init__(self):
+        pass
+
+    def create_header_from_string(self, dictStr):
+        logger.info("Enter create_header_from_string: dictStr")
+        return dict(u.split("=") for u in dictStr.split(","))
+
+    def Generate_UUID(self):
+        """generate a uuid"""
+        return uuid.uuid4()
+
+if __name__ == '__main__':
+    lib = xNFLibrary()
+    time.sleep(100000)
\ No newline at end of file
