diff --git a/Makefile b/Makefile
index 80c300a..5612ea8 100755
--- a/Makefile
+++ b/Makefile
@@ -148,6 +148,13 @@
 mib-upload-templating-openonu-go-adapter-test: ROBOT_FILE := Voltha_ONUTemplateTests.robot
 mib-upload-templating-openonu-go-adapter-test: openonu-go-adapter-tests
 
+# target to invoke reconcile tests with openonu go adapter at single ONU
+reconcile-openonu-go-adapter-test: ROBOT_MISC_ARGS += -v logging:True -i functionalOnuGo
+reconcile-openonu-go-adapter-test: ROBOT_MISC_ARGS += -e notreadyOnuGo -X $(ROBOT_DEBUG_LOG_OPT)
+reconcile-openonu-go-adapter-test: ROBOT_CONFIG_FILE := $(ROBOT_SANITY_SINGLE_PON_FILE)
+reconcile-openonu-go-adapter-test: ROBOT_FILE := Voltha_ONUReconcileTests.robot
+reconcile-openonu-go-adapter-test: openonu-go-adapter-tests
+
 sanity-single-kind: ROBOT_MISC_ARGS += -i sanity $(ROBOT_DEBUG_LOG_OPT)
 sanity-single-kind: ROBOT_CONFIG_FILE := $(ROBOT_SANITY_SINGLE_PON_FILE)
 sanity-single-kind: bbsim-kind
diff --git a/libraries/onos.robot b/libraries/onos.robot
index a1542a4..6e8f6e4 100755
--- a/libraries/onos.robot
+++ b/libraries/onos.robot
@@ -470,6 +470,14 @@
         ...    Should Be Equal As Integers    ${rc}    0
     END
 
+Assert ONU Port Is Disabled
+    [Arguments]    ${onos_ssh_connection}    ${deviceId}    ${onu_port}
+    [Documentation]    Verifies if the ONU port is disabled in ONOS
+    ${onu_port_disabled}=    Execute ONOS CLI Command on open connection     ${onos_ssh_connection}
+    ...    ports -d ${deviceId} | grep port=${onu_port}
+    Log    ${onu_port_disabled}
+    Should Not Be Empty    ${onu_port_disabled}
+
 Assert Ports in ONOS
     [Arguments]    ${onos_ssh_connection}     ${count}     ${deviceId}    ${filter}
     [Documentation]    Check that a certain number of ports are enabled in ONOS
diff --git a/libraries/Voltha_ONUUtilities.robot b/libraries/onu_utilities.robot
similarity index 78%
rename from libraries/Voltha_ONUUtilities.robot
rename to libraries/onu_utilities.robot
index 1389715..41f598e 100755
--- a/libraries/Voltha_ONUUtilities.robot
+++ b/libraries/onu_utilities.robot
@@ -19,16 +19,35 @@
 ${defaultstackname}    minimal
 
 *** Keywords ***
-Do Power On ONU Device
-    [Documentation]    This keyword power on all onus.
-    ${namespace}=    Set Variable    voltha
+Calculate Timeout
+    [Documentation]    Calculates the timeout regarding num-onus in case of more than 4 onus
+    [Arguments]    ${basetimeout}=60s
+    ${new_timeout}    Fetch From Left    ${basetimeout}    s
+    ${new_timeout}=    evaluate    ${new_timeout}+((${num_all_onus}-4)*10)
+    ${new_timeout}=    Set Variable If    (not ${debugmode}) and (${new_timeout}>300)
+    ...    300   ${new_timeout}
+    ${new_timeout}=    Catenate    SEPARATOR=    ${new_timeout}    s
+    [Return]    ${new_timeout}
+
+Power On ONU Device
+    [Documentation]    This keyword turns on the power for all onus.
+    [Arguments]    ${namespace}
     FOR    ${I}    IN RANGE    0    ${num_all_onus}
         ${src}=    Set Variable    ${hosts.src[${I}]}
         ${result}=    Exec Pod In Kube    ${namespace}    bbsim    bbsimctl onu poweron ${src['onu']}
         Should Contain    ${result}    successfully    msg=Can not poweron ${src['onu']}    values=False
     END
 
-Do Current State Test
+Power Off ONU Device
+    [Documentation]    This keyword turns off the power for all onus.
+    [Arguments]    ${namespace}
+    FOR    ${I}    IN RANGE    0    ${num_all_onus}
+        ${src}=    Set Variable    ${hosts.src[${I}]}
+        ${result}=    Exec Pod In Kube    ${namespace}    bbsim    bbsimctl onu shutdown ${src['onu']}
+        Should Contain    ${result}    successfully    msg=Can not shutdown ${src['onu']}    values=False
+    END
+
+Current State Test
     [Documentation]    This keyword checks the passed state of the given onu.
     [Arguments]    ${state}    ${onu}    ${reqadminstate}=${EMPTY}    ${reqoperstatus}=${EMPTY}
     ...    ${reqconnectstatus}=${EMPTY}
@@ -41,11 +60,12 @@
     ...    Validate Device    ${admin_state}    ${oper_status}    ${connect_status}
     ...    ${onu}    onu=True    onu_reason=${onu_state}
 
-Do Current State Test All Onus
+Current State Test All Onus
     [Documentation]    This keyword checks the passed state of all onus.
     ...                Hint: ${timeStart} will be not evaluated here!
     [Arguments]    ${state}    ${reqadminstate}=${EMPTY}    ${reqoperstatus}=${EMPTY}    ${reqconnectstatus}=${EMPTY}
     ...    ${alternativeonustate}=${EMPTY}
+    ${timeStart}=    Get Current Date
     ${list_onus}    Create List
     Build ONU SN List    ${list_onus}
     ${admin_state}    ${oper_status}    ${connect_status}    ${onu_state_nb}    ${onu_state}=    Map State    ${state}
@@ -58,17 +78,6 @@
     ...    ${admin_state}    ${oper_status}    ${connect_status}
     ...    ${onu_state}    ${list_onus}    ${timeStart}    alternate_reason=${alternativeonustate}
 
-Do Current Reason Test All Onus
-    [Documentation]    This keyword checks the passed state of all onus.
-    ...                Hint: ${timeStart} will be not evaluated here!
-    [Arguments]    ${state}
-    ${list_onus}    Create List
-    Build ONU SN List    ${list_onus}
-    ${admin_state}    ${oper_status}    ${connect_status}    ${onu_state_nb}    ${onu_state}=    Map State    ${state}
-    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${timeout}    50ms
-    ...    Validate ONU Devices MIB State With Duration
-    ...    ${onu_state}    ${list_onus}    ${timeStart}
-
 Log Ports
     [Documentation]    This keyword logs all port data available in ONOS of first port per ONU
     [Arguments]    ${onlyenabled}=False
@@ -86,6 +95,47 @@
     ${rc}    ${output}=    Run and Return Rc and Output    ${cmd}
     Log    ${output}
 
+Kill And Check Onu Adaptor
+    [Documentation]    This keyword kills ONU Adaptor and waits for it to come up again
+    ...    Following steps will be executed:
+    ...    - kill openonu adaptor
+    ...    - check openonu adaptor is ready again
+    [Arguments]    ${namespace}
+    ${list_openonu_apps}   Create List    adapter-open-onu
+    ${adaptorname}=    Set Variable    open-onu
+    Kill Adaptor    ${namespace}    ${adaptorname}
+    Sleep    5s
+    Wait For Pods Ready    ${namespace}    ${list_openonu_apps}
+
+Restart And Check Onu Adaptor
+    [Documentation]    This keyword restarts ONU Adaptor and waits for it to come up again
+    ...    Following steps will be executed:
+    ...    - restart openonu adaptor
+    ...    - check openonu adaptor is ready again
+    [Arguments]    ${namespace}
+    ${list_openonu_apps}   Create List    adapter-open-onu
+    ${adaptorname}=    Set Variable    open-onu
+    Restart Pod    ${namespace}    ${adaptorname}
+    Sleep    5s
+    Wait For Pods Ready    ${namespace}    ${list_openonu_apps}
+
+Disable Onu Device
+    [Documentation]    This keyword disables all onus.
+    FOR    ${I}    IN RANGE    0    ${num_all_onus}
+        ${src}=    Set Variable    ${hosts.src[${I}]}
+        ${onu_device_id}=    Get Device ID From SN    ${src['onu']}
+        Disable Device    ${onu_device_id}
+        Wait Until Keyword Succeeds    20s    2s    Test Devices Disabled in VOLTHA    Id=${onu_device_id}
+    END
+
+Enable Onu Device
+    [Documentation]    This keyword enables all onus.
+    FOR    ${I}    IN RANGE    0    ${num_all_onus}
+        ${src}=    Set Variable    ${hosts.src[${I}]}
+        ${onu_device_id}=    Get Device ID From SN    ${src['onu']}
+        Enable Device    ${onu_device_id}
+    END
+
 Verify MIB Template Data Available
     [Documentation]    This keyword verifies MIB Template Data stored in etcd
     ${namespace}=    Set Variable    default
@@ -108,6 +158,34 @@
     ${result}=    Exec Pod In Kube    ${namespace}    ${podname}    ${commandget}
     Should Be Empty    ${result}    Could not delete MIB Template Data stored in etcd!
 
+Set Tech Profile
+    [Documentation]    This keyword sets the passed TechProfile for the test
+    [Arguments]    ${TechProfile}
+    Log To Console    \nTechProfile:${TechProfile}
+    ${namespace}=    Set Variable    default
+    ${podname}=    Set Variable    etcd
+    ${src}=    Set Variable    ${data_dir}/TechProfile-${TechProfile}.json
+    ${dest}=    Set Variable    /tmp/flexpod.json
+    ${command}    Catenate
+    ...    /bin/sh -c 'cat    ${dest} | ETCDCTL_API=3 etcdctl put service/voltha/technology_profiles/XGS-PON/64'
+    Copy File To Pod    ${namespace}    ${podname}    ${src}    ${dest}
+    Exec Pod In Kube    ${namespace}    ${podname}    ${command}
+    ${commandget}    Catenate
+    ...    /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/voltha/technology_profiles/XGS-PON/64'
+    Exec Pod In Kube    ${namespace}    ${podname}    ${commandget}
+
+Remove Tech Profile
+    [Documentation]    This keyword removes TechProfile
+    Log To Console    \nTechProfile:${TechProfile}
+    ${namespace}=    Set Variable    default
+    ${podname}=    Set Variable    etcd
+    ${command}    Catenate
+    ...    /bin/sh -c 'ETCDCTL_API=3 etcdctl del --prefix service/voltha/technology_profiles/XGS-PON/64'
+    Exec Pod In Kube    ${namespace}    ${podname}    ${command}
+    ${commandget}    Catenate
+    ...    /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/voltha/technology_profiles/XGS-PON/64'
+    Exec Pod In Kube    ${namespace}    ${podname}    ${commandget}
+
 Validate Onu Data In Etcd
     [Documentation]    This keyword validates openonu-go-adapter Data stored in etcd.
     ...                It checks unique of  serial_number and combination of pon, onu and uni in tp_path.
@@ -186,7 +264,7 @@
         ...    ELSE IF    ${oldsetvidvalid} and not ${setvidequal}
         ...               Should Not Be Equal As Integers    ${prevsetvid}    ${setvid}
     END
-    log Many   ${vlan_rules}
+    log Many    ${vlan_rules}
     [Return]    ${vlan_rules}
 
 Get ONU Go Adapter ETCD Data
@@ -279,7 +357,7 @@
     [Return]    ${env_name}
 
 Wait for Ports in ONOS for all OLTs
-    [Documentation]    Waits untill a certain number of ports are enabled in all ONOS
+    [Documentation]    Waits untill a certain number of ports are enabled in all OLTs
     [Arguments]    ${onos_ssh_connection}    ${count}    ${filter}    ${max_wait_time}=10m
     FOR    ${J}    IN RANGE    0    ${num_olts}
         ${olt_serial_number}=    Set Variable    ${list_olts}[${J}][sn]
@@ -290,6 +368,18 @@
         Wait for Ports in ONOS    ${onos_ssh_connection}    ${count}    ${of_id}    BBSM    ${max_wait_time}
     END
 
+Wait for all ONU Ports in ONOS Disabled
+    [Documentation]    Waits untill a all ONU ports are disabled in all ONOS
+    [Arguments]    ${onos_ssh_connection}
+    FOR    ${I}    IN RANGE    0    ${num_all_onus}
+        ${src}=    Set Variable    ${hosts.src[${I}]}
+        ${of_id}=    Wait Until Keyword Succeeds    ${timeout}    15s    Validate OLT Device in ONOS
+        ...    ${src['olt']}
+       ${onu_port}=    Wait Until Keyword Succeeds    ${timeout}    2s    Get ONU Port in ONOS    ${src['onu']}    ${of_id}
+        Wait Until Keyword Succeeds    ${timeout}    2s    Assert ONU Port Is Disabled    ${onos_ssh_connection}    ${of_id}
+        ...    ${onu_port}
+    END
+
 Map State
     [Documentation]    This keyword converts the passed numeric value or name of a onu state to its state values.
     [Arguments]    ${state}
diff --git a/tests/openonu-go-adapter/Voltha_ONUReconcileTests.robot b/tests/openonu-go-adapter/Voltha_ONUReconcileTests.robot
new file mode 100755
index 0000000..cd56983
--- /dev/null
+++ b/tests/openonu-go-adapter/Voltha_ONUReconcileTests.robot
@@ -0,0 +1,343 @@
+# Copyright 2020 - 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 deifferent Reconcile scenarios of ONU Go adapter with ATT workflows only
+...               Test suite is dedicated for only one ONU! Run robot with bbsim-kind.yaml only!
+...               Not for DT/TT workflow!
+...               Hint: default timeout in BBSim to mimic OLT reboot is 60 seconds!
+...               This behaviour of BBSim can be modified by 'oltRebootDelay: 60' in BBSim section of helm chart or
+...               used values.yaml during 'voltha up'.
+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          ../../variables/variables.robot
+
+*** 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}
+# flag for first test, needed due default timeout in BBSim to mimic OLT reboot of 60 seconds
+${firsttest}    True
+# flag debugmode is used, if true timeout calculation various, can be passed via the command line too
+# example: -v debugmode:True
+${debugmode}    False
+# logging flag to enable Collect Logs, can be passed via the command line too
+# example: -v logging:True
+${logging}    False
+# if True execution will be paused before clean up, only use in case of manual testing, do not use in ci pipeline!
+# example: -v pausebeforecleanup:True
+${pausebeforecleanup}    False
+# if True some outputs to console are done during running tests e.g. long duration flow test
+# example: -v print2console:True
+${print2console}    False
+# if True (hard) kill will be used to restart onu adapter, else (soft) restart mechanism of k8s will be used
+# example: -v usekill2restart:True
+${usekill2restart}    False
+${data_dir}    ../data
+
+
+*** Test Cases ***
+Reconcile In Starting-OpenOmci
+    [Documentation]    Validates the Reconcile in Starting-OpenOmci
+    ...    Reconcile test during “starting-openomci” in AT&T-workflow:
+    ...    - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
+    ...    -- wait for device reason “starting-openomci”
+    ...    - kill the open-onu-adapter-go
+    ...    -- wait for open-onu-adapter-go to restart
+    ...    -- wait for device reason “omci-flows-pushed”
+    ...    --- check for default EAPOL-flow and enabled UNI-port in ONOS
+    ...    - delete ONU and MIB-template in KV-store
+    [Tags]    functionalOnuGo    ReconcileStartingOpenOmciOnuGo
+    [Setup]    Run Keywords    Start Logging    ReconcileStartingOpenOmciOnuGo
+    ...    AND    Setup Test
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+    Run Keyword If    '${num_all_onus}'=='1'
+    ...    Do Reconcile In Determined State    starting-openomci
+    ...    ELSE    Pass Execution    ${skip_message}    skipped
+    [Teardown]    Run Keywords    Run Keyword If    ${logging}    Collect Logs
+    ...    AND    Teardown Test
+    ...    AND    Stop Logging    ReconcileStartingOpenOmciOnuGo
+
+Reconcile In Initial-Mib-Downloaded
+    [Documentation]    Validates the Reconcile in initial-mib-downloaded
+    ...    Reconcile test during “initial-mib-downloaded” in AT&T-workflow:
+    ...    - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
+    ...    -- wait for device reason “initial-mib-downloaded”
+    ...    - kill the open-onu-adapter-go
+    ...    -- wait for open-onu-adapter-go to restart
+    ...    -- wait for device reason “omci-flows-pushed”
+    ...    --- check for default EAPOL-flow and enabled UNI-port in ONOS
+    ...    - delete ONU and MIB-template in KV-store
+    [Tags]    functionalOnuGo    ReconcileInitialMibDownloadedOnuGo
+    [Setup]    Run Keywords    Start Logging    ReconcileInitialMibDownloadedOnuGo
+    ...    AND    Setup Test
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+    Run Keyword If    '${num_all_onus}'=='1'
+    ...    Do Reconcile In Determined State    initial-mib-downloaded
+    ...    ELSE    Pass Execution    ${skip_message}    skipped
+    [Teardown]    Run Keywords    Run Keyword If    ${logging}    Collect Logs
+    ...    AND    Teardown Test
+    ...    AND    Stop Logging    ReconcileInitialMibDownloadedOnuGo
+
+Reconcile In Omci-Flows-Pushed
+    [Documentation]    Validates the Reconcile in omci-flows-pushed
+    ...    Former testcase: Reconcile Onu Device in Testsuite Voltha_ONUStateTest.robot
+    ...    Reconcile test during “omci-flows-pushed” in AT&T-workflow:
+    ...    - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
+    ...    -- wait for device reason “omci-flows-pushed”
+    ...    - kill the open-onu-adapter-go
+    ...    -- wait for open-onu-adapter-go to restart
+    ...    -- wait for device reason “omci-flows-pushed”
+    ...    - disable onu device
+    ...    -- wait for device reason “tech-profile-config-delete-success”
+    ...    -- check UNI-ports disabled in ONOS
+    ...    - enable onu device
+    ...    -- wait for device reason “omci-flows-pushed”
+    ...    --- check for default EAPOL-flow and enabled UNI-port in ONOS
+    ...    - delete ONU and MIB-template in KV-store
+    [Tags]    functionalOnuGo    ReconcileOmciFlowsPushedOnuGo
+    [Setup]    Run Keywords    Start Logging    ReconcileOmciFlowsPushedOnuGo
+    ...    AND    Setup Test
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+    Run Keyword If    '${num_all_onus}'=='1'
+    ...    Do Reconcile In Omci-Flows-Pushed
+    ...    ELSE    Pass Execution    ${skip_message}    skipped
+    [Teardown]    Run Keywords    Run Keyword If    ${logging}    Collect Logs
+    ...    AND    Teardown Test
+    ...    AND    Stop Logging    ReconcileOmciFlowsPushedOnuGo
+
+Reconcile For Disabled Onu Device
+    [Documentation]    Validates the Reconcile for disabled Onu device
+    ...    Reconcile test for disabled Onu device in AT&T-workflow:
+    ...    - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
+    ...    -- wait for device reason “omci-flows-pushed”
+    ...    - disable onu device
+    ...    -- wait for device reason “tech-profile-config-delete-success”
+    ...    -- check UNI-ports disabled in ONOS
+   ...    - kill the open-onu-adapter-go
+    ...    -- wait for open-onu-adapter-go to restart
+    ...    -- check device reason is still “tech-profile-config-delete-success”
+    ...    - enable onu device
+    ...    -- wait for device reason “onu-reenabled”
+    ...    --- check for default EAPOL-flow and enabled UNI-port in ONOS
+    ...    - delete ONU and MIB-template in KV-store
+    [Tags]    functionalOnuGo    ReconcileDisabledOnuDeviceOnuGo
+    [Setup]    Run Keywords    Start Logging    ReconcileDisabledOnuDeviceOnuGo
+    ...    AND    Setup Test
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+    Run Keyword If    '${num_all_onus}'=='1'
+    ...    Do Reconcile For Disabled Onu Device
+    ...    ELSE    Pass Execution    ${skip_message}    skipped
+    [Teardown]    Run Keywords    Run Keyword If    ${logging}    Collect Logs
+    ...    AND    Teardown Test
+    ...    AND    Stop Logging    ReconcileDisabledOnuDeviceOnuGo
+
+*** Keywords ***
+Setup Suite
+    [Documentation]    Set up the test suite
+    ${LogInfo}=    Catenate
+    ...    \r\nPassed arguments:
+    ...    debugmode:${debugmode}, logging:${logging}, pausebeforecleanup:${pausebeforecleanup},
+    ...    print2console:${print2console}
+    Log    ${LogInfo}    console=yes
+    Common Test Suite Setup
+    # prepare skip message in yellow for console log
+    ${skip}=  Evaluate  "\\033[33mSKIP\\033[0m"
+    ${skipped}=  Evaluate  "\\033[33m${SPACE*14} ===> Test case above was skipped! <=== ${SPACE*15}\\033[0m"
+    ${skip_message}    Catenate    ${skipped} | ${skip} |
+    Set Suite Variable    ${skip_message}
+    ${onos_ssh_connection}    Open ONOS SSH Connection    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}
+    Set Suite Variable  ${onos_ssh_connection}
+    # delete etcd MIB Template Data
+    Delete MIB Template Data
+
+Teardown Suite
+    [Documentation]    Replaces the Suite Teardown in utils.robot.
+    ...    Cleans up and checks all ONU ports disabled in ONOS.
+    ...    Furthermore gives the possibility to pause the execution.
+    Run Keyword If    ${pausebeforecleanup}    Import Library    Dialogs
+    Run Keyword If    ${pausebeforecleanup}    Pause Execution    Press OK to continue with clean up!
+    Run Keyword If    ${pausebeforecleanup}    Log    Teardown will be continued...    console=yes
+    Run Keyword If    ${teardown_device}    Delete All Devices and Verify
+    Run Keyword If    ${usekill2restart}    Restart Pod    ${namespace}    open-onu
+    Validate Onu Data In Etcd    0
+    Wait for Ports in ONOS for all OLTs      ${onos_ssh_connection}  0   BBSM    ${timeout}
+    Close All ONOS SSH Connections
+
+Setup Test
+    [Documentation]    Pre-test Setup
+    #test for empty device list
+    Test Empty Device List
+    Run Keyword If    ${has_dataplane}    Wait Until Keyword Succeeds    120s    10s    Openolt is Up
+    ...    ${olt_ssh_ip}    ${olt_user}    ${olt_pass}
+    Run Keyword If    ${has_dataplane}    Sleep    60s
+    #restart open-onu pod to reset crash loop back off mechansim of kubenetes
+    Run Keyword If    "${firsttest}"=="False" and "${usekill2restart}"=="True"    Restart Pod    ${namespace}    open-onu
+    Run Keyword If    "${firsttest}"=="False"    Sleep    35s
+    ${firsttest}    Set Variable    False
+    Set Suite Variable    ${firsttest}
+    # Create a list of olt ids (logical and device_id)
+    ${olt_ids}    Create List
+    FOR    ${I}    IN RANGE    0    ${num_olts}
+        #create/preprovision device
+        ${olt_device_id}=    Create Device    ${list_olts}[${I}][ip]    ${OLT_PORT}
+        ${olt_serial_number}=    Set Variable    ${list_olts}[${I}][sn]
+        #validate olt states
+        Wait Until Keyword Succeeds    ${timeout}    5s
+        ...    Validate OLT Device    PREPROVISIONED    UNKNOWN    UNKNOWN    ${olt_device_id}
+        Sleep    5s
+        ${logical_id}=    Get Logical Device ID From SN    ${olt_serial_number}
+        ${olt}    Create Dictionary    device_id    ${olt_device_id}    logical_id    ${logical_id}
+        ...    of_id    ${of_id}    sn    ${olt_serial_number}
+        Append To List    ${olt_ids}    ${olt}
+    END
+    Set Global Variable    ${olt_ids}
+
+Teardown Test
+    [Documentation]    Post-test Teardown
+    Run Keyword If    ${teardown_device}    Delete All Devices and Verify
+    # delete etcd MIB Template Data
+    Delete MIB Template Data
+    Sleep    5s
+
+Do Reconcile In Determined State
+    [Documentation]    This keyword reconciles ONU device when passed reason is reached and
+    ...    check the state afterwards.
+    ...    Following steps will be executed:
+    ...    - enable OLT device
+    ...    - wait for passed openonu reason
+    ...    - restart openonu adaptor
+    ...    - check openonu adaptor is ready again
+    ...    - wait for openonu reason 'omci-flows-pushed'
+    ...    - check default (eapol) flow
+    ...    - port check
+    [Arguments]    ${expected_onu_reason}
+    FOR    ${I}    IN RANGE    0    ${num_olts}
+        #get olt serial number
+        ${olt_serial_number}=    Set Variable    ${list_olts}[${I}][sn]
+        #validate olt states
+        ${olt_device_id}=    Get OLTDeviceID From OLT List    ${olt_serial_number}
+        Enable Device    ${olt_device_id}
+    END
+    Current State Test All Onus    ${expected_onu_reason}
+    Run Keyword If    ${usekill2restart}    Kill And Check Onu Adaptor    ${namespace}
+    ...    ELSE    Restart And Check Onu Adaptor    ${namespace}
+    Current State Test All Onus    omci-flows-pushed
+    Wait for Ports in ONOS for all OLTs    ${onos_ssh_connection}    ${num_all_onus}    BBSM    ${timeout}
+    Wait Until Keyword Succeeds    ${timeout}    2s    Verify Eapol Flows Added    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}
+    ...    ${num_all_onus}
+    ${flowsresult}=    Execute ONOS CLI Command    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}    flows -s
+    log     ${flowsresult}
+
+Do Reconcile For Disabled Onu Device
+    [Documentation]    This keyword reconciles ONU device for a disabled onu device and
+    ...    check the state afterwards.
+    ...    Following steps will be executed:
+    ...    - enable OLT device
+    ...    - wait for openonu reason 'omci-flows-pushed'
+    ...    - disable onu device
+    ...    - wait for openonu reason 'tech-profile-config-delete-success'
+    ...    - check UNI-ports disabled in ONOS
+    ...    - restart openonu adaptor
+    ...    - check openonu adaptor is ready again
+    ...    - check device reason is still 'tech-profile-config-delete-success'
+    ...    - enable onu device
+    ...    - wait for openonu reason 'onu-reenabled'
+    ...    - check default (eapol) flow
+    ...    - port check
+    FOR    ${I}    IN RANGE    0    ${num_olts}
+        #get olt serial number
+        ${olt_serial_number}=    Set Variable    ${list_olts}[${I}][sn]
+        #validate olt states
+        ${olt_device_id}=    Get OLTDeviceID From OLT List    ${olt_serial_number}
+        Enable Device    ${olt_device_id}
+    END
+    Current State Test All Onus    omci-flows-pushed
+    Disable Onu Device
+    Current State Test All Onus    tech-profile-config-delete-success
+    Run Keyword If    ${usekill2restart}    Kill And Check Onu Adaptor    ${namespace}
+    ...    ELSE    Restart And Check Onu Adaptor    ${namespace}
+    Current State Test All Onus    tech-profile-config-delete-success
+    Wait for all ONU Ports in ONOS Disabled    ${onos_ssh_connection}
+    Enable Onu Device
+    Current State Test All Onus    onu-reenabled    alternativeonustate=omci-flows-pushed
+    Wait for Ports in ONOS for all OLTs    ${onos_ssh_connection}    ${num_all_onus}    BBSM    ${timeout}
+    Wait Until Keyword Succeeds    ${timeout}    2s    Verify Eapol Flows Added    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}
+    ...    ${num_all_onus}
+    ${flowsresult}=    Execute ONOS CLI Command    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}    flows -s
+    log     ${flowsresult}
+
+Do Reconcile In Omci-Flows-Pushed
+    [Documentation]    This keyword reconciles ONU device in omci-flows-pushed and check the state afterwards.
+    ...    Reconcile test during “omci-flows-pushed” in AT&T-workflow:
+    ...    - create and enable one BBSIM-ONU (no MIB-template should be available in KV-store)
+    ...    -- wait for device reason “omci-flows-pushed”
+    ...    - kill the open-onu-adapter-go
+    ...    -- wait for open-onu-adapter-go to restart
+    ...    -- wait for device reason “omci-flows-pushed”
+    ...    - disable onu device
+    ...    -- wait for device reason “tech-profile-config-delete-success”
+    ...    -- check UNI-ports disabled in ONOS
+    ...    - enable onu device
+    ...    -- wait for device reason “omci-flows-pushed”
+    ...    --- check for default EAPOL-flow and enabled UNI-port in ONOS
+    ...    - delete ONU and MIB-template in KV-store
+    FOR    ${I}    IN RANGE    0    ${num_olts}
+        #get olt serial number
+        ${olt_serial_number}=    Set Variable    ${list_olts}[${I}][sn]
+        #validate olt states
+        ${olt_device_id}=    Get OLTDeviceID From OLT List    ${olt_serial_number}
+        Enable Device    ${olt_device_id}
+    END
+    Current State Test All Onus    omci-flows-pushed
+    Run Keyword If    ${usekill2restart}    Kill And Check Onu Adaptor    ${namespace}
+    ...    ELSE    Restart And Check Onu Adaptor    ${namespace}
+    Current State Test All Onus    omci-flows-pushed
+    Wait for Ports in ONOS for all OLTs    ${onos_ssh_connection}    ${num_all_onus}    BBSM    ${timeout}
+    Wait Until Keyword Succeeds    ${timeout}    2s    Verify Eapol Flows Added    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}
+    ...    ${num_all_onus}
+    ${flowsresult}=    Execute ONOS CLI Command    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}    flows -s
+    log     ${flowsresult}
+    Disable Onu Device
+    Current State Test All Onus    tech-profile-config-delete-success
+    Wait for all ONU Ports in ONOS Disabled    ${onos_ssh_connection}
+    # Wait for Ports in ONOS for all OLTs    ${onos_ssh_connection}    0    BBSM    ${timeout}
+    Enable Onu Device
+    Current State Test All Onus    omci-flows-pushed
+    Wait for Ports in ONOS for all OLTs    ${onos_ssh_connection}    ${num_all_onus}    BBSM    ${timeout}
+    Wait Until Keyword Succeeds    ${timeout}    2s    Verify Eapol Flows Added    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}
+    ...    ${num_all_onus}
+    ${flowsresult}=    Execute ONOS CLI Command    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}    flows -s
+    log     ${flowsresult}
diff --git a/tests/openonu-go-adapter/Voltha_ONUStateTests.robot b/tests/openonu-go-adapter/Voltha_ONUStateTests.robot
index f943b4c..a46ae97 100755
--- a/tests/openonu-go-adapter/Voltha_ONUStateTests.robot
+++ b/tests/openonu-go-adapter/Voltha_ONUStateTests.robot
@@ -29,10 +29,11 @@
 Resource          ../../libraries/voltha.robot
 Resource          ../../libraries/utils.robot
 Resource          ../../libraries/k8s.robot
+Resource          ../../libraries/onu_utilities.robot
 Resource          ../../variables/variables.robot
-Resource          ../../libraries/Voltha_ONUUtilities.robot
 
 *** Variables ***
+${namespace}      voltha
 ${timeout}        60s
 ${of_id}          0
 ${logical_id}     0
@@ -151,17 +152,6 @@
     [Teardown]    Run Keywords    Run Keyword If    ${logging}    Collect Logs
     ...    AND    Stop Logging    DisableEnableONUDevice
 
-Reconcile Onu Device
-    [Documentation]    Reconciles ONU Device and check state
-    ...    Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
-    [Tags]    functionalOnuGo    ReconcileOnuGo
-    [Setup]    Start Logging    ReconcileONUDevice
-    Run Keyword If    '${onu_state}'=='tech-profile-config-download-success' or '${onu_state}'=='omci-flows-pushed'
-    ...    Do Reconcile Onu Device
-    ...    ELSE    Pass Execution    ${skip_message}    skipped
-    [Teardown]    Run Keywords    Run Keyword If    ${logging}    Collect Logs
-    ...    AND    Stop Logging    ReconcileONUDevice
-
 Power Off Power On Onu Device
     [Documentation]    Power off and Power on of all ONU Devices and check state
     ...    Assuming that ONU State Test was executed where all the ONUs are reached the expected state!
@@ -199,8 +189,9 @@
     ${skipped}=  Evaluate  "\\033[33m${SPACE*14} ===> Test case above was skipped! <=== ${SPACE*15}\\033[0m"
     ${skip_message}    Catenate    ${skipped} | ${skip} |
     Set Suite Variable    ${skip_message}
-    Set Suite Variable    ${all_onu_timeout}    ${timeout}
-    Run Keyword If   ${num_all_onus}>4    Calculate Timeout
+    ${all_onu_timeout}=    Run Keyword If   ${num_all_onus}>4    Calculate Timeout   ${timeout}
+    ...    ELSE    Set Variable    ${timeout}
+    Set Suite Variable    ${all_onu_timeout}
     ${techprofile}=    Set Variable If    "${techprofile}"=="1T1GEM"    default    ${techprofile}
     Set Suite Variable    ${techprofile}
     Run Keyword If    "${techprofile}"=="default"   Log To Console    \nTechProfile:default (1T1GEM)
@@ -229,12 +220,8 @@
     Run Keyword If    ${pausebeforecleanup}    Log    Teardown will be continued...    console=yes
     Run Keyword If    ${teardown_device}    Delete All Devices and Verify
     Validate Onu Data In Etcd    0
-    # Re-open ssh connection to onos since no keep alive is implemented in  SSH library
-    Close ONOS SSH Connection   ${onos_ssh_connection}
-    ${onos_ssh_connection}    Open ONOS SSH Connection    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}
-    Set Suite Variable  ${onos_ssh_connection}
     Wait for Ports in ONOS for all OLTs      ${onos_ssh_connection}  0   BBSM    ${timeout}
-    Close ONOS SSH Connection   ${onos_ssh_connection}
+    Close All ONOS SSH Connections
     Remove Tech Profile
 
 Setup Test
@@ -261,15 +248,6 @@
     END
     Set Global Variable    ${olt_ids}
 
-Calculate Timeout
-    [Documentation]    Calculates the timeout regarding num-onus in case of more than 4 onus
-    ${all_onu_timeout}    Fetch From Left    ${all_onu_timeout}    s
-    ${all_onu_timeout}=    evaluate    ${all_onu_timeout}+((${num_all_onus}-4)*10)
-    ${all_onu_timeout}=    Set Variable If    (not ${debugmode}) and (${all_onu_timeout}>300)
-    ...    300   ${all_onu_timeout}
-    ${all_onu_timeout}=    Catenate    SEPARATOR=    ${all_onu_timeout}    s
-    Set Suite Variable    ${all_onu_timeout}
-
 Do ONU Up To State Test
     [Documentation]    This keyword performs Up2State Test
     ...    All states up to the passed have to be checked
@@ -365,7 +343,7 @@
     log     ${flowsresult}
     #check  for previous state is kept (normally omci-flows-pushed)
     Sleep    10s
-    Run Keyword And Continue On Failure    Do Current State Test All Onus    ${state2test}
+    Run Keyword And Continue On Failure    Current State Test All Onus    ${state2test}
     ${secondvlanrules}=    Run Keyword And Continue On Failure    Validate Vlan Rules In Etcd    nbofcookieslice=3
     ...    prevvlanrules=${firstvlanrules}
     FOR    ${J}    IN RANGE    0    ${num_olts}
@@ -383,14 +361,10 @@
     #check  for previous state is kept (normally omci-flows-pushed)
     Sleep    10s
     Run Keyword If    ${print2console}    Log    \r\nStart State Test All Onus.    console=yes
-    Run Keyword And Continue On Failure    Do Current State Test All Onus    ${state2test}
+    Run Keyword And Continue On Failure    Current State Test All Onus    ${state2test}
     Run Keyword If    ${print2console}    Log    \r\nFinished State Test All Onus.    console=yes
     Run Keyword And Continue On Failure    Validate Vlan Rules In Etcd    prevvlanrules=${firstvlanrules}
     ...                                    setvidequal=True
-    # Re-open ssh connection to onos since no keep alive is implemented in  SSH library
-    Close ONOS SSH Connection   ${onos_ssh_connection}
-    ${onos_ssh_connection}    Open ONOS SSH Connection    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}
-    Set Suite Variable  ${onos_ssh_connection}
 
 Do Onu Subscriber Add Per OLT
     [Documentation]    Add Subscriber per OLT
@@ -443,34 +417,6 @@
         ...    console=yes
     END
 
-Set Tech Profile
-    [Documentation]    This keyword set the passed TechProfile for the test
-    [Arguments]    ${TechProfile}
-    Log To Console    \nTechProfile:${TechProfile}
-    ${namespace}=    Set Variable    default
-    ${podname}=    Set Variable    etcd
-    ${src}=    Set Variable    ${data_dir}/TechProfile-${TechProfile}.json
-    ${dest}=    Set Variable    /tmp/flexpod.json
-    ${command}    Catenate
-    ...    /bin/sh -c 'cat    ${dest} | ETCDCTL_API=3 etcdctl put service/voltha/technology_profiles/XGS-PON/64'
-    Copy File To Pod    ${namespace}    ${podname}    ${src}    ${dest}
-    Exec Pod In Kube    ${namespace}    ${podname}    ${command}
-    ${commandget}    Catenate
-    ...    /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/voltha/technology_profiles/XGS-PON/64'
-    Exec Pod In Kube    ${namespace}    ${podname}    ${commandget}
-
-Remove Tech Profile
-    [Documentation]    This keyword removes TechProfile
-    Log To Console    \nTechProfile:${TechProfile}
-    ${namespace}=    Set Variable    default
-    ${podname}=    Set Variable    etcd
-    ${command}    Catenate
-    ...    /bin/sh -c 'ETCDCTL_API=3 etcdctl del --prefix service/voltha/technology_profiles/XGS-PON/64'
-    Exec Pod In Kube    ${namespace}    ${podname}    ${command}
-    ${commandget}    Catenate
-    ...    /bin/sh -c 'ETCDCTL_API=3 etcdctl get --prefix service/voltha/technology_profiles/XGS-PON/64'
-    Exec Pod In Kube    ${namespace}    ${podname}    ${commandget}
-
 Do Check Tech Profile
     [Documentation]    This keyword checks the loaded TechProfile
     ${namespace}=    Set Variable    default
@@ -495,91 +441,41 @@
     [Documentation]    This keyword disables/enables all onus and checks the states.
     [Arguments]    ${state2check}=${state2test}    ${checkstatebeforedisable}=True
     ...    ${state2checkafterdisable}=tech-profile-config-delete-success
-    Run Keyword If    ${checkstatebeforedisable}    Do Current State Test All Onus    ${state2check}
-    Do Disable Onu Device
+    Run Keyword If    ${checkstatebeforedisable}    Current State Test All Onus    ${state2check}
+    Disable Onu Device
     ${alternative_onu_reason}=    Set Variable If
     ...    '${state2checkafterdisable}'=='tech-profile-config-delete-success'    omci-flows-deleted
     ...    '${state2checkafterdisable}'=='omci-admin-lock'    tech-profile-config-delete-success    ${EMPTY}
-    Do Current State Test All Onus    ${state2checkafterdisable}    alternativeonustate=${alternative_onu_reason}
+    Current State Test All Onus    ${state2checkafterdisable}    alternativeonustate=${alternative_onu_reason}
     Log Ports
     #check no port is enabled in ONOS
     Wait for Ports in ONOS for all OLTs    ${onos_ssh_connection}    0    BBSM
-    Do Enable Onu Device
-    Do Current State Test All Onus    ${state2check}
+    Enable Onu Device
+    Current State Test All Onus    ${state2check}
     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
 
-Do Reconcile Onu Device
-    [Documentation]    This keyword reconciles ONU device and check the state afterwards.
-    ...    Following steps will be executed:
-    ...    - restart openonu adaptor
-    ...    - check openonu adaptor is ready again
-    ...    - check previous state is kept
-    ...    - ONU-Disable
-    ...    - wait some seconds
-    ...    - check for state omci-admin-lock
-    ...    - ONU-Enable
-    ...    - wait some seconds
-    ...    - check for state onu-reenabled
-    ...    - port check
-    ${list_openonu_apps}   Create List    adapter-open-onu
-    ${namespace}=    Set Variable    voltha
-    ${adaptorname}=    Set Variable    open-onu
-    Kill Adaptor    ${namespace}    ${adaptorname}
-    Sleep    5s
-    Wait For Pods Ready    ${namespace}    ${list_openonu_apps}
-    Do Disable Enable Onu Test
-    Do Onu Port Check
-
 Do Power Off Power On Onu Device
     [Documentation]    This keyword power off/on all onus and checks the states.
-    Do Power Off ONU Device
+    Power Off ONU Device    ${namespace}
     Sleep    5s
-    #Do Current State Test All Onus    stopping-openomci
-    Do Current State Test All Onus    tech-profile-config-delete-success
+    Current State Test All Onus    tech-profile-config-delete-success
     ...    ENABLED    DISCOVERED    UNREACHABLE    alternativeonustate=omci-flows-deleted
-    Do Power On ONU Device
-    Do Current State Test All Onus    ${state2test}
+    Power On ONU Device    ${namespace}
+    Current State Test All Onus    ${state2test}
 
 Do Soft Reboot Onu Device
     [Documentation]    This keyword reboots softly all onus and checks the states.
-    ${namespace}=    Set Variable    voltha
     FOR    ${I}    IN RANGE    0    ${num_all_onus}
         ${src}=    Set Variable    ${hosts.src[${I}]}
         ${onu_device_id}=    Get Device ID From SN    ${src['onu']}
         Reboot ONU    ${onu_device_id}   False
     END
-    Run Keyword Unless    ${has_dataplane}    Do Current State Test All Onus    tech-profile-config-delete-success
+    Run Keyword Unless    ${has_dataplane}    Current State Test All Onus    tech-profile-config-delete-success
     ...   ENABLED    DISCOVERED    REACHABLE    alternativeonustate=omci-flows-deleted
     Sleep    5s
     Run Keyword Unless    ${has_dataplane}    Do Disable Enable Onu Test    checkstatebeforedisable=False
     ...    state2checkafterdisable=omci-admin-lock
-    Run Keyword If    ${has_dataplane}    Do Current State Test All Onus    omci-flows-pushed
+    Run Keyword If    ${has_dataplane}    Current State Test All Onus    omci-flows-pushed
     Do Onu Port Check
-
-Do Disable Onu Device
-    [Documentation]    This keyword disables all onus.
-    FOR    ${I}    IN RANGE    0    ${num_all_onus}
-        ${src}=    Set Variable    ${hosts.src[${I}]}
-        ${onu_device_id}=    Get Device ID From SN    ${src['onu']}
-        Disable Device    ${onu_device_id}
-        Wait Until Keyword Succeeds    20s    2s    Test Devices Disabled in VOLTHA    Id=${onu_device_id}
-    END
-
-Do Enable Onu Device
-    [Documentation]    This keyword enables all onus.
-    FOR    ${I}    IN RANGE    0    ${num_all_onus}
-        ${src}=    Set Variable    ${hosts.src[${I}]}
-        ${onu_device_id}=    Get Device ID From SN    ${src['onu']}
-        Enable Device    ${onu_device_id}
-    END
-
-Do Power Off ONU Device
-    [Documentation]    This keyword power off all onus.
-    ${namespace}=    Set Variable    voltha
-    FOR    ${I}    IN RANGE    0    ${num_all_onus}
-        ${src}=    Set Variable    ${hosts.src[${I}]}
-        ${result}=    Exec Pod In Kube    ${namespace}    bbsim    bbsimctl onu shutdown ${src['onu']}
-        Should Contain    ${result}    successfully    msg=Can not shutdown ${src['onu']}    values=False
-    END
diff --git a/tests/openonu-go-adapter/Voltha_ONUTemplateTests.robot b/tests/openonu-go-adapter/Voltha_ONUTemplateTests.robot
index b106b35..1f3645a 100755
--- a/tests/openonu-go-adapter/Voltha_ONUTemplateTests.robot
+++ b/tests/openonu-go-adapter/Voltha_ONUTemplateTests.robot
@@ -31,11 +31,11 @@
 Resource          ../../libraries/voltha.robot
 Resource          ../../libraries/utils.robot
 Resource          ../../libraries/k8s.robot
+Resource          ../../libraries/onu_utilities.robot
 Resource          ../../variables/variables.robot
-Resource          ../../libraries/Voltha_ONUUtilities.robot
 
 *** Variables ***
-${NAMESPACE}      voltha
+${namespace}      voltha
 ${timeout}        60s
 ${of_id}          0
 ${logical_id}     0
@@ -101,14 +101,10 @@
     Run Keyword If    ${pausebeforecleanup}    Pause Execution    Press OK to continue with clean up!
     Run Keyword If    ${pausebeforecleanup}    Log    Teardown will be continued...    console=yes
     Run Keyword If    ${teardown_device}    Delete All Devices and Verify
-    # Re-open ssh connection to onos since no keep alive is implemented in  SSH library
-    Close ONOS SSH Connection   ${onos_ssh_connection}
-    ${onos_ssh_connection}    Open ONOS SSH Connection    ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}
-    Set Suite Variable  ${onos_ssh_connection}
     Wait for Ports in ONOS for all OLTs      ${onos_ssh_connection}  0   BBSM
     # delete etcd MIB Template Data (for repeating test)
     Delete MIB Template Data
-    Close ONOS SSH Connection   ${onos_ssh_connection}
+    Close All ONOS SSH Connections
 
 Perform ONU MIB Template Data Test
     [Documentation]    This keyword performs ONU MIB Template Data Test
@@ -120,7 +116,7 @@
     # Start first Onu
     ${src}=    Set Variable    ${hosts.src[${0}]}
     Log    \r\nONU ${src['onu']}: startup with MIB upload cycle and storage of template data to etcd.    console=yes
-    ${result}=    Exec Pod In Kube    ${NAMESPACE}    bbsim    bbsimctl onu poweron ${src['onu']}
+    ${result}=    Exec Pod In Kube    ${namespace}    bbsim    bbsimctl onu poweron ${src['onu']}
     Should Contain    ${result}    successfully    msg=Can not poweron ${src['onu']}    values=False
     ${timeStart}=    Get Current Date
     ${firstonustartup}=    Get ONU Startup Duration    ${firstonu}    ${timeStart}
@@ -130,7 +126,7 @@
     # Start second Onu
     ${src}=    Set Variable    ${hosts.src[${1}]}
     Log    ONU ${src['onu']}: startup without MIB upload cycle by using of template data of etcd.    console=yes
-    ${result}=    Exec Pod In Kube    ${NAMESPACE}    bbsim    bbsimctl onu poweron ${src['onu']}
+    ${result}=    Exec Pod In Kube    ${namespace}    bbsim    bbsimctl onu poweron ${src['onu']}
     Should Contain    ${result}    successfully    msg=Can not poweron ${src['onu']}    values=False
     ${timeStart}=    Get Current Date
     ${secondonustartup}=    Get ONU Startup Duration    ${secondonu}    ${timeStart}
