diff --git a/libraries/voltctl.robot b/libraries/voltctl.robot
old mode 100644
new mode 100755
index 0eae7ef..4a63bf5
--- a/libraries/voltctl.robot
+++ b/libraries/voltctl.robot
@@ -297,6 +297,55 @@
         Validate Device Flows    ${onu_dev_id}    ${flow_count}
     END
 
+Validate ONU Devices With Duration
+    [Documentation]
+    ...    Parses the output of "voltctl device list" and inspects all devices ${List_ONU_Serial},
+    ...    Iteratively match on each Serial number contained in ${List_ONU_Serial} and inspect
+    ...    states including MIB state.
+    [Arguments]    ${admin_state}    ${oper_status}    ${connect_status}    ${onu_reason}
+    ...    ${List_ONU_Serial}   ${startTime}    ${print2console}=False    ${output_file}=${EMPTY}
+    ${rc}    ${output}=    Run and Return Rc and Output    ${VOLTCTL_CONFIG}; voltctl device list -o json
+    Should Be Equal As Integers    ${rc}    0
+    ${timeCurrent} =    Get Current Date
+    ${timeTotalMs} =    Subtract Date From Date    ${timeCurrent}    ${startTime}    result_format=number
+    ${jsondata}=    To Json    ${output}
+    ${length}=    Get Length    ${jsondata}
+    FOR    ${INDEX}    IN RANGE    0    ${length}
+        ${matched}=    Set Variable    False
+        ${value}=    Get From List    ${jsondata}    ${INDEX}
+        ${jsonCamelCaseFieldnames}=    Run Keyword And Return Status
+        ...    Dictionary Should Contain Key       ${value}      adminState
+        ${astate}=    Run Keyword If     ${jsonCamelCaseFieldNames}
+        ...    Get From Dictionary    ${value}    adminState
+        ...    ELSE
+        ...    Get From Dictionary    ${value}    adminstate
+        ${opstatus}=    Run Keyword If     ${jsonCamelCaseFieldNames}
+        ...    Get From Dictionary    ${value}    operStatus
+        ...    ELSE
+        ...    Get From Dictionary    ${value}    operstatus
+        ${cstatus}=    Run Keyword If     ${jsonCamelCaseFieldNames}
+        ...    Get From Dictionary    ${value}    connectStatus
+        ...    ELSE
+        ...    Get From Dictionary    ${value}    connectstatus
+        ${sn}=    Run Keyword If     ${jsonCamelCaseFieldNames}
+        ...    Get From Dictionary    ${value}    serialNumber
+        ...    ELSE
+        ...    Get From Dictionary    ${value}    serialnumber
+        ${mib_state}=    Get From Dictionary    ${value}    reason
+        ${onu_id}=    Get Index From List    ${List_ONU_Serial}   ${sn}
+        ${matched}=    Set Variable If    -1 != ${onu_id}    True    False
+        ${matched}=    Set Variable If    '${astate}' == '${admin_state}'    ${matched}    False
+        ${matched}=    Set Variable If    '${opstatus}' == '${oper_status}'    ${matched}    False
+        ${matched}=    Set Variable If    '${cstatus}' == '${connect_status}'    ${matched}    False
+        ${matched}=    Set Variable If    '${mib_state}' == '${onu_reason}'    ${matched}    False
+        Run Keyword If    ${matched} and ${print2console}    Log
+        ...    \r\nONU ${sn} reached the state ${onu_reason} after ${timeTotalMs} sec.    console=yes
+        Run Keyword If    ${matched} and ('${output_file}'!='${EMPTY}')    Append To File    ${output_file}
+        ...    \r\nONU ${sn} reached the state ${onu_reason} after ${timeTotalMs} sec.
+        Run Keyword If    ${matched}    Remove Values From List    ${List_ONU_Serial}    ${sn}
+    END
+    Should Be Empty    ${List_ONU_Serial}    List ${List_ONU_Serial} not empty
+
 Validate Logical Device
     [Documentation]    Validate Logical Device is listed
     ${rc}    ${output}=    Run and Return Rc and Output    ${VOLTCTL_CONFIG}; voltctl logicaldevice list -o json
diff --git a/tests/openonu-go-adapter/Voltha_ONUStateTests.robot b/tests/openonu-go-adapter/Voltha_ONUStateTests.robot
index e2c4ff4..a42c675 100755
--- a/tests/openonu-go-adapter/Voltha_ONUStateTests.robot
+++ b/tests/openonu-go-adapter/Voltha_ONUStateTests.robot
@@ -42,11 +42,12 @@
 ${state2test}    6
 ${testmode}    SingleState
 ${porttest}    True
+${debugmode}    False
 
 *** Test Cases ***
 ONU State Test
     [Documentation]    Validates the ONU Go adapter states
-    [Tags]    statetest
+    [Tags]    statetest    onutest
     [Setup]    Run Keywords    Start Logging    ONUStateTest
     ...    AND    Setup Test
     Run Keyword If    ${has_dataplane}    Clean Up Linux
@@ -57,10 +58,18 @@
     ...    ELSE IF    "${testmode}"=="Up2State"    Do ONU Up To State Test
     ...    ELSE IF    "${testmode}"=="SingleStateTime"    Do ONU Single State Test Time
     ...    ELSE    Fail    The testmode (${testmode}) is not valid!
-    Run Keyword If    ${porttest}    Do Onu Port Check
     [Teardown]    Run Keywords    Collect Logs
     ...    AND    Stop Logging    ONUStateTest
 
+Onu Port Check
+    [Documentation]    Validates the ONU Go adapter states
+    ...    Assuming that ONU State Test was executed where all the ONUs are reached the expected state.
+    [Tags]    onutest
+    [Setup]    Start Logging    ONUPortTest
+    Run Keyword If    ${porttest}    Do Onu Port Check
+    [Teardown]    Run Keywords    Collect Logs
+    ...    AND    Stop Logging    ONUPortTest
+
 *** Keywords ***
 Setup Suite
     [Documentation]    Set up the test suite
@@ -86,6 +95,7 @@
     [Documentation]    Calculates the timeout regarding num-onus in case of more than 4 onus
     ${timeout}    Fetch From Left    ${timeout}    s
     ${timeout}=    evaluate    ${timeout}+((${num_onus}-4)*30)
+    ${timeout}=    Set Variable If    (not ${debugmode}) and (${timeout}>600)    600    ${timeout}
     ${timeout}=    Catenate    SEPARATOR=    ${timeout}    s
     Set Suite Variable    ${timeout}
     #Log    \r\nTimeout: ${timeout}    INFO    console=True
@@ -163,92 +173,51 @@
     Set Global Variable    ${ListfinishedONUs}
     Create File    ONU_Startup_Time.txt    This file contains the startup times of all ONUs.
     ${list_onus}    Create List
-    FOR    ${I}    IN RANGE    0    ${num_onus}
-        ${src}=    Set Variable    ${hosts.src[${I}]}
-        ${dst}=    Set Variable    ${hosts.dst[${I}]}
-        ${onu}    Evaluate    ${hosts.src}[${I}].get("onu")
-        Append To List    ${list_onus}    ${onu}
-    END
+    Build ONU SN List    ${list_onus}
     Run Keyword If    ${state2test}==1
     ...    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${timeout}    50ms
     ...    Validate ONU Devices With Duration   ENABLED    ACTIVATING    REACHABLE
-    ...    ${list_onus}    onu_reason=activating-onu
+    ...    activating-onu    ${list_onus}    ${timeStart}    print2console=True
+    ...    output_file=ONU_Startup_Time.txt
     ...    ELSE IF    ${state2test}==2
     ...    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${timeout}    50ms
     ...    Validate ONU Devices With Duration    ENABLED    ACTIVATING    REACHABLE
-    ...    ${list_onus}    onu_reason=starting-openomci
+    ...    starting-openomci    ${list_onus}    ${timeStart}    print2console=True
+    ...    output_file=ONU_Startup_Time.txt
     ...    ELSE IF    ${state2test}==3
     ...    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${timeout}    50ms
     ...    Validate ONU Devices With Duration    ENABLED    ACTIVATING    REACHABLE
-    ...    ${list_onus}    onu_reason=discovery-mibsync-complete
+    ...    discovery-mibsync-complete    ${list_onus}    ${timeStart}    print2console=True
+    ...    output_file=ONU_Startup_Time.txt
     ...    ELSE IF    ${state2test}==4
     ...    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${timeout}    50ms
     ...    Validate ONU Devices With Duration    ENABLED    ACTIVE    REACHABLE
-    ...    ${list_onus}    onu_reason=initial-mib-downloaded
+    ...    initial-mib-downloaded    ${list_onus}    ${timeStart}    print2console=True
+    ...    output_file=ONU_Startup_Time.txt
     ...    ELSE IF    ${state2test}==5
     ...    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${timeout}    50ms
     ...    Validate ONU Devices With Duration    ENABLED    ACTIVE    REACHABLE
-    ...    ${list_onus}    onu_reason=tech-profile-config-download-success
+    ...    tech-profile-config-download-success    ${list_onus}    ${timeStart}    print2console=True
+    ...    output_file=ONU_Startup_Time.txt
     ...    ELSE IF    ${state2test}==6
     ...    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${timeout}    50ms
     ...    Validate ONU Devices With Duration    ENABLED    ACTIVE    REACHABLE
-    ...    ${list_onus}    onu_reason=omci-flows-pushed
+    ...    omci-flows-pushed    ${list_onus}    ${timeStart}    print2console=True
+    ...    output_file=ONU_Startup_Time.txt
     ...    ELSE    Fail    The state to test (${state2test}) is not valid!
 
 Do Onu Port Check
     [Documentation]    This keyword performs Onu Port Check
-    ${of_id}=    Wait Until Keyword Succeeds    ${timeout}    15s    Validate OLT Device in ONOS    ${olt_serial_number}
+    ${onu_port_check_timeout}=    Set Variable   120s
+    ${of_id}=    Wait Until Keyword Succeeds    ${onu_port_check_timeout}    15s    Validate OLT Device in ONOS
+    ...    ${olt_serial_number}
     Set Global Variable    ${of_id}
     FOR    ${I}    IN RANGE    0    ${num_onus}
         ${src}=    Set Variable    ${hosts.src[${I}]}
         ${dst}=    Set Variable    ${hosts.dst[${I}]}
         ${onu_device_id}=    Get Device ID From SN    ${src['onu']}
-        ${onu_port}=    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${timeout}    2s
-        ...    Get ONU Port in ONOS    ${src['onu']}    ${of_id}
+        ${onu_port}=    Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${onu_port_check_timeout}
+        ...    2s    Get ONU Port in ONOS    ${src['onu']}    ${of_id}
         Run Keyword And Continue On Failure    Wait Until Keyword Succeeds   120s   2s
         ...    Verify ONU Port Is Enabled   ${ONOS_SSH_IP}    ${ONOS_SSH_PORT}    ${onu_port}
     END
-
-Validate ONU Devices With Duration
-    [Documentation]
-    ...    Parses the output of "voltctl device list" and inspects all devices ${List_ONU_Serial},
-    ...    Iteratively match on each Serial number contained in ${List_ONU_Serial} and inspect
-    ...    states including MIB state.
-    [Arguments]    ${admin_state}    ${oper_status}    ${connect_status}    ${List_ONU_Serial}
-    ...    ${onu_reason}=${EMPTY}
-    ${rc}    ${output}=    Run and Return Rc and Output    ${VOLTCTL_CONFIG}; voltctl device list -o json
-    Should Be Equal As Integers    ${rc}    0
-    ${timeCurrent} =    Get Current Date
-    ${jsondata}=    To Json    ${output}
-    ${length}=    Get Length    ${jsondata}
-    FOR    ${INDEX}    IN RANGE    0    ${length}
-        ${matched}=    Set Variable    False
-        ${value}=    Get From List    ${jsondata}    ${INDEX}
-        ${astate}=    Get From Dictionary    ${value}    adminstate
-        ${opstatus}=    Get From Dictionary    ${value}    operstatus
-        ${cstatus}=    Get From Dictionary    ${value}    connectstatus
-        ${sn}=    Get From Dictionary    ${value}    serialnumber
-        ${mib_state}=    Get From Dictionary    ${value}    reason
-        ${finished_id}=    Get Index From List    ${ListfinishedONUs}   ${sn}
-        ${onu_id}=    Get Index From List    ${List_ONU_Serial}   ${sn}
-        ${matched}=    Set Variable If    -1 == ${finished_id}    True    False
-        ${matched}=    Set Variable If    -1 != ${onu_id}    ${matched}    False
-        ${matched}=    Set Variable If    '${astate}' == '${admin_state}'    ${matched}    False
-        ${matched}=    Set Variable If    '${opstatus}' == '${oper_status}'    ${matched}    False
-        ${matched}=    Set Variable If    '${cstatus}' == '${connect_status}'    ${matched}    False
-        ${matched}=    Set Variable If    '${mib_state}' == '${onu_reason}'    ${matched}    False
-        Run Keyword If    ${matched}    Log And Store Finished ONU    ${sn}    ${timeCurrent}    ${onu_reason}
-        Run Keyword If    ${matched} or -1 != ${finished_id}    Remove Values From List    ${List_ONU_Serial}    ${sn}
-    END
-    Should Be Empty    ${List_ONU_Serial}    List ${List_ONU_Serial} not empty
-
-Log And Store Finished ONU
-    [Documentation]
-    ...    Log and stores the finished ONU
-    [Arguments]    ${onu_sn}    ${finish_time}    ${onu_reason}
-    ${timeTotalMs} =    Subtract Date From Date    ${finish_time}    ${timeStart}    result_format=number
-    Log    \r\nONU ${onu_sn} reached the state ${onu_reason} after ${timeTotalMs} sec.    INFO    console=True
-    Append To File    ONU_Startup_Time.txt
-    ...    \r\nONU ${onu_sn} reached the state ${onu_reason} after ${timeTotalMs} sec.
-    Append To List    ${ListfinishedONUs}    ${onu_sn}
-    Set Global Variable    ${ListfinishedONUs}
