diff --git a/robot/assets/cmpv2/k8s-pnf-simulator.yaml b/robot/assets/cmpv2/k8s-pnf-simulator.yaml
index 1916ba9..89e838b 100644
--- a/robot/assets/cmpv2/k8s-pnf-simulator.yaml
+++ b/robot/assets/cmpv2/k8s-pnf-simulator.yaml
@@ -33,6 +33,12 @@
     type: boolean
     description: Flag to indicate external tls enable/disable.
     default: true
+  service_component_type:
+    type: string
+    default: "pnf-simulator"
+  service_component_name_override:
+    type: string
+    default: "pnf-simulator"
 node_templates:
   pnf-simulator:
     type: dcae.nodes.ContainerizedServiceComponent
@@ -45,8 +51,8 @@
             ports:
               - '5000:0'
     properties:
-      service_component_type: pnf-simulator
-      service_component_name_override: pnf-simulator
+      service_component_type: { get_input: service_component_type }
+      service_component_name_override: { get_input: service_component_name_override }
       image: { get_input: tag_version }
       replicas: { get_input: replicas }
       always_pull_image: true
diff --git a/robot/assets/templates/dfc/consul.jinja b/robot/assets/templates/dfc/consul.jinja
new file mode 100644
index 0000000..f630f97
--- /dev/null
+++ b/robot/assets/templates/dfc/consul.jinja
@@ -0,0 +1,31 @@
+{
+  "service_calls": [],
+  "streams_publishes": {
+    "PM_MEAS_FILES": {
+      "dmaap_info": "<<feed0>>",
+      "type": "data_router"
+    }
+  },
+  "dmaap.certificateConfig.keyCert": "/opt/app/datafile/etc/cert/cert.p12",
+  "dmaap.certificateConfig.keyPasswordPath": "/opt/app/datafile/etc/cert/p12.pass",
+  "dmaap.certificateConfig.trustedCa": "/opt/app/datafile/etc/cert/trust.jks",
+  "dmaap.certificateConfig.trustedCaPasswordPath": "/opt/app/datafile/etc/cert/trust.pass",
+  "dmaap.security.enableDmaapCertAuth": true,
+  "dmaap.certificateConfig.httpsHostnameVerify": {{httpsHostnameVerify}},
+  "dmaap.security.keyStorePasswordPath": "/opt/app/datafile/etc/cert/jks.pass",
+  "dmaap.security.keyStorePath": "/opt/app/datafile/etc/cert/cert.jks",
+  "dmaap.security.trustStorePasswordPath": "/opt/app/datafile/etc/cert/trust.pass",
+  "dmaap.security.trustStorePath": "/opt/app/datafile/etc/cert/trust.jks",
+  "dmaap.dmaapConsumerConfiguration.consumerGroup": "OpenDcae-c12",
+  "dmaap.dmaapConsumerConfiguration.consumerId": "C12",
+  "dmaap.dmaapConsumerConfiguration.timeoutMs": -1,
+  "sftp.security.strictHostKeyChecking": true,
+  "streams_subscribes": {
+    "dmaap_subscriber": {
+      "type": "message_router",
+      "dmaap_info": {
+        "topic_url": "https://message-router:3905/events/unauthenticated.VES_NOTIFICATION_OUTPUT"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/robot/assets/templates/dfc/notification.jinja b/robot/assets/templates/dfc/notification.jinja
new file mode 100644
index 0000000..83396c2
--- /dev/null
+++ b/robot/assets/templates/dfc/notification.jinja
@@ -0,0 +1,34 @@
+{
+  "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": "NOK6061ZW3",
+      "sequence": 0,
+      "sourceName": "NOK6061ZW3",
+      "startEpochMicrosec": 8745745764578,
+      "timeZoneOffset": "UTC+05.30"
+    },
+    "notificationFields": {
+      "changeIdentifier": "PM_MEAS_FILES",
+      "changeType": "FileReady",
+      "notificationFieldsVersion": "2.0",
+      "arrayOfNamedHashMap": [
+        {
+          "name": "{{pm_file}}",
+          "hashMap": {
+            "location": "https://{{https_server_host}}:443/{{pm_file}}",
+            "compression": "gzip",
+            "fileFormatType": "{{fileFormatType}}",
+            "fileFormatVersion": "{{fileFormatVersion}}"
+          }
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/robot/assets/usecases/5gbulkpm/k8s-https.yaml b/robot/assets/usecases/5gbulkpm/k8s-https.yaml
new file mode 100644
index 0000000..ac1d69a
--- /dev/null
+++ b/robot/assets/usecases/5gbulkpm/k8s-https.yaml
@@ -0,0 +1,78 @@
+tosca_definitions_version: cloudify_dsl_1_3
+imports:
+  - 'http://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml'
+  - 'plugin:k8splugin?version=>=3.4.2,<4.0.0'
+inputs:
+  tag_version:
+    type: string
+    description: Docker image to be used
+    default: 'nexus3.onap.org:10001/onap/org.onap.integration.nfsimulator.pmhttpsserver:latest'
+  replicas:
+    type: integer
+    description: Number of instances
+    default: 1
+  external_cert_cert_type:
+    type: string
+    description: Output type
+    default: 'PEM'
+  external_cert_ca_name:
+    type: string
+    description: Name of Certificate Authority configured on CertService side.
+    default: 'RA'
+  external_cert_common_name:
+    type: string
+    description: Common name which should be present in certificate.
+    default: 'https-server'
+  external_cert_sans:
+    type: string
+    description: 'List of Subject Alternative Names (SANs) which should be present
+      in certificate. Delimiter - , Should contain common_name value and other FQDNs
+      under which given component is accessible.'
+    default: 'https-server'
+  external_cert_use_external_tls:
+    type: boolean
+    description: Flag to indicate external tls enable/disable.
+    default: true
+  service_component_type:
+    type: string
+    default: "https-server"
+  service_component_name_override:
+    type: string
+    default: "https-server"
+  enable_tls:
+    type: boolean
+    default: false
+node_templates:
+  httpsserver:
+    type: dcae.nodes.ContainerizedServiceComponent
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        start:
+          inputs:
+            ports:
+              - '80:0'
+              - '8080:0'
+              - '443:0'
+    properties:
+      service_component_type: { get_input: service_component_type }
+      service_component_name_override: { get_input: service_component_name_override }
+      image: { get_input: tag_version }
+      replicas: { get_input: replicas }
+      always_pull_image: true
+      tls_info:
+        cert_directory: '/etc/apache2/certs/'
+        use_tls:
+          get_input: enable_tls
+      external_cert:
+        external_cert_directory: '/etc/apache2/certs/'
+        use_external_tls:
+          get_input: external_cert_use_external_tls
+        cert_type:
+          get_input: external_cert_cert_type
+        ca_name:
+          get_input: external_cert_ca_name
+        external_certificate_parameters:
+          common_name:
+            get_input: external_cert_common_name
+          sans:
+            get_input: external_cert_sans
diff --git a/robot/resources/dcae/deployment.robot b/robot/resources/dcae/deployment.robot
index 30a5efc..4c8098c 100644
--- a/robot/resources/dcae/deployment.robot
+++ b/robot/resources/dcae/deployment.robot
@@ -10,7 +10,7 @@
 
 *** Keywords ***
 Deploy Service
-    [Arguments]                         ${inputs}                   ${deployment_name}                      ${wait_time}=5 minute
+    [Arguments]                         ${inputs}                   ${deployment_name}                      ${wait_time}=5 minute      ${check_deployment_status}=true
     Disable Warnings
     ${headers}=                         Create Dictionary           content-type=application/json
     ${deployment_data}=                 Set Variable                ${inputs}
@@ -18,7 +18,12 @@
     ${resp}=                            Put Request                 deployment_session                       /${DEPLOYMENT_ENDPOINT}/${deployment_name}         data=${deployment_data}     headers=${headers}
     ${operationLink}                    Set Variable                ${resp.json().get('links').get('status')}
     ${operationId}                      Fetch From Right            ${operationLink}                /
-    Wait Until Keyword Succeeds         ${wait_time}                20 sec           Deployment Status       ${deployment_name}     ${operationId}
+    Run Keyword If  "${check_deployment_status}"=="true"             Check Deployment Status   ${deployment_name}     ${operationId}    ${wait_time}
+    [Return]                            ${operationId}
+
+Check Deployment Status
+    [Arguments]                         ${deployment_name}          ${operationId}                ${wait_time}
+    Wait Until Keyword Succeeds         ${wait_time}                20 sec                                  Deployment Status       ${deployment_name}     ${operationId}
 
 Deployment Status
     [Arguments]         ${deployment_name}          ${operationId}
@@ -27,6 +32,7 @@
     ${resp}=            Get Request                 deployment_session     /${DEPLOYMENT_ENDPOINT}/${deployment_name}/operation/${operationId}
     ${status}           Set Variable                ${resp.json().get('status')}
     Should Be Equal As Strings                      ${status}               succeeded
+    [Return]            ${status}
 
 Undeploy Service
     [Arguments]         ${deployment_name}
diff --git a/robot/resources/usecases/5gbulkpm_interface.robot b/robot/resources/usecases/5gbulkpm_interface.robot
index 0818c9b..0dfd804 100644
--- a/robot/resources/usecases/5gbulkpm_interface.robot
+++ b/robot/resources/usecases/5gbulkpm_interface.robot
@@ -4,6 +4,11 @@
 Library           OperatingSystem
 Library           String
 Library           JSONLibrary
+Resource          ../dcae/deployment.robot
+Resource          ../dcae/inventory.robot
+Resource          ../mr_interface.robot
+Resource          ../dr_interface.robot
+Resource          ../consul_interface.robot
 
 *** Variables ***
 ${INVENTORY_SERVER}                                 ${GLOBAL_INVENTORY_SERVER_PROTOCOL}://${GLOBAL_INVENTORY_SERVER_NAME}:${GLOBAL_INVENTORY_SERVER_PORT}
@@ -12,20 +17,40 @@
 ${DMAAP_BC_SERVER}                                  ${GLOBAL_BC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_BC_IP_ADDR}:${GLOBAL_BC_HTTPS_SERVER_PORT}
 ${VES_HEALTH_CHECK_PATH}                            ${GLOBAL_DCAE_VES_HTTPS_PROTOCOL}://${GLOBAL_INJECTED_DCAE_VES_HOST}:${GLOBAL_DCAE_VES_HTTPS_SERVER_PORT}
 ${MR_PUBLISH_TEMPLATE}                              mr/mr_publish.jinja
+${INVENTORY_ENDPOINT}                               /dcae-service-types
+${XNF_SFTP_BLUEPRINT_PATH}                          ${EXECDIR}/robot/assets/usecases/5gbulkpm/k8s-sftp.yaml
+${XNF_HTTPS_BLUEPRINT_PATH}                          ${EXECDIR}/robot/assets/usecases/5gbulkpm/k8s-https.yaml
+${BLUEPRINT_TEMPLATE_PATH}                          ${EXECDIR}/robot/assets/usecases/5gbulkpm/blueprintTemplate.json
+${DEPLOYMENT_ENDPOINT}                              dcae-deployments
+${MR_TOPIC_CHECK_PATH}                              /topics
+${DR_SUB_CHECK_PATH}                                /internal/prov
+${MR_TOPIC_URL_PATH}                                /events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS/CG1/C1
+${MR_TOPIC_URL_PATH_FOR_POST}                       /events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
+${DMAAP_BC_MR_CLIENT_PATH}                          /webapi/mr_clients
+${DMAAP_BC_MR_CLUSTER_PATH}                         /webapi/mr_clusters
+${PMMAPPER_HEALTH_CHECK_PATH}                       /healthcheck
+${JSON_DATA_FILE}                                   ${EXECDIR}/robot/assets/usecases/5gbulkpm/Notification.json
+${VES_LISTENER_PATH}                                /eventListener/v7
+${PMMAPPER_SUB_ROLE_DATA}                           ${EXECDIR}/robot/assets/usecases/5gbulkpm/sub.json
+${PMMAPPER_MR_CLUSTER_DATA}                         ${EXECDIR}/robot/assets/usecases/5gbulkpm/mr_clusters.json
+${NEXUS3}                                           ${GLOBAL_INJECTED_NEXUS_DOCKER_REPO}
+${SET_KNOWN_HOSTS_FILE_PATH}                        kubectl set env deployment/$(kubectl get deployment -n onap | grep datafile | awk '{print $1}') KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_hosts -n onap
+${CHECK_ENV_SET}                                    kubectl set env pod/$(kubectl get pod -n onap | grep datafile | awk '{print $1}') --list -n onap
+${GET_RSA_KEY}                                      kubectl exec $(kubectl get pod -n onap | grep sftpserver | awk '{print $1}') -n onap -- ssh-keyscan -t rsa sftpserver > /tmp/known_hosts
+${COPY_RSA_KEY}                                     kubectl cp /tmp/known_hosts $(kubectl get pod -n onap | grep datafile | awk '{print $1}'):/home/datafile/.ssh/known_hosts -n onap
+${CHECK_DFC_LOGS}                                   kubectl logs $(kubectl get pod -n onap | grep datafile | awk '{print $1}') -n onap --tail=4
+${EXPECTED_PRINT}                                   StrictHostKeyChecking is enabled but environment variable KNOWN_HOSTS_FILE_PATH is not set or points to not existing file
+${MONGO_BLUEPRINT_PATH}                             ${EXECDIR}/robot/assets/cmpv2/k8s-mongo.yaml
+${PNF_SIMULATOR_BLUEPRINT_PATH}                     ${EXECDIR}/robot/assets/cmpv2/k8s-pnf-simulator.yaml
+${VES_INPUTS}                                       deployment/VesTlsCmpv2Inputs.jinja
+${pm_notification_event}                            dfc/notification.jinja
+${consul_change_event}                              dfc/consul.jinja
+${ves_client_single_event}=                         ves/pnf_simulator_single_event.jinja
+
+
+
 
 *** Keywords ***
-Undeploy Service
-    [Arguments]         ${server}                   ${endpoint}
-    ${session}=         Create Session 	            deployment                 ${server}
-    ${resp}=            Delete Request              deployment                 ${endpoint}
-    [Return]            ${resp}
-
-Deployment Status
-    [Arguments]         ${server}                   ${endpoint}            ${deployment}      ${operationId}
-    ${session}=         Create Session              deployment-status      ${server}
-    ${resp}=            Get Request                 deployment-status      /${endpoint}/${deployment}/operation/${operationId}
-    ${status}           Set Variable                ${resp.json().get('status')}
-    Should Be Equal As Strings                      ${status}               succeeded
 
 
 Check Next Event From Topic
@@ -34,49 +59,47 @@
     ...  If there is no more messageses then it reports success and finish "Wait Until Keyword Succeeds  2 min  1 s  Check Next Event From Topic" step from "xNF PM File Validate" keyword
     ...  In other case it triggers "Get Next Event From Topic".
     ...  NOTE: Keyword "Get Next Event From Topic" will always fails in order to not finsh "Wait Until Keyword Succeeds  2 min  1 s  Check Next Event From Topic" step from "xNF PM File Validate" keyword
-    ${resp}=  Run MR Auth Get Request     ${MR_TOPIC_URL_PATH}     ${GLOBAL_DCAE_USERNAME}      ${GLOBAL_DCAE_PASSWORD}
-    Run keyword If  ${resp.text} == @{EMPTY}  Log  Event is empty! There is no more events on topic!
-    ...     ELSE   Get Next Event From Topic  ${resp}
+    ${resp}=        Run MR Auth Get Request         ${MR_TOPIC_URL_PATH}     ${GLOBAL_DCAE_USERNAME}      ${GLOBAL_DCAE_PASSWORD}
+    Run keyword If  ${resp.text} == @{EMPTY}        Log                         Event is empty! There is no more events on topic!
+    ...     ELSE    Get Next Event From Topic       ${resp}
 
 Get Next Event From Topic
     [Documentation]
     ...  This keyword adds new events from MR topic to list ${all_event_json_list} in a recursive way and sets ${all_event_json_list} as a suite variable in order to be able to add new items/evnts in a next iteration
     ...  NOTE: Keyword "Get Next Event From Topic" will always fails in order to not finish "Wait Until Keyword Succeeds  2 min  1 s  Check Next Event From Topic" step from "xNF PM File Validate" keyword
-    [Arguments]  ${resp}
-    ${resp_list}=  Set Variable   ${resp.json()}
-    Log  ${resp_list}
-    ${combained_list}=  Combine Lists  ${all_event_json_list}  ${resp_list}
-    ${all_event_json_list}=  Set Variable  ${combained_list}
-    Set Suite Variable 	${all_event_json_list}
+    [Arguments]                 ${resp}
+    ${resp_list}=               Set Variable        ${resp.json()}
+    Log                         ${resp_list}
+    ${combained_list}=          Combine Lists       ${all_event_json_list}      ${resp_list}
+    ${all_event_json_list}=     Set Variable        ${combained_list}
+    Set Suite Variable 	        ${all_event_json_list}
     Fail
 
 xNF PM File Validate
     [Documentation]
     ...  This keyword gathers all events from message router topic and validates if in recived data is present an expected string: "${expected_pm_str}" .
     ...  Only in custom mode it saves a response as a json file "${PM_FILE}-${timestamp}.json" located in "${expected_event_json_path}"
-    [Arguments]  ${bulk_pm_mode}  ${expected_pm_str}  ${expected_event_json_path}
-    Run Keyword If  '${bulk_pm_mode}' == 'custom'  Set Log Level  ${PM_LOG_LEVEL}
-    ${timestamp}=  Get Time  epoch
-    ${resp}=  Run MR Auth Get Request     ${MR_TOPIC_URL_PATH}     ${GLOBAL_DCAE_USERNAME}      ${GLOBAL_DCAE_PASSWORD}
-    Run keyword If  ${resp.text} == @{EMPTY}  Fail  msg=Event is empty!
-    ${all_event_json_list}=  Set Variable  ${resp.json()}
-    Set Suite Variable 	${all_event_json_list}
-    Wait Until Keyword Succeeds  2 min  5 sec  Check Next Event From Topic
-    ${all_event_json_string}=   Convert To String    ${all_event_json_list}
-    Should Contain   ${all_event_json_string}   ${expected_pm_str}
-    Run Keyword If  '${bulk_pm_mode}' == 'custom'   Print Evnets From Topic to JSON file  ${expected_event_json_path}  ${all_event_json_string}
-    Run Keyword If  '${bulk_pm_mode}' == 'custom'  Set Log Level  TRACE
-
+    [Arguments]                 ${bulk_pm_mode}                 ${expected_pm_str}              ${expected_event_json_path}
+    Run Keyword If              '${bulk_pm_mode}' == 'custom'   Set Log Level                   ${PM_LOG_LEVEL}
+    ${timestamp}=               Get Time                        epoch
+    ${resp}=                    Run MR Auth Get Request         ${MR_TOPIC_URL_PATH}            ${GLOBAL_DCAE_USERNAME}         ${GLOBAL_DCAE_PASSWORD}
+    Run keyword If              ${resp.text} == @{EMPTY}        Fail                            msg=Event is empty!
+    ${all_event_json_list}=     Set Variable                    ${resp.json()}
+    Set Suite Variable 	        ${all_event_json_list}
+    Wait Until Keyword Succeeds  2 min                          5 sec                           Check Next Event From Topic
+    ${all_event_json_string}=   Convert To String               ${all_event_json_list}
+    Should Contain              ${all_event_json_string}        ${expected_pm_str}
+    Run Keyword If              '${bulk_pm_mode}' == 'custom'   Print Evnets From Topic to JSON file        ${expected_event_json_path}     ${all_event_json_string}
+    Run Keyword If              '${bulk_pm_mode}' == 'custom'   Set Log Level                               TRACE
 
 Print Evnets From Topic to JSON file
-     [Arguments]   ${expected_event_json_path}  ${all_event_json_string}
-     ${str}=  Replace String   ${all_event_json_string}   '{  {
-     ${str2}=  Replace String   ${str}      }'  }
-     ${all_event_json_string}=  Replace String   ${str2}   u{  {
-     ${json}=  To Json  ${all_event_json_string}   pretty_print=True
-     ${timestamp}=  Get Time  epoch
-     Create File  ${expected_event_json_path}/${PM_FILE}-${timestamp}.json  ${json}
-
+     [Arguments]                ${expected_event_json_path}         ${all_event_json_string}
+     ${str}=                    Replace String                      ${all_event_json_string}                '{          {
+     ${str2}=                   Replace String                      ${str}                                  }'          }
+     ${all_event_json_string}=  Replace String                      ${str2}                                 u{          {
+     ${json}=                   To Json                             ${all_event_json_string}                pretty_print=True
+     ${timestamp}=              Get Time                            epoch
+     Create File                ${expected_event_json_path}/${PM_FILE}-${timestamp}.json                    ${json}
 
 Topic Validate
     [Arguments]                         ${value}
@@ -89,16 +112,76 @@
     ${resp}=                            Run MR Auth Get Request                     ${MR_TOPIC_URL_PATH}                ${GLOBAL_DCAE_USERNAME}             ${GLOBAL_DCAE_PASSWORD}
     Should Contain                      ${resp.text}                                ${value}
 
+Send File Ready Event to VES Collector and Deploy all DCAE Applications
+    [Arguments]                                 ${pm_file}              ${file_format_type}             ${file_format_version}
+    Disable Warnings
+    Send File Ready Event to VES Collector      ${pm_file}              ${file_format_type}             ${file_format_version}
+    Setting Global Variables
+    Log To Console                              Deploying Data File Collector
+    Deploying Data File Collector
+    Log To Console                              Deploying 3GPP PM Mapper
+    Deploying 3GPP PM Mapper
+    Log To Console                              Deploying SFTP Server As xNF
+    Deploying SFTP Server As xNF
+    Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
+    DR Bulk PM Feed Check
+    DR PM Mapper Subscriber Check
+    Log To Console                              Deploying VES collector with CMPv2 for bulkpm over https
+    Deploying VES collector with CMPv2 for bulkpm over https
+    Log To Console                              Deploying HTTPS server with correct CMPv2 certificates
+    Deploying HTTPS server with correct certificates
+    Log To Console                              Deploying HTTPS server with wrong CMPv2 certificates - wrong SAN-s
+    Deploying HTTPS server with wrong certificates - wrong SAN-s
+    Log To Console                              Deploying VES Client with CMPv2 certificates
+    Deploying VES Client with correct certificates
+    Log To Console                              Checking status of deployed applictions
+    Wait Until Keyword Succeeds                 5 min                                           20 sec                             Checking Status Of Deployed Applictions
 
 Usecase Teardown
-    Undeploy Service                    ${DEPLOYMENT_SERVER}                 /${DEPLOYMENT_ENDPOINT}/pmmapper
-    Undeploy Service                    ${DEPLOYMENT_SERVER}                 /${DEPLOYMENT_ENDPOINT}/sftpserver
-    Undeploy Service                    ${INVENTORY_SERVER}                  ${INVENTORY_ENDPOINT}/${serviceTypeId-Sftp}
-    Undeploy Service                    ${DEPLOYMENT_SERVER}                  /${DEPLOYMENT_ENDPOINT}/datafile
+    Disable Warnings
+    Undeploy Service                    sftpserver
+    Undeploy Service                    ${serviceTypeId-Sftp}
+    Undeploy Service                    datafile
+    Undeploy Service                    pmmapper
+    Undeploy Service                    mongo-dep
+    Undeploy Service                    ves-rest-client-dep
+    Undeploy Service                    ves-collector-for-bulkpm-over-https
+    Delete Blueprint From Inventory     ${serviceTypeIdMongo}
+    Delete Blueprint From Inventory     ${serviceTypeIdVesClient}
+    Undeploy Service                    https-server-dep
+    Delete Blueprint From Inventory     ${serviceTypeId-Https}
+    Undeploy Service                    https-server-wrong-sans-dep
+    Delete Blueprint From Inventory     ${serviceTypeId-Https-wrong-sans}
+
+Setting Global Variables
+    [Documentation]
+    ...  This test case checks suite if it is working in default or custom mode and sets proper variables depended on used mode.
+    ...  Default mode is based on a previous version of 5gbulkpm test case which it test PM file available in robot image.
+    ...  Custom mode is used only in xtesing. Can be executed only as k8s job described in https://gerrit.onap.org/r/gitweb?p=integration/xtesting.git;a=blob_plain;f=smoke-usecases-robot/README.md;hb=refs/heads/master
+    ...  Custom mode is used to validate custom PM files. All details how to provide custom PM files are described in documentation above.
+    ...  By default in custom mode all PM details are not logged to robot log files, so they are not send to community name: TEST_DB_URL http://testresults.opnfv.org/onap/api/v1/results
+    ${env_variables} =  Get Environment Variables
+    ${bulk_pm_mode}=   Get Variable Value  ${env_variables["BULK_PM_MODE"]}  default
+    ${pm_log_level}=   Get Variable Value  ${env_variables["PM_LOG_LEVEL"]}  NONE
+    ${test_variables} =  Create Dictionary
+    Run Keyword If   "${bulk_pm_mode}" == "custom"  Set To Dictionary  ${test_variables}   FILE_FORMAT_TYPE=${env_variables["FILE_FORMAT_TYPE"]}
+    ...                                                                                    FILE_FORMAT_VERSION=${env_variables["FILE_FORMAT_VERSION"]}
+    ...                                                                                    PM_FILE_PATH=${env_variables["PM_FILE_PATH"]}
+    ...                                                                                    EXPECTED_PM_STR=${env_variables["EXPECTED_PM_STR"]}
+    ...                                                                                    EXPECTED_EVENT_JSON_PATH=${env_variables["EXPECTED_EVENT_JSON_PATH"]}
+    ...        ELSE                                 Set To Dictionary  ${test_variables}   FILE_FORMAT_TYPE=org.3GPP.32.435#measCollec
+    ...                                                                                    FILE_FORMAT_VERSION=V10
+    ...                                                                                    PM_FILE_PATH=${EXECDIR}/robot/assets/usecases/5gbulkpm/pmfiles/A20181002.0000-1000-0015-1000_5G.xml.gz
+    ...                                                                                    EXPECTED_PM_STR=perf3gpp_RnNode-Ericsson_pmMeasResult
+    ...                                                                                    EXPECTED_EVENT_JSON_PATH=none
+    Set Global Variable   ${GLOBAL_TEST_VARIABLES}  ${test_variables}
+    Set Global Variable  ${BULK_PM_MODE}  ${bulk_pm_mode}
+    Set Global Variable  ${PM_LOG_LEVEL}  ${pm_log_level}
 
 
 Send File Ready Event to VES Collector
     [Arguments]                         ${pm_file}                          ${file_format_type}             ${file_format_version}
+    Disable Warnings
     ${headers}=                         Create Dictionary                   content-type=application/json
     ${fileready}=                       OperatingSystem.Get File            ${JSON_DATA_FILE}
     ${auth}=                            Create List                         ${GLOBAL_DCAE_VES_USERNAME}     ${GLOBAL_DCAE_VES_PASSWORD}
@@ -109,6 +192,23 @@
     ${resp}=                            Post Request                        ves                             ${VES_LISTENER_PATH}          data=${VES_FILE_READY_NOTIFICATION}   headers=${headers}
     Should Be Equal As Strings          ${resp.status_code}                 202
 
+Send File Ready Event to VES Collector Over VES Client
+    [Arguments]                     ${pm_file}                  ${file_format_type}             ${file_format_version}    ${https_server_host}   ${http_reposnse_code}
+    Disable Warnings
+    ${pm_event}                     Create Dictionary           https_server_host=${https_server_host}  pm_file=${pm_file}   fileFormatType=${file_format_type}   fileFormatVersion=${file_format_version}
+    Templating.Create Environment   pm                          ${GLOBAL_TEMPLATE_FOLDER}
+    ${event}=                       Templating.Apply Template   pm                              ${pm_notification_event}   ${pm_event}
+    ${ves_client_endpoint}=         Set Variable                http://ves-client:5000
+    ${ves_url}=                     Set Variable                ${GLOBAL_DCAE_VES_HTTPS_PROTOCOL}://dcae-ves-collector-for-bulkpm-over-https:${GLOBAL_DCAE_VES_HTTPS_SERVER_PORT}/eventListener/v7
+    ${single_event}=                Create Dictionary           event=${event}                  ves_url=${ves_url}
+    Templating.Create Environment   ves                         ${GLOBAL_TEMPLATE_FOLDER}
+    ${data}=                        Templating.Apply Template   ves                             ${ves_client_single_event}   ${single_event}
+    ${session}=                     Create Session              ves_client                      ${ves_client_endpoint}
+    ${headers}=                     Create Dictionary           Accept=application/json         Content-Type=application/json
+    ${post_resp}=                   Post Request                ves_client                      /simulator/event      data=${data}        headers=${headers}
+    Log                             PM notification ${data}
+    Should Be Equal As Strings      ${post_resp.status_code}    ${http_reposnse_code}
+
 Upload PM Files to xNF SFTP Server
     [Arguments]                         ${pm_file_path}                   ${bulk_pm_mode}
     Open Connection                     sftpserver
@@ -119,29 +219,228 @@
     Put File                            ${pm_file_path}                    upload/${pm_file}
     [Return]  ${pm_file}
 
+Upload PM Files to xNF HTTPS Server
+    [Arguments]                         ${pm_file_path}                     ${bulk_pm_mode}                     ${https_server}
+    ${epoch}=                           Get Current Date                    result_format=epoch
+    ${pm_file} =  Run Keyword If        "${bulk_pm_mode}" == "custom"       Fetch From Right                   ${pm_file_path}               marker=/
+    ...                     ELSE                                            Set Variable                       A${epoch}.xml.gz
+    Copy File                           ${pm_file_path}                     tmp/${pm_file}
+    ${fileData}=                        Get Binary File                     tmp/${pm_file}
+    ${file_part}=                       Create List                         ${pm_file}                         ${fileData}                   application/octet-stream
+    ${fileParts}=                       Create Dictionary
+    Set to Dictionary                   ${fileParts}                        uploaded_file=${file_part}
+    ${auth}=                            Create List                         demo                                demo123456!
+    ${session}=                         Create Session                      https                               http://${https_server}:80   auth=${auth}
+    ${resp}=                            Post Request                        https                               /upload.php                 files=${fileParts}
+    Should Be Equal As Strings          ${resp.status_code}                 200
+    [Return]                            ${pm_file}
+
 Check Given Print In DFC Log
-    [Arguments]  ${check_dfc_logs}
-    ${dfc_logs}=                     Run Given Command On DFC Container      ${CHECK_DFC_LOGS}
-    Should Contain                   ${dfc_logs}                             HostKey has been changed
+    [Arguments]                         ${check_dfc_logs}
+    ${dfc_logs}=                        Run Given Command On DFC Container                                      ${CHECK_DFC_LOGS}
+    Should Contain                      ${dfc_logs}                                                             HostKey has been changed
 
 Run Given Command On DFC Container
-    [Arguments]  ${user_command}
-    ${run_command} =   Run And Return Rc And Output  ${user_command}
-    ${command_output} =  Set Variable  ${run_command[1]}
-    ${regexp_matches} =  Get Regexp Matches  ${command_output}  .*(\\s|\\[)+(.+-datafile-collector).*  2
-    ${dfc_container_name} =  Set Variable  ${regexp_matches[0]}
-    ${new_command} =  Set Variable  ${user_command} ${dfc_container_name}
-    ${command_output} =  Run And Return Rc And Output  ${new_command}
-    Should Be Equal As Integers  ${command_output[0]}  0
-    ${log} =  Set Variable  ${command_output[1]}
-    [Return]  ${log}
+    [Arguments]                         ${user_command}
+    ${run_command} =                    Run And Return Rc And Output        ${user_command}
+    ${command_output} =                 Set Variable                        ${run_command[1]}
+    ${regexp_matches} =                 Get Regexp Matches                  ${command_output}                   .*(\\s|\\[)+(.+-datafile-collector).*  2
+    ${dfc_container_name} =             Set Variable                        ${regexp_matches[0]}
+    ${new_command} =                    Set Variable                        ${user_command} ${dfc_container_name}
+    ${command_output} =                 Run And Return Rc And Output        ${new_command}
+    Should Be Equal As Integers         ${command_output[0]}                0
+    ${log} =                            Set Variable                        ${command_output[1]}
+    [Return]                            ${log}
 
 Check Known Hosts In Env
-    [Arguments]    ${CHECK_KNOWN_HOSTS}
-    ${check} =  Run And Return Rc And Output  ${CHECK_KNOWN_HOSTS}
-    Should Be Equal As Integers  ${check[0]}  0
-    ${env} =  Set Variable  ${check[1]}
-    ${string_matches} =  Get Lines Containing String  ${env}  KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host  case_insensitive=True
-    ${output} =  Should Not Be Empty  ${string_matches}
-    [Return]    ${output}
+    [Arguments]                         ${CHECK_KNOWN_HOSTS}
+    ${check} =                          Run And Return Rc And Output        ${CHECK_KNOWN_HOSTS}
+    Should Be Equal As Integers         ${check[0]}                         0
+    ${env} =                            Set Variable                        ${check[1]}
+    ${string_matches} =                 Get Lines Containing String         ${env}                              KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host  case_insensitive=True
+    ${output} =                         Should Not Be Empty                 ${string_matches}
+    [Return]                            ${output}
+
+Deploying Data File Collector
+    ${resp}=                            Get Blueprint From Inventory       k8s-datafile
+    ${json}=                            Set Variable                       ${resp.json()}
+    ${serviceTypeId-Dfc}                Set Variable                       ${json['items'][0]['typeId']}
+    ${image}                            Get Regexp Matches                 ${json['items'][0]['blueprintTemplate']}             nexus3(.)*?(?=\\")
+    ${image}                            Replace String                     ${image}[0]      nexus3.onap.org:10001               ${NEXUS3}
+    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeId-Dfc}", "inputs": {"tag_version": "${image}", "external_cert_use_external_tls": true}}
+    Deploy Service                      ${deployment_data}                 datafile                                            4 minutes
+
+Deploying 3GPP PM Mapper
+    ${clusterdata}=                     OperatingSystem.Get File           ${PMMAPPER_MR_CLUSTER_DATA}
+    ${headers}=                         Create Dictionary                  content-type=application/json
+    ${session}=                         Create Session                     dmaapbc                          ${DMAAP_BC_SERVER}
+    ${resp}=                            Post Request                       dmaapbc                          ${DMAAP_BC_MR_CLUSTER_PATH}          data=${clusterdata}   headers=${headers}
+    ${resp}=                            Get Blueprint From Inventory       k8s-pm-mapper
+    ${json}=                            Set Variable                       ${resp.json()}
+    ${serviceTypeId-Pmmapper}           Set Variable                       ${json['items'][0]['typeId']}
+    ${image}                            Get Regexp Matches                 ${json['items'][0]['blueprintTemplate']}             nexus3(.)*?(?=\')
+    ${image}                            Replace String                     ${image}[0]      nexus3.onap.org:10001               ${NEXUS3}
+    ${deployment_data}=                 Set Variable                       {"inputs":{"client_password": "${GLOBAL_DCAE_PASSWORD}", "tag_version": "${image}"},"serviceTypeId": "${serviceTypeId-Pmmapper}"}
+    ${pmMapperOperationId}=             Deploy Service                      ${deployment_data}                 pmmapper                        check_deployment_status=false
+    Set Global Variable                 ${pmMapperOperationId}
+
+Deploying SFTP Server As xNF
+    ${serviceTypeId-Sftp}               Load Blueprint To Inventory        ${XNF_SFTP_BLUEPRINT_PATH}              sftp
+    Set Global Variable                 ${serviceTypeId-Sftp}
+    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeId-Sftp}"}
+    ${sftpServerOperationId}=           Deploy Service                      ${deployment_data}                 sftpserver                        check_deployment_status=false
+    Set Global Variable                 ${sftpServerOperationId}
+
+Deploying HTTPS server with correct certificates
+    ${serviceTypeId-Https}              Load Blueprint To Inventory        ${XNF_HTTPS_BLUEPRINT_PATH}              https
+    Set Global Variable                 ${serviceTypeId-Https}
+    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeId-Https}"}
+    ${resp}=                            Get Blueprint From Inventory       https
+    ${json}=                            Set Variable                       ${resp.json()}
+    ${image}                            Get Regexp Matches                 ${json['items'][0]['blueprintTemplate']}               nexus3(.)*?(?=\')
+    ${image}                            Replace String                     ${image}[0]      nexus3.onap.org:10001                 ${NEXUS3}
+    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeId-Https}", "inputs": {"tag_version": "${image}", "service_component_type": "https-server", "service_component_name_override": "https-server", "external_cert_sans": "https-server"}}
+    ${httpsServerOperationId}=          Deploy Service                      ${deployment_data}                 https-server-dep                  check_deployment_status=false
+    Set Global Variable                 ${httpsServerOperationId}
+
+Deploying HTTPS server with wrong certificates - wrong SAN-s
+    ${serviceTypeId-Https-wrong-sans}              Load Blueprint To Inventory        ${XNF_HTTPS_BLUEPRINT_PATH}              https-wrong-sans
+    Set Global Variable                 ${serviceTypeId-Https-wrong-sans}
+    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeId-Https-wrong-sans}"}
+    ${resp}=                            Get Blueprint From Inventory       https-wrong-sans
+    ${json}=                            Set Variable                       ${resp.json()}
+    ${image}                            Get Regexp Matches                 ${json['items'][0]['blueprintTemplate']}               nexus3(.)*?(?=\')
+    ${image}                            Replace String                     ${image}[0]      nexus3.onap.org:10001                 ${NEXUS3}
+    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeId-Https-wrong-sans}", "inputs": {"tag_version": "${image}", "service_component_type": "https-server-wrong-sans", "service_component_name_override": "https-server-wrong-sans", "external_cert_sans": "wrong-cert"}}
+    ${httpsServerWrongSansOperationId}=        Deploy Service                      ${deployment_data}                 https-server-wrong-sans-dep                   check_deployment_status=false
+    Set Global Variable                 ${httpsServerWrongSansOperationId}
+
+Deploying VES Client with correct certificates
+    ${serviceTypeIdMongo}               Load Blueprint To Inventory        ${MONGO_BLUEPRINT_PATH}              mongo
+    ${serviceTypeIdVesClient}           Load Blueprint To Inventory        ${PNF_SIMULATOR_BLUEPRINT_PATH}      ves-rest-client
+    Set Suite Variable                  ${serviceTypeIdMongo}
+    Set Suite Variable                  ${serviceTypeIdVesClient}
+    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeIdMongo}"}
+    Deploy Service                      ${deployment_data}                 mongo-dep                            2 minutes
+    ${resp}=                            Get Blueprint From Inventory       ves-rest-client
+    ${json}=                            Set Variable                       ${resp.json()}
+    ${image}                            Get Regexp Matches                 ${json['items'][0]['blueprintTemplate']}               nexus3(.)*?(?=\')
+    ${image}                            Replace String                     ${image}[0]      nexus3.onap.org:10001                 ${NEXUS3}
+    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeIdVesClient}", "inputs": {"tag_version": "${image}", "service_component_type": "ves-client", "service_component_name_override": "ves-client"}}
+    ${vesRestClientOperationId}=        Deploy Service                      ${deployment_data}                 ves-rest-client-dep                   check_deployment_status=false
+    Set Global Variable                 ${vesRestClientOperationId}
+
+Deploying VES collector with CMPv2 for bulkpm over https
+    ${resp}=                            Get Blueprint From Inventory       k8s-ves
+    ${json}=                            Set Variable                       ${resp.json()}
+    ${serviceTypeIdVes}                 Set Variable                       ${json['items'][0]['typeId']}
+    ${image}                            Get Regexp Matches                 ${json['items'][0]['blueprintTemplate']}             nexus3(.)*?(?=\")
+    ${image}                            Replace String                     ${image}[0]      nexus3.onap.org:10001               ${NEXUS3}
+    ${arguments}=                       Create Dictionary                  serviceTypeId=${serviceTypeIdVes}
+    Set To Dictionary                   ${arguments}                       image                                                ${image}
+    Set To Dictionary                   ${arguments}                       external_port_tls                                    32419
+    Set To Dictionary                   ${arguments}                       service_component_name_override                      dcae-ves-collector-for-bulkpm-over-https
+    Set To Dictionary                   ${arguments}                       external_cert_sans                                   dcae-ves-collector-for-bulkpm-over-https,ves-collector-cmpv2-cert,ves-cmpv2-cert
+    Templating.Create Environment       deployment                         ${GLOBAL_TEMPLATE_FOLDER}
+    ${deployment_data}=                 Templating.Apply Template          deployment                                           ${VES_INPUTS}            ${arguments}
+    ${vesCollectorForBulkpmOverHttpsOperationId}=  Deploy Service                      ${deployment_data}                 ves-collector-for-bulkpm-over-https                  check_deployment_status=false
+    Set Global Variable                 ${vesCollectorForBulkpmOverHttpsOperationId}
+
+
+Checking Status Of Deployed Applictions
+    ${statusDict}=                          Create Dictionary
+    ${status} 	                            ${value} =          Run Keyword And Ignore Error 	        Deployment Status                   pmmapper                                            ${pmMapperOperationId}
+    Set To Dictionary                       ${statusDict}       pmmapper                                ${status}
+    ${status} 	                            ${value} =          Run Keyword And Ignore Error 	        Deployment Status                   ves-rest-client-dep                                 ${vesRestClientOperationId}
+    Set To Dictionary                       ${statusDict}       ves-rest-client-dep                     ${status}
+    ${status} 	                            ${value} =          Run Keyword And Ignore Error 	        Deployment Status                   ves-collector-for-bulkpm-over-https                 ${vesCollectorForBulkpmOverHttpsOperationId}
+    Set To Dictionary                       ${statusDict}       ves-collector-for-bulkpm-over-https     ${status}
+    ${status} 	                            ${value} =          Run Keyword And Ignore Error 	        Deployment Status                   https-server-dep                                    ${httpsServerOperationId}
+    Set To Dictionary                       ${statusDict}       https-server-dep                        ${status}
+    ${status} 	                            ${value} =          Run Keyword And Ignore Error 	        Deployment Status                   https-server-wrong-sans-dep                         ${httpsServerWrongSansOperationId}
+    Set To Dictionary                       ${statusDict}       https-server-wrong-sans-dep             ${status}
+    Dictionary Should Not Contain Value     ${statusDict}       FAIL
+
+Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
+    ${headers}=                         Create Dictionary                  content-type=application/json
+    ${subdata}=                         OperatingSystem.Get File           ${PMMAPPER_SUB_ROLE_DATA}
+    ${session}=                         Create Session                     dmaapbc                          ${DMAAP_BC_SERVER}
+    ${resp}=                            Post Request                       dmaapbc                          ${DMAAP_BC_MR_CLIENT_PATH}      data=${subdata}        headers=${headers}
+    Wait Until Keyword Succeeds         5 minute                           5 sec                            Topic Validate                  success
+    ${resp}=                            Run MR Get Request                 ${MR_TOPIC_CHECK_PATH}
+    Should Be Equal As Strings          ${resp.status_code}                200
+    ${topics}=                          Set Variable                       ${resp.json().get('topics')}
+    List Should Contain Value           ${topics}                          org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
+    ${resp}=                            Run MR Auth Get Request            ${MR_TOPIC_URL_PATH}            ${GLOBAL_DCAE_USERNAME}         ${GLOBAL_DCAE_PASSWORD}
+    Should Be Equal As Strings          ${resp.status_code}                200
+
+DR Bulk PM Feed Check
+    ${resp}=                            Run DR Get Request                  ${DR_SUB_CHECK_PATH}
+    Should Contain                      ${resp.text}                        bulk_pm_feed
+
+DR PM Mapper Subscriber Check
+    ${resp}=                            Run DR Get Request                  ${DR_SUB_CHECK_PATH}
+    Should Contain                      ${resp.text}                        https://dcae-pm-mapper:8443/delivery
+
+Setting KNOWN_HOSTS_FILE_PATH Environment Variable in DFC
+    ${rc}=                             Run and Return RC                   ${SET_KNOWN_HOSTS_FILE_PATH}
+    Should Be Equal As Integers        ${rc}                               0
+    Wait Until Keyword Succeeds        5 min                               10s               Check Known Hosts In Env             ${CHECK_ENV_SET}
+    ${rc}=                             Run and Return RC                   ${GET_RSA_KEY}
+    Should Be Equal As Integers        ${rc}                               0
+    ${rc}=                             Run and Return RC                   ${COPY_RSA_KEY}
+    Should Be Equal As Integers        ${rc}                               0
+
+Uploading PM Files to xNF SFTP Server
+    ${pm_file}=                         Upload PM Files to xNF SFTP Server      ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}    ${BULK_PM_MODE}
+    Set Global Variable                 ${PM_FILE}                              ${pm_file}
+
+Uploading PM Files to xNF HTTPS Server
+    [Arguments]                         ${https-server_host}
+    ${pm_file}=                         Upload PM Files to xNF HTTPS Server     ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}    ${BULK_PM_MODE}     ${https-server_host}
+    Set Global Variable                 ${PM_FILE}                              ${pm_file}
+
+Sending File Ready Event to VES Collector
+    Send File Ready Event to VES Collector  ${PM_FILE}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
+
+Sending File Ready Event to VES Collector Over VES Client
+    [Arguments]  ${https-server_host}
+    Send File Ready Event to VES Collector Over VES Client  ${PM_FILE}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}    ${https-server_host}   202
+
+Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
+    Wait Until Keyword Succeeds         2 min                            5 sec            xNF PM File Validate   ${BULK_PM_MODE}   ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]}  ${GLOBAL_TEST_VARIABLES["EXPECTED_EVENT_JSON_PATH"]}
+
+Changing SFTP Server RSA Key in DFC
+    ${get_known_hosts_file}=          OperatingSystem.Get File  /tmp/known_hosts
+    ${change_rsa_key}=                Replace String            ${get_known_hosts_file}        A  a
+    Create File                       /tmp/known_hosts          ${change_rsa_key}
+    ${rc}=                            Run and Return RC         ${COPY_RSA_KEY}
+    Should Be Equal As Integers       ${rc}                     0
+
+Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
+    ${dfc_logs}=                     Run Given Command On DFC Container      ${CHECK_DFC_LOGS}
+    Should Not Contain               ${dfc_logs}                             ${EXPECTED_PRINT}
+
+Checking DFC Logs After SFTP Server RSA Key Changed
+    Wait Until Keyword Succeeds         5 min  30 sec            Check Given Print In DFC LOG  ${CHECK_DFC_LOGS}
+
+Check DFC logs
+    [Arguments]  ${DFC_LOG_CHECK}
+    ${rc} =                                    Run and Return RC                   ${DFC_LOG_CHECK}
+    Should Be Equal As Integers                ${rc}                               0
+
+Change DFC httpsHostnameVerify configuration in Consul
+    [Documentation]     Changes DFC httpsHostnameVerify config.
+    [Arguments]                     ${httpsHostnameVerify}
+    ${httpsHostnameVerify_conf}     Create Dictionary               httpsHostnameVerify=${httpsHostnameVerify}
+    Templating.Create Environment   pm                              ${GLOBAL_TEMPLATE_FOLDER}
+    ${event}=                       Templating.Apply Template       pm                              ${consul_change_event}      ${httpsHostnameVerify_conf}
+    ${rc} 	${container_name} = 	Run and Return RC and Output 	kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME | awk -F'-' '{print $2}'
+    Should Be Equal As Integers 	${rc} 	                        0
+    ${resp}=                        Run Consul Put Request          /v1/kv/${container_name}-datafile-collector?dc=dc1          ${event}
+    Should Be Equal As Strings      ${resp.status_code}             200
+    ${rc} = 	                    Run and Return RC 	            kubectl delete pods -n onap $(kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME)
+    Should Be Equal As Integers 	${rc} 	                        0
+    Wait Until Keyword Succeeds         60 sec          5 sec       Check DFC logs                  kubectl logs -n onap $(kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME) ${container_name}-datafile-collector
+
 
diff --git a/robot/testsuites/usecases/5gbulkpm.robot b/robot/testsuites/usecases/5gbulkpm.robot
index 483dd03..21603dc 100644
--- a/robot/testsuites/usecases/5gbulkpm.robot
+++ b/robot/testsuites/usecases/5gbulkpm.robot
@@ -12,204 +12,77 @@
 Library           ONAPLibrary.JSON
 Library           ONAPLibrary.Utilities
 Resource          ../../resources/usecases/5gbulkpm_interface.robot
-Resource          ../../resources/mr_interface.robot
-Resource          ../../resources/dr_interface.robot
-Suite Setup       Send File Ready Event to VES Collector   test  org.3GPP.32.435#measCollec  V10
+Suite Setup       Send File Ready Event to VES Collector and Deploy all DCAE Applications   test  org.3GPP.32.435#measCollec  V10
 Suite Teardown    Usecase Teardown
 
 *** Variables ***
-${INVENTORY_ENDPOINT}               /dcae-service-types
-${XNF_SFTP_BLUEPRINT_PATH}          ${EXECDIR}/robot/assets/usecases/5gbulkpm/k8s-sftp.yaml
-${BLUEPRINT_TEMPLATE_PATH}          ${EXECDIR}/robot/assets/usecases/5gbulkpm/blueprintTemplate.json
-${DEPLOYMENT_ENDPOINT}              dcae-deployments
-${MR_TOPIC_CHECK_PATH}              /topics
-${DR_SUB_CHECK_PATH}                /internal/prov
-${MR_TOPIC_URL_PATH}                /events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS/CG1/C1
-${MR_TOPIC_URL_PATH_FOR_POST}       /events/org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
-${DMAAP_BC_MR_CLIENT_PATH}          /webapi/mr_clients
-${DMAAP_BC_MR_CLUSTER_PATH}         /webapi/mr_clusters
-${PMMAPPER_HEALTH_CHECK_PATH}       /healthcheck
-${JSON_DATA_FILE}                   ${EXECDIR}/robot/assets/usecases/5gbulkpm/Notification.json
-${VES_LISTENER_PATH}                /eventListener/v7
-${PMMAPPER_SUB_ROLE_DATA}           ${EXECDIR}/robot/assets/usecases/5gbulkpm/sub.json
-${PMMAPPER_MR_CLUSTER_DATA}         ${EXECDIR}/robot/assets/usecases/5gbulkpm/mr_clusters.json
-${NEXUS3}                           ${GLOBAL_INJECTED_NEXUS_DOCKER_REPO}
-${SET_KNOWN_HOSTS_FILE_PATH}        kubectl set env deployment/$(kubectl get deployment -n onap | grep datafile | awk '{print $1}') KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_hosts -n onap
-${CHECK_ENV_SET}                    kubectl set env pod/$(kubectl get pod -n onap | grep datafile | awk '{print $1}') --list -n onap
-${GET_RSA_KEY}                      kubectl exec $(kubectl get pod -n onap | grep sftpserver | awk '{print $1}') -n onap -- ssh-keyscan -t rsa sftpserver > /tmp/known_hosts
-${COPY_RSA_KEY}                     kubectl cp /tmp/known_hosts $(kubectl get pod -n onap | grep datafile | awk '{print $1}'):/home/datafile/.ssh/known_hosts -n onap
-${CHECK_DFC_LOGS}                   kubectl logs $(kubectl get pod -n onap | grep datafile | awk '{print $1}') -n onap --tail=4
-${EXPECTED_PRINT}                   StrictHostKeyChecking is enabled but environment variable KNOWN_HOSTS_FILE_PATH is not set or points to not existing file
+${DFC_ERROR_GREP_COMMAND_SANS}      kubectl logs $(kubectl get pods -n onap | grep datafile-collector | awk '{print $1}' | grep -v NAME) --all-containers -n onap --since=15s | grep "Certificate for .* subject alternative names: .*wrong-cert"
 
 *** Test Cases ***
 
-Setting Global Variables
+SFTP Server based bulk PM test, no SFTP Server know host veryfication on DFC side
+    [Tags]                              5gbulkpm                           5gbulkpm_sftp              5gbulkpm_cust_pm_validate
     [Documentation]
-    ...  This test case checks suite if it is working in default or custom mode and sets proper variables depended on used mode.
-    ...  Default mode is based on a previous version of 5gbulkpm test case which it test PM file available in robot image.
-    ...  Custom mode is used only in xtesing. Can be executed only as k8s job described in https://gerrit.onap.org/r/gitweb?p=integration/xtesting.git;a=blob_plain;f=smoke-usecases-robot/README.md;hb=refs/heads/master
-    ...  Custom mode is used to validate custom PM files. All details how to provide custom PM files are described in documentation above.
-    ...  By default in custom mode all PM details are not logged to robot log files, so they are not send to community name: TEST_DB_URL http://testresults.opnfv.org/onap/api/v1/results
-    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
-    ${env_variables} =  Get Environment Variables
-    ${bulk_pm_mode}=   Get Variable Value  ${env_variables["BULK_PM_MODE"]}  default
-    ${pm_log_level}=   Get Variable Value  ${env_variables["PM_LOG_LEVEL"]}  NONE
-    ${test_variables} =  Create Dictionary
-    Run Keyword If   "${bulk_pm_mode}" == "custom"  Set To Dictionary  ${test_variables}   FILE_FORMAT_TYPE=${env_variables["FILE_FORMAT_TYPE"]}
-    ...                                                                                    FILE_FORMAT_VERSION=${env_variables["FILE_FORMAT_VERSION"]}
-    ...                                                                                    PM_FILE_PATH=${env_variables["PM_FILE_PATH"]}
-    ...                                                                                    EXPECTED_PM_STR=${env_variables["EXPECTED_PM_STR"]}
-    ...                                                                                    EXPECTED_EVENT_JSON_PATH=${env_variables["EXPECTED_EVENT_JSON_PATH"]}
-    ...        ELSE                                 Set To Dictionary  ${test_variables}   FILE_FORMAT_TYPE=org.3GPP.32.435#measCollec
-    ...                                                                                    FILE_FORMAT_VERSION=V10
-    ...                                                                                    PM_FILE_PATH=${EXECDIR}/robot/assets/usecases/5gbulkpm/pmfiles/A20181002.0000-1000-0015-1000_5G.xml.gz
-    ...                                                                                    EXPECTED_PM_STR=perf3gpp_RnNode-Ericsson_pmMeasResult
-    ...                                                                                    EXPECTED_EVENT_JSON_PATH=none
-    Set Global Variable   ${GLOBAL_TEST_VARIABLES}  ${test_variables}
-    Set Global Variable  ${BULK_PM_MODE}  ${bulk_pm_mode}
-    Set Global Variable  ${PM_LOG_LEVEL}  ${pm_log_level}
+    ...  This test case triggers successful bulk pm upload from SFTP server without SFTP server host verification in DFC known host file.
+    ...  Known host verification is turned off on DFC
+    Uploading PM Files to xNF SFTP Server
+    Sending File Ready Event to VES Collector
+    Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
+
+SFTP Server based bulk PM test, successful SFTP Server known host verification on DFC side
+    [Tags]                              5gbulkpm                           5gbulkpm_sftp
+    [Documentation]
+    ...  This test case triggers successful bulk pm upload from SFTP server with SFTP server host verification in DFC known host file.
+    ...  Known host verification is turned on DFC and to know host is added SFTP server entry
+    Setting KNOWN_HOSTS_FILE_PATH Environment Variable in DFC
+    Uploading PM Files to xNF SFTP Server
+    Sending File Ready Event to VES Collector
+    Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
+    Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
+
+SFTP Server based bulk PM test, not successful SFTP Server know host verification on DFC side
+    [Tags]                              5gbulkpm                           5gbulkpm_sftp
+    [Documentation]
+    ...  This test case triggers unsuccessful bulk pm upload from SFTP server with SFTP server host verification in DFC known host file.
+    ...  Known host verification is turned on DFC and to know host is added wrong SFTP server entry
+    Changing SFTP Server RSA Key in DFC
+    Uploading PM Files to xNF SFTP Server
+    Sending File Ready Event to VES Collector
+    Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
+
+HTTPS Server based bulk PM test (correct server certificate - correct SANs), successful HTTPS server certificate verification on DFC side
+    [Tags]                              5gbulkpm                           5gbulkpm_https
+    [Documentation]
+    ...  This test case triggers successful bulk pm upload from HTTPS server using CMPv2 Certificate-based authentication
+    ...  Both HTTPS server and DFC have correct certs with correct SAN-s.
+    ...  DFC has turned on hostname verification option, verifies HTTPS server host name and downloads pm file from HTTPS server.
+    Change DFC httpsHostnameVerify configuration in Consul   true
+    Uploading PM Files to xNF HTTPS Server      https-server
+    Sending File Ready Event to VES Collector Over VES Client  https-server
+    Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
 
 
-Deploying Data File Collector
-    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
-    ${headers}=                         Create Dictionary                  content-type=application/json
-    ${session}=                         Create Session                     dfc                 ${INVENTORY_SERVER}
-    ${resp}=                            Get Request                        dfc                 ${INVENTORY_ENDPOINT}?typeName=k8s-datafile                      headers=${headers}
-    ${json}=                            Set Variable                       ${resp.json()}
-    ${serviceTypeId-Dfc}                Set Variable                       ${json['items'][0]['typeId']}
-    ${image}                            Get Regexp Matches                 ${json['items'][0]['blueprintTemplate']}            nexus3(.)*?(?=\\")
-    ${image}                            Replace String                     ${image}[0]      nexus3.onap.org:10001                 ${NEXUS3}
-    Set Global Variable                 ${serviceTypeId-Dfc}
-    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeId-Dfc}", "inputs": {"tag_version": "${image}"}}
-    ${session}=                         Create Session                     deployment-dfc                 ${DEPLOYMENT_SERVER}
-    ${resp}=                            Put Request                        deployment-dfc                 /${DEPLOYMENT_ENDPOINT}/datafile         data=${deployment_data}     headers=${headers}
-    ${operationLink}                    Set Variable                       ${resp.json().get('links').get('status')}
-    ${operationId}                      Fetch From Right                   ${operationLink}                /
-    Wait Until Keyword Succeeds         5 minute                           20 sec            Deployment Status       ${DEPLOYMENT_SERVER}     ${DEPLOYMENT_ENDPOINT}     datafile     ${operationId}
-
-Deploying 3GPP PM Mapper
-    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
-    ${clusterdata}=                     OperatingSystem.Get File           ${PMMAPPER_MR_CLUSTER_DATA}
-    ${headers}=                         Create Dictionary                  content-type=application/json
-    ${session}=                         Create Session                     dmaapbc                          ${DMAAP_BC_SERVER}
-    ${resp}=                            Post Request                       dmaapbc                          ${DMAAP_BC_MR_CLUSTER_PATH}          data=${clusterdata}   headers=${headers}
-    ${session}=                         Create Session                     pmmapper                 ${INVENTORY_SERVER}
-    ${resp}=                            Get Request                        pmmapper                 ${INVENTORY_ENDPOINT}?typeName=k8s-pm-mapper                     headers=${headers}
-    ${json}=                            Set Variable                       ${resp.json()}
-    ${serviceTypeId-Pmmapper}           Set Variable                       ${json['items'][0]['typeId']}
-    ${image}                            Get Regexp Matches                 ${json['items'][0]['blueprintTemplate']}            nexus3(.)*?(?=\')
-    ${image}                            Replace String                     ${image}[0]      nexus3.onap.org:10001                 ${NEXUS3}
-    Set Global Variable                 ${serviceTypeId-Pmmapper}
-    ${deployment_data}=                 Set Variable                       {"inputs":{"client_password": "${GLOBAL_DCAE_PASSWORD}", "tag_version": "${image}"},"serviceTypeId": "${serviceTypeId-Pmmapper}"}
-    ${session}=                         Create Session                     deployment-pmmapper                 ${DEPLOYMENT_SERVER}
-    ${resp}=                            Put Request                        deployment-pmmapper                 /${DEPLOYMENT_ENDPOINT}/pmmapper         data=${deployment_data}     headers=${headers}
-    ${operationLink}                    Set Variable                       ${resp.json().get('links').get('status')}
-    ${operationId}                      Fetch From Right                   ${operationLink}                /
-    Wait Until Keyword Succeeds         6 minute                           10 sec            Deployment Status       ${DEPLOYMENT_SERVER}     ${DEPLOYMENT_ENDPOINT}     pmmapper     ${operationId}
-
-Deploying SFTP Server As xNF
-    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
-    ${blueprint}=                       OperatingSystem.Get File           ${XNF_SFTP_BLUEPRINT_PATH}
-    ${templatejson}=                    Load JSON From File                ${BLUEPRINT_TEMPLATE_PATH}
-    ${templatejson}=                    Update Value To Json               ${templatejson}                            blueprintTemplate             ${blueprint}
-    ${templatejson}=                    Update Value To Json               ${templatejson}                            typeName                      sftpserver
-    ${json_data}                        Convert JSON To String             ${templatejson}
-    ${headers}=                         Create Dictionary                  content-type=application/json
-    ${session}=                         Create Session                     sftp                 ${INVENTORY_SERVER}
-    ${resp}=                            Post Request                       sftp                 ${INVENTORY_ENDPOINT}          data=${json_data}             headers=${headers}
-    ${serviceTypeId-Sftp}=              Set Variable                       ${resp.json().get('typeId')}
-    Set Global Variable                 ${serviceTypeId-Sftp}
-    ${deployment_data}=                 Set Variable                       {"serviceTypeId": "${serviceTypeId-Sftp}" }
-    ${session}=                         Create Session                     deployment-sftpserver                 ${DEPLOYMENT_SERVER}
-    ${resp}=                            Put Request                        deployment-sftpserver                 /${DEPLOYMENT_ENDPOINT}/sftpserver         data=${deployment_data}     headers=${headers}
-    ${operationLink}=                   Set Variable                       ${resp.json().get('links').get('status')}
-    ${operationId}                      Fetch From Right                   ${operationLink}                /
-    Wait Until Keyword Succeeds         2 minute                           5 sec            Deployment Status       ${DEPLOYMENT_SERVER}     ${DEPLOYMENT_ENDPOINT}     sftpserver     ${operationId}
+HTTPS Server based bulk PM test (wrong server certificate - wrong SANs), unsuccessful validation on DFC side due to turned on host checking
+    [Tags]                              5gbulkpm                           5gbulkpm_https
+    [Documentation]
+    ...  This test case triggers unsuccessful bulk pm upload from HTTPS server using CMPv2 Certificate-based authentication
+    ...  HTTPS server has incorrect cert with wrong correct SAN-s. DFC has turned on hostname verification option.
+    ...  DFC verifies HTTPS server host name against SAN-s and closes connection.
+    Change DFC httpsHostnameVerify configuration in Consul   true
+    Uploading PM Files to xNF HTTPS Server      https-server-wrong-sans
+    Sending File Ready Event to VES Collector Over VES Client   https-server-wrong-sans
+    Wait Until Keyword Succeeds         60 sec               5 sec    Check DFC logs  ${DFC_ERROR_GREP_COMMAND_SANS}
 
 
-Checking PERFORMANCE_MEASUREMENTS Topic In Message Router
-    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
-    ${headers}=                         Create Dictionary                  content-type=application/json
-    ${subdata}=                         OperatingSystem.Get File           ${PMMAPPER_SUB_ROLE_DATA}
-    ${session}=                         Create Session                     dmaapbc                          ${DMAAP_BC_SERVER}
-    ${resp}=                            Post Request                       dmaapbc                          ${DMAAP_BC_MR_CLIENT_PATH}      data=${subdata}        headers=${headers}
-    Wait Until Keyword Succeeds         5 minute                           5 sec                            Topic Validate                  success
-    ${resp}=                            Run MR Get Request                 ${MR_TOPIC_CHECK_PATH}
-    Should Be Equal As Strings          ${resp.status_code}                200
-    ${topics}=                          Set Variable                       ${resp.json().get('topics')}
-    List Should Contain Value           ${topics}                          org.onap.dmaap.mr.PERFORMANCE_MEASUREMENTS
-    ${resp}=                            Run MR Auth Get Request            ${MR_TOPIC_URL_PATH}            ${GLOBAL_DCAE_USERNAME}         ${GLOBAL_DCAE_PASSWORD}
-    Should Be Equal As Strings          ${resp.status_code}                200
-
-Uploading PM Files to xNF SFTP Server After Services Deployed
-    [Tags]                              5gbulkpm                           5gbulkpm_checking_sftp_rsa_key
-    ${pm_file}=  Upload PM Files to xNF SFTP Server  ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}  ${BULK_PM_MODE}
-    Set Global Variable  ${PM_FILE}  ${pm_file}
-
-DR Bulk PM Feed Check
-    [Tags]                              5gbulkpm                            5gbulkpm_checking_sftp_rsa_key
-    ${resp}=                            Run DR Get Request                  ${DR_SUB_CHECK_PATH}
-    Should Contain                      ${resp.text}                        bulk_pm_feed
-
-DR PM Mapper Subscriber Check
-    [Tags]                              5gbulkpm                            5gbulkpm_checking_sftp_rsa_key
-    ${resp}=                            Run DR Get Request                  ${DR_SUB_CHECK_PATH}
-    Should Contain                      ${resp.text}                        https://dcae-pm-mapper:8443/delivery
-
-Sending File Ready Event to VES Collector After Services Deployed
-    [Tags]                              5gbulkpm                 5gbulkpm_checking_sftp_rsa_key
-    Send File Ready Event to VES Collector  ${PM_FILE}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
-
-Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic After Services Deployed
-    [Tags]                              5gbulkpm                            5gbulkpm_checking_sftp_rsa_key
-    Wait Until Keyword Succeeds         2 min                            5 sec            xNF PM File Validate   ${BULK_PM_MODE}   ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]}  ${GLOBAL_TEST_VARIABLES["EXPECTED_EVENT_JSON_PATH"]}
+HTTPS Server based bulk PM test (wrong server certificate - wrong SANs), successful validation on DFC side due to turned off host checking
+    [Tags]                              5gbulkpm                           5gbulkpm_https
+    [Documentation]
+    ...  This test case triggers successful bulk pm upload from HTTPS server using CMPv2 Certificate-based authentication
+    ...  HTTPS server has incorrect cert with wrong correct SAN-s. DFC has turned off hostname verification option.
+    ...  DFC does not verify HTTPS server host name against SAN-s and downloads pm file from HTTPS server.
+    Change DFC httpsHostnameVerify configuration in Consul   false
+    Uploading PM Files to xNF HTTPS Server      https-server-wrong-sans
+    Sending File Ready Event to VES Collector Over VES Client   https-server-wrong-sans
+    Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic
 
 
-Setting KNOWN_HOSTS_FILE_PATH Environment Variable
-    [Tags]                             5gbulkpm_checking_sftp_rsa_key
-    ${rc}=                             Run and Return RC                   ${SET_KNOWN_HOSTS_FILE_PATH}
-    Should Be Equal As Integers        ${rc}                               0
-    Wait Until Keyword Succeeds        5 min                               10s               Check Known Hosts In Env             ${CHECK_ENV_SET}
-    ${rc}=                             Run and Return RC                   ${GET_RSA_KEY}
-    Should Be Equal As Integers        ${rc}                               0
-    ${rc}=                             Run and Return RC                   ${COPY_RSA_KEY}
-    Should Be Equal As Integers        ${rc}                               0
-
-Uploading PM Files to xNF SFTP Server After KNOWN_HOSTS_FILE_PATH Env Variable Added
-    [Tags]                              5gbulkpm_checking_sftp_rsa_key
-    ${pm_file}=  Upload PM Files to xNF SFTP Server  ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}  ${BULK_PM_MODE}
-    Set Global Variable  ${PM_FILE}  ${pm_file}
-
-Sending File Ready Event to VES Collector After KNOWN_HOSTS_FILE_PATH Env Variable Added
-    [Tags]                              5gbulkpm_checking_sftp_rsa_key
-    Send File Ready Event to VES Collector  ${PM_FILE}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
-
-Verifying 3GPP Perf VES Content On PERFORMANCE_MEASUREMENTS Topic After KNOWN_HOSTS_FILE_PATH Env Variable Added
-    [Tags]                              5gbulkpm_checking_sftp_rsa_key
-    Wait Until Keyword Succeeds         2 min                            5 sec             xNF PM File Validate   ${BULK_PM_MODE}   ${GLOBAL_TEST_VARIABLES["EXPECTED_PM_STR"]}  ${GLOBAL_TEST_VARIABLES["EXPECTED_EVENT_JSON_PATH"]}
-
-Checking DFC Logs After KNOWN_HOSTS_FILE_PATH Env Variable Added
-    [Tags]                           5gbulkpm_checking_sftp_rsa_key
-    ${dfc_logs}=                     Run Given Command On DFC Container      ${CHECK_DFC_LOGS}
-    Should Not Contain               ${dfc_logs}                             ${EXPECTED_PRINT}
-
-Changing SFTP Server RSA Key
-    [Tags]                            5gbulkpm_checking_sftp_rsa_key
-    ${get_known_hosts_file}=          OperatingSystem.Get File  /tmp/known_hosts
-    ${change_rsa_key}=                Replace String            ${get_known_hosts_file}        A  a
-    Create File                       /tmp/known_hosts          ${change_rsa_key}
-    ${rc}=                            Run and Return RC         ${COPY_RSA_KEY}
-    Should Be Equal As Integers       ${rc}                     0
-
-Uploading PM Files to xNF SFTP Server After SFTP Server RSA Key Changed
-    [Tags]                              5gbulkpm_checking_sftp_rsa_key
-    ${pm_file}=  Upload PM Files to xNF SFTP Server  ${GLOBAL_TEST_VARIABLES["PM_FILE_PATH"]}  ${BULK_PM_MODE}
-    Set Global Variable  ${PM_FILE}  ${pm_file}
-
-Sending File Ready Event to VES Collector After SFTP Server RSA Key Changed
-    [Tags]                              5gbulkpm_checking_sftp_rsa_key
-    Send File Ready Event to VES Collector  ${PM_FILE}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_TYPE"]}  ${GLOBAL_TEST_VARIABLES["FILE_FORMAT_VERSION"]}
-
-Checking DFC Logs After SFTP Server RSA Key Changed
-    [Tags]                              5gbulkpm_checking_sftp_rsa_key
-    Wait Until Keyword Succeeds         5 min  30 sec            Check Given Print In DFC LOG  ${CHECK_DFC_LOGS}
