diff --git a/tests/data/pm-data.yaml b/tests/data/pm-data.yaml
new file mode 100755
index 0000000..2203531
--- /dev/null
+++ b/tests/data/pm-data.yaml
@@ -0,0 +1,72 @@
+---
+
+# Copyright 2021-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Automated deployment configuration for kind-voltha running BBSim
+
+# Pm user validation and precondition data for validation of received
+# pm-data elements from open-onu-go-adapter.
+# This file contains special validation data, which differs from default
+# validation data.
+# Following operators are valid: in, range, ==, !=, <, <=, >, >=
+# In case of operator is 'in' or 'range' second value has to be a list (array)
+
+pm_user_validation_data:
+  UNI_Status:
+    me_class_id:
+      firstoperator: in
+      firstvalue:
+        - 11
+        - 264
+        - 329
+      successoroperator: ==
+      successorvalue: previous
+    oper_status:
+      firstoperator: range
+      firstvalue:
+        - 0
+        - 1
+      successoroperator: range
+      successorvalue:
+        - 0
+        - 1
+    uni_admin_state:
+      firstoperator: range
+      firstvalue:
+        - 0
+        - 1
+      successoroperator: range
+      successorvalue:
+        - 0
+        - 1
+    sensed_type:
+      firstoperator: range
+      firstvalue:
+        - 0
+        - 255
+      successoroperator: ==
+      successorvalue: previous
+pm_user_precondition_data:
+  UNI_Status:
+    sensed_type:
+      operator: ==
+      value: 11
+      precondelement: me_class_id
+    oper_status:
+      operator: in
+      value:
+        - 11
+        - 329
+      precondelement: me_class_id
diff --git a/tests/pm-data/Voltha_ONUPMTests.robot b/tests/pm-data/Voltha_ONUPMTests.robot
new file mode 100755
index 0000000..1623557
--- /dev/null
+++ b/tests/pm-data/Voltha_ONUPMTests.robot
@@ -0,0 +1,215 @@
+# Copyright 2021 - present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+Documentation     Test of open ONU go adapter PM data
+...               in case of kafka pod runs in k8s cluster - kafka has to deploy with following EXTRA_HELM_FLAGS
+...               --set externalAccess.enabled=true,
+...               --set externalAccess.service.type=NodePort,
+...               --set externalAccess.service.nodePorts[0]=${KAFKA_PORT},
+...               --set externalAccess.service.domain=${KAFKA_IP}
+...               with e.g. service.domain=10.0.02.15 or 127.0.0.1 and service.nodePorts[0]=30201!
+Suite Setup       Setup Suite
+Suite Teardown    Teardown Suite
+Test Setup        Setup
+Test Teardown     Teardown
+Library           Collections
+Library           String
+Library           OperatingSystem
+Library           XML
+Library           RequestsLibrary
+Library           ../../libraries/DependencyLibrary.py
+Resource          ../../libraries/onos.robot
+Resource          ../../libraries/voltctl.robot
+Resource          ../../libraries/voltha.robot
+Resource          ../../libraries/utils.robot
+Resource          ../../libraries/k8s.robot
+Resource          ../../libraries/onu_utilities.robot
+Resource          ../../libraries/bbsim.robot
+Resource          ../../libraries/pm_utilities.robot
+Resource          ../../variables/variables.robot
+
+Library           kafka_robot.KafkaClient    log_level=DEBUG    WITH NAME    kafka
+Library           grpc_robot.VolthaTools     WITH NAME    volthatools
+
+
+*** Variables ***
+${namespace}      voltha
+${timeout}        60s
+${of_id}          0
+${logical_id}     0
+${has_dataplane}    True
+${external_libs}    True
+${teardown_device}    True
+${scripts}        ../../scripts
+# Per-test logging on failure is turned off by default; set this variable to enable
+${container_log_dir}    ${None}
+
+# logging flag to enable Collect Logs, can be passed via the command line too
+# example: -v logging:True
+${logging}    False
+# determines the environment workflow: DT, TT or ATT (default)
+# example: -v workflow:DT
+${workflow}    ATT
+# when voltha is running in k8s port forwarding is needed
+# example: -v PORT_FORWARDING:False
+${PORT_FORWARDING}    True
+# kafka ip e.g. ip of master host where k8s is running
+# example: -v KAFKA_IP:10.0.2.15
+${KAFKA_IP}    127.0.0.1
+# kafka port: port of kafka nodeport
+# example: -v KAFKA_PORT:30201
+${KAFKA_PORT}    30201
+# kafka service port: service port of kafka nodeport
+# example: -v KAFKA_SVC_PORT:9094
+${KAFKA_SVC_PORT}    9094
+# onu pm data default interval
+# example: -v ONU_DEFAULT_INTERVAL:50s
+${ONU_DEFAULT_INTERVAL}    300s
+# onu pm data group PON_Optical interval
+# example: -v ONU_PON_OPTICAL_INTERVAL:50s
+${ONU_PON_OPTICAL_INTERVAL}    35s
+# onu pm data group UNI_Status interval
+# example: -v ONU_UNI_STATUS_INTERVAL:50s
+${ONU_UNI_STATUS_INTERVAL}    20s
+
+*** Test Cases ***
+Check Default Metrics All ONUs
+    [Documentation]    Validates the ONU Go adapter pm date resp. Metrics with dafault values
+    [Tags]    functional    CheckDefaultMetricsAllOnus
+    [Setup]   Start Logging    CheckDefaultMetricsAllOnus
+    ${collect_interval}=    Determine Collection Interval
+    Collect and Validate PM Data    ${collect_interval}
+    [Teardown]    Run Keywords    Clean Metric Dictionary
+    ...    AND    Run Keyword If    ${logging}    Collect Logs
+    ...    AND    Stop Logging    CheckDefaultMetricsAllOnus
+
+Check User Onu Metrics
+    [Documentation]    Validates the ONU Go adapter pm date resp. Metrics with user values
+    ...                Currently only the intvals of metric groups UNI_Status and PON_Optical will be set to user values.
+    [Tags]    functional    CheckUserOnuMetrics
+    [Setup]   Start Logging    CheckUserOnuMetrics
+    # set user values for intervals
+    Set Group Interval All Onu    UNI_Status    ${ONU_UNI_STATUS_INTERVAL}
+    Set Group Interval All Onu    PON_Optical   ${ONU_PON_OPTICAL_INTERVAL}
+    ${collect_interval}=    Determine Collection Interval    user=True
+    # activate user interval values
+    Activate And Validate Interval All Onu    user=True
+    Collect and Validate PM Data    ${collect_interval}    user=True
+    # (re-)activate default interval values
+    Set Group Interval All Onu    UNI_Status    -1
+    Set Group Interval All Onu    PON_Optical   -1
+    Activate And Validate Interval All Onu
+    [Teardown]    Run Keywords    Clean Metric Dictionary
+    ...    AND    Run Keyword If    ${logging}    Collect Logs
+    ...    AND    Stop Logging    CheckUserOnuMetrics
+
+Check User Onu Metrics Disabled Device
+    [Documentation]    Validates the ONU Go adapter pm date resp. Metrics with user values for disabled device
+    ...                Currently only the intvals of metric groups UNI_Status will be set to user values and validated.
+    ...                First enable status will be validated, then all devices will be disabled and status will be validated.
+    [Tags]    functional    CheckUserOnuMetricsDisabledDevice
+    [Setup]   Start Logging    CheckUserOnuMetricsDisabledDevice
+    # set user values for intervals
+    Set Group Interval All Onu    UNI_Status    ${ONU_UNI_STATUS_INTERVAL}
+    ${collect_interval}=    Determine Collection Interval    user=True
+    # activate user interval values
+    Activate And Validate Interval All Onu    user=True
+    # read and store currents validation data
+    ${group}=    Set Variable    UNI_Status
+    ${oper_state}=    Set Variable    oper_status
+    ${admin_state}=   Set Variable    uni_admin_state
+    ${prev_validation_data_oper_state}=     Get Validation Operation All Onu   ${group}    ${oper_state}
+    ${prev_validation_data_admin_state}=    Get Validation Operation All Onu   ${group}    ${admin_state}
+    # change the validation data for oper_status and uni_admin_state of metric group UNI_Status
+    ${enable}=        Set Variable    0
+    ${disable}=       Set Variable    1
+    ${enabled_check}=    Create Dictionary    operator=${eq}    operand=${enable}
+    ${disabled_check}=   Create Dictionary    operator=${eq}    operand=${disable}
+    ${ValidationEnabled}=    Create Dictionary    first=${enabled_check}    successor=${enabled_check}
+    ${ValidationDisabled}=   Create Dictionary    first=${disabled_check}   successor=${disabled_check}
+    # validate enabled status
+    Set Validation Operation All Onu    ${group}    ${oper_state}    ${ValidationEnabled}
+    Set Validation Operation All Onu    ${group}    ${admin_state}   ${ValidationEnabled}
+    Collect and Validate PM Data    ${collect_interval}    user=True
+    Clean Metric Dictionary
+    # validate disabled status
+    Set Validation Operation All Onu    ${group}    ${oper_state}    ${ValidationDisabled}
+    Set Validation Operation All Onu    ${group}    ${admin_state}   ${ValidationDisabled}
+    # disable (all) onu devices
+    Disable Onu Device
+    ${alternativeonustates}=  Create List     omci-flows-deleted    tech-profile-config-delete-success
+    Current State Test All Onus    omci-admin-lock    alternativeonustate=${alternativeonustates}
+    Log Ports
+    #check no port is enabled in ONOS
+    Wait for Ports in ONOS for all OLTs    ${onos_ssh_connection}    0    BBSM
+    Collect and Validate PM Data    ${collect_interval}    user=True
+    Clean Metric Dictionary
+    # enable (all) onu devices
+    Enable Onu Device
+    ${alternativeonustates}=  Create List     onu-reenabled
+    Current State Test All Onus    omci-flows-pushed    alternativeonustate=${alternativeonustates}
+    Log Ports    onlyenabled=True
+    #check that all the UNI ports show up in ONOS again
+    Wait for Ports in ONOS for all OLTs    ${onos_ssh_connection}    ${num_all_onus}    BBSM    determine_number=True
+    # validate enabled status (again)
+    Set Validation Operation All Onu    ${group}    ${oper_state}    ${ValidationEnabled}
+    Set Validation Operation All Onu    ${group}    ${admin_state}   ${ValidationEnabled}
+    Collect and Validate PM Data    ${collect_interval}    user=True
+    # (re-)set previous validation data
+    Set Validation Operation Passed Onu   ${group}    ${oper_state}     ${prev_validation_data_oper_state}
+    Set Validation Operation Passed Onu   ${group}    ${admin_state}    ${prev_validation_data_admin_state}
+    # (re-)activate default interval values
+    Set Group Interval All Onu    UNI_Status    -1
+    Activate And Validate Interval All Onu
+    [Teardown]    Run Keywords    Clean Metric Dictionary
+    ...    AND    Run Keyword If    ${logging}    Collect Logs
+    ...    AND    Stop Logging    CheckUserOnuMetricsDisabledDevice
+
+
+*** Keywords ***
+Setup Suite
+    [Documentation]    Set up the test suite
+    Common Test Suite Setup
+    ${onos_ssh_connection}    Open ONOS SSH Connection    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}
+    Set Suite Variable  ${onos_ssh_connection}
+    ${switch_type}=    Get Variable Value    ${web_power_switch.type}
+    Run Keyword If  "${switch_type}"!=""    Set Global Variable    ${powerswitch_type}    ${switch_type}
+    # start port forwarding if needed (when voltha runs in k8s)
+    ${portFwdHandle} =    Run Keyword If    ${PORT_FORWARDING}    Start Process
+    ...    kubectl port-forward --address 0.0.0.0 --namespace default svc/kafka-0-external ${KAFKA_PORT}:${KAFKA_SVC_PORT} &
+    ...    shell=true
+    Set Suite Variable   ${portFwdHandle}
+    Sleep    5s
+    # open connection to read kafka bus
+    Wait Until Keyword Succeeds     3x    5s
+    ...    kafka.Connection Open    ${KAFKA_IP}    ${KAFKA_PORT}    voltha.events    timestamp_from=0
+    # enable OLT(s) and bring up ONU(s)
+    Setup
+    Run Keyword If    "${workflow}"=="DT"    Perform Sanity Test DT
+    ...    ELSE IF    "${workflow}"=="TT"    Perform Sanity Tests TT
+    ...    ELSE       Perform Sanity Test
+    # prepare pm data matrix for validation
+    ${METRIC_DICT}=     Create Metric Dictionary
+    Set Suite Variable    ${METRIC_DICT}
+
+Teardown Suite
+    [Documentation]    tear down the test suite
+    # close connection to kafka
+    kafka.Connection Close
+    # stop port forwarding if started
+    Run Keyword If    ${PORT_FORWARDING}    Terminate Process    ${portFwdHandle}    kill=true
+    # call common suite teardown
+    utils.Teardown Suite
+    Close All ONOS SSH Connections
