diff --git a/tests/dt-workflow/Voltha_DT_FailureScenarios_VGC.robot b/tests/dt-workflow/Voltha_DT_FailureScenarios_VGC.robot
index 025cc1a..1cdb4d3 100644
--- a/tests/dt-workflow/Voltha_DT_FailureScenarios_VGC.robot
+++ b/tests/dt-workflow/Voltha_DT_FailureScenarios_VGC.robot
@@ -89,6 +89,11 @@
     ${countAfterRestart}=    Run    kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
     Should Be Equal As Strings    ${countAfterRestart}    ${countBeforeRestart}
     Log to console    Pod ${podName} restarted and sanity checks passed successfully
+    # "Once the onu adapter is restarted, it takes a bit of time for the OLT's/ONUs to reconcile, if the OLT is deleted 
+    # before the ONUs are reconiled successfully there would be stale entries. This scenario is not handled in VOLTHA as 
+    # of now. And there is no other to check if the reconcile has happened for all the ONUs. Due to this limitations a
+    # sleep of 60s is introduced to give enough time for onu adapter to reconcile the ONUs."
+    Sleep   60s
     Run Keyword If    '${SOAK_TEST}'=='False'    Delete All Devices and Verify
 
 Verify restart openolt-adapter container after subscriber provisioning for DT
@@ -117,6 +122,11 @@
     Log    ${podStatusOutput}
     ${countAfterRestart}=    Run    kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
     Should Be Equal As Strings    ${countAfterRestart}    ${countBforRestart}
+    # "Once the olt adapter is restarted, it takes a bit of time for the OLT's/ONUs to reconcile, if try to delete OLT
+    # before the OLT's are reconiled successfully there would be recocile error. This scenario is not handled in VOLTHA as
+    # of now. And there is no other to check if the reconcile has happened for all the OLTs. Due to this limitations a
+    # sleep of 60s is introduced to give enough time for OLT adapter to reconcile the OLTs."
+    Sleep   60s
     Log to console    Pod ${podName} restarted and sanity checks passed successfully
 
 Verify openolt adapter restart before subscriber provisioning for DT
@@ -139,7 +149,7 @@
         ${onu_device_id}=    Get Device ID From SN    ${src['onu']}
         Wait Until Keyword Succeeds    ${timeout}    5s
         ...    Validate Device        ENABLED    ACTIVE    REACHABLE
-        ...    ${onu_device_id}    onu=True    onu_reason=initial-mib-downloaded    by_dev_id=True
+        ...    ${onu_device_id}    onu=True    onu_reason=omci-flows-pushed    by_dev_id=True
     END
     # Scale down the open OLT adapter deployment to 0 PODs and once confirmed, scale it back to 1
     Scale K8s Deployment by Pod Label    ${NAMESPACE}    app    ${OLT_ADAPTER_APP_LABEL}    0
@@ -185,6 +195,11 @@
         ...    ${src['ip']}    ${src['user']}    ${src['pass']}    ${src['container_type']}    ${src['container_name']}
         ...    ${dst['dp_iface_name']}    ${dst['ip']}    ${dst['user']}    ${dst['pass']}    ${dst['container_type']}
         ...    ${dst['container_name']}
+    # "Once the olt adapter is restarted, it takes a bit of time for the OLT's/ONUs to reconcile, if try to delete OLT
+    # before the OLT's are reconiled successfully there would be recocile error. This scenario is not handled in VOLTHA as
+    # of now. And there is no other to check if the reconcile has happened for all the OLTs. Due to this limitations a
+    # sleep of 60s is introduced to give enough time for OLT adapter to reconcile the OLTs."
+    Sleep   60s
     END
 
 Sanity E2E Test for OLT/ONU on POD With Core Fail and Restart for DT
@@ -216,7 +231,7 @@
         ${onu_device_id}=    Get Device ID From SN    ${src['onu']}
         # Bring up the device and verify it authenticates
         Wait Until Keyword Succeeds    360s    5s    Validate Device    ENABLED    ACTIVE    REACHABLE
-        ...    ${onu_device_id}    onu=True    onu_reason=initial-mib-downloaded    by_dev_id=True
+        ...    ${onu_device_id}    onu=True    onu_reason=omci-flows-pushed    by_dev_id=True
     END
 
     # Scale down the rw-core deployment to 0 PODs and once confirmed, scale it back to 1
@@ -224,13 +239,13 @@
     Wait Until Keyword Succeeds    ${timeout}    2s    Pod Does Not Exist    voltha    voltha-voltha-rw-core
     # Ensure the ofagent POD goes "not-ready" as expected
     Wait Until keyword Succeeds    ${timeout}    2s
-    ...    Check Expected Available Deployment Replicas    voltha    voltha-voltha-ofagent    0
+    ...    Check Expected Available Deployment Replicas    voltha    voltha-voltha-go-controller    1
     # Scale up the core deployment and make sure both it and the ofagent deployment are back
     Scale K8s Deployment    voltha    voltha-voltha-rw-core    1
     Wait Until Keyword Succeeds    ${timeout}    2s
     ...    Check Expected Available Deployment Replicas    voltha    voltha-voltha-rw-core    1
     Wait Until Keyword Succeeds    ${timeout}    2s
-    ...    Check Expected Available Deployment Replicas    voltha    voltha-voltha-ofagent    1
+    ...    Check Expected Available Deployment Replicas    voltha    voltha-voltha-go-controller    1
     # For some reason scaling down and up the POD behind a service causes the port forward to stop working,
     # so restart the port forwarding for the API service
     Restart VOLTHA Port Forward    voltha-api
@@ -364,6 +379,11 @@
         Run Keyword If    ${has_dataplane}    Check Ping Result    True    ${ping_output}
     END
     # Verify Control Plane Functionality by Deleting and Re-adding the Subscriber
+    # "Once the onu adapter is restarted, it takes a bit of time for the OLT's/ONUs to reconcile, if the OLT is deleted
+    # before the ONUs are reconiled successfully there would be stale entries. This scenario is not handled in VOLTHA as
+    # of now. And there is no other to check if the reconcile has happened for all the ONUs. Due to this limitations a
+    # sleep of 60s is introduced to give enough time for onu adapter to reconcile the ONUs."
+    Sleep   60s
     Verify Control Plane After Pod Restart DT
 
 Verify restart openolt-adapter container for DT
@@ -420,6 +440,11 @@
         Run Keyword If    ${has_dataplane}    Check Ping Result    True    ${ping_output}
     END
     # Verify Control Plane Functionality by Deleting and Re-adding the Subscriber
+    # "Once the olt adapter is restarted, it takes a bit of time for the OLT's/ONUs to reconcile, if try to delete OLT
+    # before the OLT's are reconiled successfully there would be recocile error. This scenario is not handled in VOLTHA as
+    # of now. And there is no other to check if the reconcile has happened for all the OLTs. Due to this limitations a
+    # sleep of 60s is introduced to give enough time for OLT adapter to reconcile the OLTs."
+    Sleep   60s
     Verify Control Plane After Pod Restart DT
 
 Verify restart rw-core container for DT
@@ -479,6 +504,11 @@
         Run Keyword If    ${has_dataplane}    Check Ping Result    True    ${ping_output}
     END
     # Verify Control Plane Functionality by Deleting and Re-adding the Subscriber
+    # "Once the rw core is restarted, it takes a bit of time for the OLT's/ONUs to reconcile, if try to delete OLT
+    # before the OLT's are reconiled successfully there would be recocile error. This scenario is not handled in VOLTHA as
+    # of now. And there is no other to check if the reconcile has happened for all the OLTs. Due to this limitations a
+    # sleep of 60s is introduced to give enough time for rw core to reconcile the OLTs."
+    Sleep   60s
     Verify Control Plane After Pod Restart DT
 
 *** Keywords ***
diff --git a/tests/dt-workflow/Voltha_DT_PODTests_VGC.robot b/tests/dt-workflow/Voltha_DT_PODTests_VGC.robot
index 9923717..fd70309 100755
--- a/tests/dt-workflow/Voltha_DT_PODTests_VGC.robot
+++ b/tests/dt-workflow/Voltha_DT_PODTests_VGC.robot
@@ -261,63 +261,6 @@
     Run Keyword If    ${has_dataplane}    Clean Up Linux
     Perform Sanity Test DT
 
-Test Disable and Enable OLT for DT
-    [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
-    ...    Assuming that all the ONUs are DHCP/pingable (i.e. assuming sanityDt test was executed)
-    ...    Perform disable on the OLT and validate that the pings do not succeed
-    ...    Perform enable on the OLT and validate that the pings are successful
-    [Tags]    functionalDt    DisableEnableOLTDt   soak
-    [Setup]    Start Logging    DisableEnableOLTDt
-    [Teardown]    Run Keywords    Run Keyword If    ${logging}    Collect Logs
-    ...           AND             Stop Logging    DisableEnableOLTDt
-    # Disable and Validate OLT Device
-    FOR   ${I}    IN RANGE    0    ${olt_count}
-        ${olt_serial_number}=    Get From Dictionary    ${olt_ids}[${I}]    sn
-        ${olt_device_id}=    Get OLTDeviceID From OLT List    ${olt_serial_number}
-        ${rc}    ${output}=    Run and Return Rc and Output
-        ...    voltctl -c ${VOLTCTL_CONFIG} device disable ${olt_device_id}
-        Should Be Equal As Integers    ${rc}    0
-        Wait Until Keyword Succeeds    ${timeout}    5s    Validate OLT Device    DISABLED    UNKNOWN    REACHABLE
-        ...    ${olt_serial_number}
-    END
-    # Validate ONUs
-    FOR    ${I}    IN RANGE    0    ${num_all_onus}
-        ${src}=    Set Variable    ${hosts.src[${I}]}
-        ${dst}=    Set Variable    ${hosts.dst[${I}]}
-        ${of_id}=    Get ofID From OLT List    ${src['olt']}
-        ${onu_port}=    Wait Until Keyword Succeeds    ${timeout}    2s
-        ...    Get ONU Port in VGC    ${src['onu']}    ${of_id}    ${src['uni_id']}
-        ${onu_device_id}=    Get Device ID From SN    ${src['onu']}
-        Wait Until Keyword Succeeds   ${timeout}    2s
-        ...    Verify UNI Port Is Disabled   ${VGC_SSH_IP}    ${VGC_SSH_PORT}    ${src['onu']}    ${src['uni_id']}
-        Run Keyword If    ${has_dataplane}    Run Keyword And Continue On Failure
-        ...    Wait Until Keyword Succeeds    ${timeout}    2s
-        ...    Check Ping    False    ${dst['dp_iface_ip_qinq']}    ${src['dp_iface_name']}
-        ...    ${src['ip']}    ${src['user']}    ${src['pass']}    ${src['container_type']}    ${src['container_name']}
-        # Remove Subscriber Access (To replicate DT workflow)
-        ${onu_port_name}=    Catenate    SEPARATOR=-    ${src['onu']}    ${src['uni_id']}
-	Wait Until Keyword Succeeds    ${timeout}    2s
-        ...    Delete Request    VGC    services/${onu_port_name}
-        # Delete ONU Device (To replicate DT workflow)
-        Delete Device    ${onu_device_id}
-    END
-    Sleep    5s
-    # Enable the OLT back and check ONU, OLT status are back to "ACTIVE"
-    FOR   ${I}    IN RANGE    0    ${olt_count}
-        ${olt_serial_number}=    Get From Dictionary    ${olt_ids}[${I}]    sn
-        ${olt_device_id}=    Get OLTDeviceID From OLT List    ${olt_serial_number}
-        Enable Device    ${olt_device_id}
-        Wait Until Keyword Succeeds    ${timeout}    5s    Validate OLT Device    ENABLED    ACTIVE    REACHABLE
-        ...    ${olt_serial_number}
-        #TODO: Update for PON_OLT ETHERNET_NNI
-        #Wait Until Keyword Succeeds    ${timeout}    5s    Validate OLT Port Types
-        #...    PON_OLT    ETHERNET_NNI
-    END
-    # Waiting extra time for the ONUs to come up
-    Sleep    60s
-    Run Keyword If    ${has_dataplane}    Clean Up Linux
-    Perform Sanity Test DT
-
 Test Delete and ReAdd OLT for DT
     [Documentation]    Validates E2E Ping Connectivity and object states for the given scenario:
     ...    Assuming that all the ONUs are DHCP/pingable (i.e. assuming sanityDt test was executed)
